Руководство: От BotFather до HelloWorld

Любительский перевод инструкции по созданию простого HelloWorld бота. На простом примере показано как создать своего первого бота.

⚠️ Данный текст частично содержит перевод официальной документации ↗️
Руководство: От BotFather до HelloWorld

Это руководство проведёт вас через всё, что нужно знать, чтобы создать своего первого Telegram-бота. Если вы уже знакомы с некоторыми базовыми шагами, можете сразу перейти к нужной части. Примеры кода доступны на C#, Python, Go и TypeScript.

Введение

В самом сердце Telegram Bot API лежит простая идея: это инструмент, который отвечает на ваши запросы в формате JSON. А что такое бот? По сути, это просто программа или скрипт, который отправляет запросы API через HTTPS и ждёт ответа. Есть несколько типов запросов, которые можно сделать, и множество объектов, с которыми можно работать.

Кстати, ваш браузер тоже может отправлять HTTPS-запросы! Попробуйте вставить эту строку в адресную строку после того, как получите токен:

https://api.telegram.org/bot/getMe

Так, конечно, можно поиграться для простых запросов, но это не подойдёт для серьёзных проектов. Поэтому мы научимся использовать библиотеки и фреймворки, чтобы сделать наш бот более устойчивым и масштабируемым.

Если вы уже умеете программировать, то пролетите через каждый шаг за пару минут. А если только начинаете — ничего страшного, это руководство покажет вам всё, что нужно. Мы будем использовать Java, но шаги одинаковы для любого языка.


Подготовка

1. Получение токена

Токен — это такая строка, которая аутентифицирует вашего бота (не ваш аккаунт) в API. Чтобы получить его, свяжитесь с @BotFather, используйте команду /newbot и следуйте инструкциям. Токен будет выглядеть примерно так:

4839574812:AAFD39kkdpWt3ywyRZergyOLMaJhac60qc

Сохраните его в надёжном месте, как пароль, и никому не показывайте.

2. Скачивание IDE

Чтобы писать код на Java, вам понадобится специальная программа — IDE (интегрированная среда разработки). Мы будем использовать IntelliJ IDEA, но есть и бесплатные альтернативы, например Eclipse или NetBeans. Также скачайте JDK — набор инструментов, который позволяет запускать Java-код.

3. Выбор фреймворка

Фреймворк — это такой помощник, который берёт на себя всю рутину, вроде API-запросов, и позволяет сосредоточиться на логике бота. В этом руководстве мы будем использовать TelegramBots, но вы можете выбрать любой другой.


Создание проекта

Откройте IntelliJ IDEA, создайте новый проект и заполните поля:

  • Имя проекта: Например, BotTutorial.
  • Язык: Java.
  • Система сборки: Maven.
  • JDK: Версия 17 (или другая, которую вы скачали).

После создания проекта, вы увидите структуру файлов. Нам понадобятся только два файла: Main и pom.xml.

Добавление зависимости

Откройте pom.xml и добавьте туда следующие строки:

<dependency>
    <groupId>org.telegram</groupId>
    <artifactId>telegrambots</artifactId>
    <version>6.0.1</version>
</dependency>

Теперь всё готово для написания кода!


Начало работы

1. Создание класса бота

Класс — это как файл, где вы пишете логику. Создайте новый класс Bot и укажите, что он расширяет TelegramLongPollingBot. После этого добавьте три обязательных метода:

  • getBotUsername() — возвращает имя вашего бота.
  • getBotToken() — возвращает токен.
  • onUpdateReceived() — обрабатывает новые сообщения.

Пример:

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

@Override
public String getBotToken() {
    return "4839574812:AAFD39kkdpWt3ywyRZergyOLMaJhac60qc";
}

@Override
public void onUpdateReceived(Update update) {
    System.out.println(update);
}

2. Запуск бота

Добавьте код для регистрации бота в методе main:

public static void main(String[] args) throws TelegramApiException {
    TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
    botsApi.registerBot(new Bot());
}

Запустите программу, и ваш бот оживёт! Правда, пока он ничего не делает, кроме как печатает входящие сообщения в консоль. Но это уже начало!


Добавление функционала

1. Отправка сообщений

Чтобы бот мог отвечать, создайте метод sendText:

public void sendText(Long who, String what) {
    SendMessage sm = SendMessage.builder()
        .chatId(who.toString())
        .text(what)
        .build();
    try {
        execute(sm);
    } catch (TelegramApiException e) {
        throw new RuntimeException(e);
    }
}

Теперь бот может отправлять сообщения. Например, при запуске он может сказать "Hello World!" конкретному пользователю.

2. Echo Bot

Сделаем бота, который повторяет всё, что ему пишут:

@Override
public void onUpdateReceived(Update update) {
    var msg = update.getMessage();
    var user = msg.getFrom();
    var id = user.getId();
    sendText(id, msg.getText());
}

3. Команды

Добавим две команды: /scream (бот будет кричать) и /whisper (бот вернётся к нормальному режиму). Для этого создайте переменную screaming и измените логику:

if (screaming) {
    scream(id, update.getMessage());
} else {
    copyMessage(id, msg.getMessageId());
}

4. Кнопки

Кнопки упрощают взаимодействие с ботом. Создайте клавиатуру с кнопками "Next", "Back" и ссылкой:

var next = InlineKeyboardButton.builder()
    .text("Next").callbackData("next")
    .build();

Размещение бота

Когда бот готов, его нужно разместить на сервере, чтобы он работал 24/7. Вот основные шаги:

  1. Упакуйте код в исполняемый файл (например, .jar).
  2. Купите VPS или арендуйте сервер.
  3. Загрузите файл на сервер через SSH.
  4. Запустите бота командой:
java -jar TutorialBot.jar

Что дальше?

Если хотите углубиться, изучите:

Если возникнут вопросы, обращайтесь в поддержку Telegram @BotSupport или в наш чат.

Удачи в создании бота! 🚀

Комментарии