JavaRush /Java блог /Random UA /Telegram Ability Bot: бот, що вміє вести діалог
Chundrik
35 рівень
Санкт-Петербург

Telegram Ability Bot: бот, що вміє вести діалог

Стаття з групи Random UA
Боти – це не лише цікаво, а й корисно. У ході роботи над ними ви зможете отримати простий, але працюючий проект для автоматизації будь-яких функцій і познайомитися з лямбдами, Git і Heroku. Коли я робила бот, то не знайшла інструкцій про те, як зробити щось хоч трохи складніше, ніж простий луна. Мені ж хотілося чогось розумнішого: наприклад, канал, який може вести справжній діалог, розвиток якого змінювався б залежно від обраної відповіді. Я розповім про свій проект, який зайняв у мене два тижні, і особливу увагу приділю розгортанню на Heroku, оскільки зіткнулася саме на фінальному етапі з великими труднощами. Telegram Ability Bot: бот, що вміє вести діалог - 1

Реєстрація

Для початку робота потрібно зареєструвати, отримавши назву і токен, який буде потрібно нам далі. На щастя, це не складно: достатньо відкрити Telegram, знайти @BotFather та ввести /start. У відповідь ви отримаєте список команд – нам необхідний /newbot. Вигадуємо ім'я, а потім і юзернейм, який повинен закінчуватися на -bot, скажімо, Consequences1Bot. Користувач має бути оригінальним, тому тут доведеться проявити фантазію. У відповідь BotFather надішле токен, який краще відразу зберегти.

початок

Telegram Ability Bot: бот, що вміє вести діалог - 2Для старту роботи нам знадобиться проект Maven, Java 8 та Intelliji Idea Ultimate. Вставляємо pom.xml: Telegram Ability Bot: бот, що вміє вести діалог - 3Не забудьте натиснути кнопку 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()із кодом, необхідним для ініціалізації бота.Telegram Ability Bot: бот, що вміє вести діалог - 4
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
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ