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

in #programming8 years ago

 Доброго времени суток уважаемые подписчики, а также не менее уважаемые участники портала Голос!Продолжаю эпопею с написанием телеграмм бота на 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 "*****************************";

           }

       }

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

Coin Marketplace

STEEM 0.12
TRX 0.34
JST 0.033
BTC 122040.12
ETH 4499.62
BNB 1308.35
SBD 0.79