Боти – це не лише цікаво, а й корисно. У ході роботи над ними ви зможете отримати простий, але працюючий проект для автоматизації будь-яких функцій і познайомитися з лямбдами, 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
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ