Инструкция по созданию бота
Зайти в telegram и найти там @BotFather.
Пишем ему команду /newbot
Далее он спросит название будущего бота (грубо говоря, это заголовок в чате, который будут видеть пользователи) и его имя. Главное условие для имени - оно должно оканчиваться на 'bot'.
Инициализация закончена, BotFather отправит нам ссылку на нашего будущего бота и, самое главное, выдаст нам уникальный токен, необходимый для авторизации в системе. По сути бот готов, уже можно его найти в общем поиске по имени и начать ему писать, но логика у нас еще не готова
Шаг 2. Создание проекта
Создаем простой (пустой не fx) проект с помощью maven
Добавляем зависимость
<dependencies>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>6.0.1</version>
</dependency>
</dependencies>
Пробуем создать и запустить следующий код
public class Bot extends TelegramLongPollingBot {
//вместо звездочек подставляйте свои данные
final private String BOT_TOKEN = "***";
final private String BOT_NAME = "***";
Storage storage;
Bot() {
storage = new Storage();
}
@Override
public String getBotUsername() {
return BOT_NAME;
}
@Override
public String getBotToken() {
return BOT_TOKEN;
}
@Override
public void onUpdateReceived(Update update) {
try{
if(update.hasMessage() && update.getMessage().hasText())
{
//Извлекаем из объекта сообщение пользователя
Message inMess = update.getMessage();
//Достаем из inMess id чата пользователя
String chatId = inMess.getChatId().toString();
//Получаем текст сообщения пользователя, отправляем в написанный нами обработчик
String response = parseMessage(inMess.getText());
//Создаем объект класса SendMessage - наш будущий ответ пользователю
SendMessage outMess = new SendMessage();
//Добавляем в наше сообщение id чата а также наш ответ
outMess.setChatId(chatId);
outMess.setText(response);
//Отправка в чат
execute(outMess);
}
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
public String parseMessage(String textMsg) {
String response;
//Сравниваем текст пользователя с нашими командами, на основе этого формируем ответ
if(textMsg.equals("/start"))
response = "Привет";
else if(textMsg.equals("/get"))
response = storage.getRandQuote();
else
response = "Сообщение не распознано";
return response;
}
}
шаг 3. В методе main() Вашего приложения регистрируем бота:
public static void main(String[] args) throws TelegramApiException {
TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
BotMediator testBot =new BotMediator();
botsApi.registerBot(testBot);
}
Объект Storage storage реализуйте так , чтобы можно было выводить из него String в сообщение пользователю