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

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

Здравствуйте уважаемые подписчики и, просто проходившие мимо и заглянувшие на огонек, участники платформы Голос!

Сегодня я поделюсь своими мытарствами в плане написания бота для Телеграм. Как вы знаете я еще только учусь программированию на Java и мои посты - это не уроки, а всего лишь отражение моих мыслей при написании приложений. Честно говоря сам не до конца понял что сейчас написал, ну да ладно :) Итак, мысль о написании бота для своих нужд посещала меня уже неоднократно. Я упорно гуглил уроки по этой теме, но поиск выдавал только похожие темы для других языков программирования, а в частности это Pythom, JavaScript и PHP. Если и находил, то лишь уже готовый исходник, который был не очень хорошо комментирован. 

И вот наконец я нашел серию неплохих вроде бы уроков по написанию простого бота на Java. Она правда на английском, но даже я смог для себя уловить основные моменты. Для написания бота используется библиотека telegrambots-3.1.0. Так как у меня нет сервера со статическим IP - адресом, то мой бот будет обращаться к серверам Телеграм с помощью Long Polling. В уроке нам предлагается написать так называемого эхо-бота, который отсылает нам наши же сообщения. Если вы уже интересовались данной темой, то знаете что все боты в Телеграм необходимо зарегистрировать у @BotFather. После регистрации он нам выдаст Токен бота, который мы должны будем использовать в запросах к Телеграм.

Не вижу смысла копипастить сюда исходник бота из урока. Я вам покажу только то что получилось у меня, когда я внес свои изменения в код. Мой бот по команде /time выдает мне в чат текущее время, все остальные сообщения он отсылает в пересылает обратно. В ближайшее время в планах привязать к нему показ курса выбранных пар с криптовалютной биржи, а также показ открытых и выполненных ордеров. Я мельком посмотрел как это делается и увидел что это все те же api запросы с последующим разбором JSON  - ответов. Ну и наконец исходник бота :)

/**
* 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;

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
           Date currentDate = new Date();
           String message_text = update.getMessage().getText();
           long chat_id = update.getMessage().getChatId();

           if (message_text.equals("/time")) {
               String messageSend = currentDate.toString();

               SendMessage message = new SendMessage().setChatId(chat_id).setText(messageSend);
               try {
                   sendMessage(message); // Sending our message object to user
               } catch (TelegramApiException e) {
                   e.printStackTrace();
               }
           } else {
               String messageSend = message_text;

               SendMessage message = new SendMessage().setChatId(chat_id).setText(messageSend);
               try {
                   sendMessage(message); // Sending our message object to user
               } catch (TelegramApiException e) {
                   e.printStackTrace();
               }
           }

       }
   }

   @Override
   public String getBotUsername() {
       return "KoBaTeJIb_bot";
   }

   @Override
   public String getBotToken() {
       return "***************************************";
   }
}

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

Подписывайтесь на мой блог! Всем спасибо и до новых встреч.

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