Телеграмм бот на Java. Часть 3
Доброго времени суток уважаемые подписчики, а также не менее уважаемые участники портала Голос!
Продолжаю эпопею с написанием телеграмм бота на Java.
В прошлый раз я установил библиотеку для работы с биржей Bittrex и попытался получить внятный результат запроса данных с нее. Как оказалось я ошибся и на выходе библиотека выдает не JSON объект, а List, содержащий Hashmap <String, String>. Почему я сразу это не углядел - загадка, ну или же просто моя невнимательность :) Библиотека содержит в себе методы по обработке всех api запросов для Bittrex. И нам остается только воспользоваться ими. Я немного изменил свой код в классе Main и теперь мой бот обрабатывает 2 команды:
- /balances - выводит список баланса моих кошельков в виде пары: Токен, Сумма. Если баланс адреса равен 0, то он не выводится.
- /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 "*****************************";
}
}
В следующий раз планирую разобраться с графическим меню, чтобы не вводить команды вручную, а нажимать кнопочки :) Ну и конечно же поделюсь своими успехами (надеюсь :)) с вами. Понимаю, что в этот раз пост получился коротким, но вот собственно что успел, то успел :)
Всем спасибо за внимание, и не забывайте подписываться на мой блог!