Это руководство проведёт вас через всё, что нужно знать, чтобы создать своего первого 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. Вот основные шаги:
- Упакуйте код в исполняемый файл (например,
.jar
). - Купите VPS или арендуйте сервер.
- Загрузите файл на сервер через SSH.
- Запустите бота командой:
java -jar TutorialBot.jar
Что дальше?
Если хотите углубиться, изучите:
- Подробное описание платформы Telegram Bot API) - английский язык.
- Полный список возможностей ботов - английский язык. Вот наш перевод.
- Документацию по API
Если возникнут вопросы, обращайтесь в поддержку Telegram @BotSupport или в наш чат.
Удачи в создании бота! 🚀