Боты — это не только интересно, но и полезно. В ходе работы над ними вы сможете получить простой, но работающий проект для автоматизации каких-либо функций и попутно познакомиться с лямбдами, Git и Heroku. Когда я делала бот, то не нашла инструкций о том, как сделать что-то хоть чуточку сложнее, чем простой эхо-бот. Мне же хотелось чего-то более разумного: например, канал, который может вести настоящий диалог, развитие которого менялось бы в зависимости от выбранного ответа. Я расскажу о своем проекте, который занял у меня две недели, и особенное внимание уделю развертыванию на Heroku, поскольку столкнулась именно на финальном этапе с большими трудностями.
Регистрация
Для начала бота нужно зарегистрировать, получив название и токен, который потребуется нам дальше. К счастью, это не сложно: достаточно открыть Telegram, найти @BotFather и ввести /start. В ответ вы получите список команд — нам необходим /newbot. Придумываем имя, а затем и юзернейм, который должен заканчиваться на -bot, допустим, Consequences1Bot. Юзернейм должен быть оригинальным, поэтому тут придется проявить фантазию. В ответ BotFather пришлёт токен, который лучше сразу сохранить.Начало
Для старта работы нам потребуется проект Maven, Java 8 и Intelliji Idea Ultimate. Вpom.xml
вставляем:Не забудьте нажать кнопку Load Maven changes, которая появится справа в верхнем углу. Также убедитесь, что вы используете Java 8 или выше, это можно посмотреть в File --> Project settings --> Project.
В папке src.main.java
создаем подпапку с названием вашего бота, у меня это пакет example.TelegramBot
.
Сначала создаем класс TelegramBot
, который наследует AbilityBot
. Если Idea подчеркнет его красным (а она подчеркнет), нажмите Import class. У AbilityBot есть один метод, который необходимо имплементировать — creatorId()
.
@Override
public int creatorId() {
return Constants.CREATOR_ID;
}
Также нам нужно создать два конструктора: один без аргументов, а с помощью второго вызываем конструктор суперкласса:
public TelegramBot() {
this(Constants.BOT_TOKEN, Constants.BOT_USERNAME);
}
private TelegramBot(String botToken, String botUsername) {
super(botToken, botUsername);
}
Constans
закономерно становится красным — этот интерфейс предстоит создать. В нем будут храниться строки и номер ID. Конечно, можно не заморачиваться и оставить все в основном документе, но так будет гораздо нагляднее. Итак, создадим интерфейс Constans
. Первыми переменными будут String BOT_TOKEN
(токен, который прислал BotFather), String BOT_USERNAME
и int CREATOR_ID
. ID создателя нужно для обеспечения дополнительной безопасности — вы можете узнать его чуть позже.Запуск
Создайте классApplication
, в котором будет метод main()
с кодом, необходимым для инициализации бота.
public class Application {
public static void main(String[] args) {
// Initializes dependencies necessary for the base bot
ApiContextInitializer.init();
// Create the TelegramBotsApi object to register your bots
TelegramBotsApi botsApi = new TelegramBotsApi();
try {
// Register your newly created AbilityBot
FitnessBot bot = new FitnessBot();
botsApi.registerBot(bot);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
}
Теперь вы можете запустить бота из главного метода, однако никаких действий он проводить не будет. Лишь молчание будет вам ответом. В следующей части я опишу, как это изменить.
ЧАСТЬ 2
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ