Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
kovatelj
7 лет назад

Телеграмм бот на Java. Часть 3

Доброго времени суток уважаемые подписчики, а также не менее уважаемые участники портала Голос!

Продолжаю эпопею с написанием телеграмм бота на Java. 

Ссылка на 1 часть.

Ссылка на 2 часть.

В прошлый раз я установил библиотеку для работы с биржей Bittrex и попытался получить внятный результат запроса данных с нее. Как оказалось я ошибся и на выходе библиотека выдает не JSON объект, а List, содержащий Hashmap <String, String>. Почему я сразу это не углядел - загадка, ну или же просто моя невнимательность :) Библиотека содержит в себе методы по обработке всех api запросов для Bittrex. И нам остается только воспользоваться ими. Я немного изменил свой код в классе Main и теперь мой бот обрабатывает 2 команды:

  1. /balances - выводит список баланса моих кошельков в виде пары: Токен, Сумма. Если баланс адреса равен 0, то он не выводится.
  2. /orders - выводит список открытых ордеров, также в виде пары: Токен, Сумма ордера.

Понятное дело, что список команд будет расширен, сейчас я просто пробую работать с библиотекой, также пересмотрю формат вывода информации. Ну и конечно же сделаю вывод сообщений о сработавшем ордере. Ну а теперь как всегда исходник моего класса Main

/**

* Created by Kovatelj on 06.07.2017.

*/



import org.telegram.telegrambots.api.methods.send.SendMessage;

import org.telegram.telegrambots.api.objects.Update;

import org.telegram.telegrambots.bots.TelegramLongPollingBot;

import org.telegram.telegrambots.exceptions.TelegramApiException;



import java.util.Date;

import java.util.HashMap;

import java.util.List;



public class telegramBot extends TelegramLongPollingBot {





   @Override

   public void onUpdateReceived(Update update) {

       // We check if the update has a message and the message has text

       if (update.hasMessage() && update.getMessage().hasText()) {

           // Set variables

           Bittrex wrapper = new Bittrex();

           wrapper.setAuthKeysFromTextFile("keys.txt");

           String message_send;

           Date currentDate = new Date();

           String message_text = update.getMessage().getText();

           long chat_id = update.getMessage().getChatId();

           



           switch (message_text) {

               case "/balances":

                   String otherRawResponse = wrapper.getBalances();

                   List<HashMap<String, String>> allBalancesMapList = Bittrex.getMapsFromResponse(otherRawResponse);

                   for (int i = 0; i < allBalancesMapList.size(); i++) {

                       if (!allBalancesMapList.get(i).get("Balance").equals("0.00000000")) {

                           message_send = allBalancesMapList.get(i).get("Currency") + " " + allBalancesMapList.get(i).get("Balance");

                           SendMessage message = new SendMessage().setChatId(chat_id).setText(message_send);

                           try {

                               sendMessage(message); // Sending our message object to user

                           } catch (TelegramApiException e) {

                               e.printStackTrace();

                           }

                       }

                   }

                   break;

               case "/orders":

                   String responseOrder = wrapper.getOpenOrders();

                   List<HashMap<String, String>> allOrderMapList = Bittrex.getMapsFromResponse(responseOrder);

                   for (int i = 0; i < allOrderMapList.size(); i++) {

                       message_send = allOrderMapList.get(i).get("Exchange") + " " + allOrderMapList.get(i).get("Quantity");

                       SendMessage message = new SendMessage().setChatId(chat_id).setText(message_send);

                       try {

                           sendMessage(message); // Sending our message object to user

                       } catch (TelegramApiException e) {

                           e.printStackTrace();

                       }

                   }

                   break;

           }



       }

   }

           @Override

           public String getBotUsername () {

               return "KoBaTeJIb_bot";

           }



           @Override

           public String getBotToken () {

               return "*****************************";

           }

       }

В следующий раз планирую разобраться с графическим меню, чтобы не вводить команды вручную, а нажимать кнопочки :) Ну и конечно же поделюсь своими успехами (надеюсь :)) с вами. Понимаю, что в этот раз пост получился коротким, но вот собственно что успел, то успел :) 

Всем спасибо за внимание, и не забывайте подписываться на мой блог!

29
7.597 GOLOS
На Golos с October 2016
Комментарии (5)
Сортировать по:
Сначала старые