Как создать Telegram бота на Java: полный гайд с кодом

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Telegram бот на Java: с чего начать и как не бросить на полпути

Вы когда-нибудь хотели написать своего Telegram бота, но думали, что это слишком сложно? Спешу вас обрадовать: создать Telegram бота на Java — задача, с которой справится даже новичок. Никакой магии, только чёткий план и немного кода.

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

Почему именно Java? Этот язык даёт стабильность, производительность и огромное количество готовых решений. Для Telegram бота на Java не нужно ставить десятки зависимостей — всё умещается в одном Maven/Gradle проекте. Поехали!

Шаг 1: Регистрация бота и получение токена

Прежде чем писать код, нужно «родить» бота. Делается это через главного бота Telegram — BotFather.

Запустите BotFather в Telegram и отправьте команду:

/newbot

Дальше следуйте инструкциям: придумайте имя (оно будет видно пользователям) и username (должен заканчиваться на _bot). После успешного создания вы получите токен — длинную строку вида:

1234567890:ABCdefGHIjklmNOPqrstUVwxyz-1234567

Важно: токен — это ключ к вашему боту. Никому его не показывайте, не загружайте в публичные репозитории. Лучше хранить в переменных окружения или конфигурационных файлах.

Шаг 2: Создание проекта и подключение зависимостей

Мы будем использовать Maven — это удобно и стандартно для Java-проектов. Если вы предпочитаете Gradle — принцип тот же, просто перепишите зависимости под свой формат.

Создайте обычный Java-проект в вашей IDE (IntelliJ IDEA, Eclipse или NetBeans) и откройте файл pom.xml. Добавьте в него следующую зависимость:

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

Эта библиотека — TelegramBots — самая популярная для создания ботов на Java. Она поддерживает все основные функции: отправку сообщений, изображений, кнопок, работу с Inline-режимом и Webhooks.

После добавления зависимости запустите mvn clean install или обновите проект в IDE, чтобы скачать библиотеку.

Шаг 3: Пишем первого бота — базовый класс

Создайте класс, который наследуется от TelegramLongPollingBot. Этот класс будет отвечать за получение обновлений от серверов Telegram. Вот минимальная структура:

import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;

public class MySimpleBot extends TelegramLongPollingBot {

    @Override
    public String getBotUsername() {
        return "YourBotUsername"; // без @
    }

    @Override
    public String getBotToken() {
        return "YOUR_TOKEN_HERE";
    }

    @Override
    public void onUpdateReceived(Update update) {
        // Здесь будем обрабатывать сообщения
        if (update.hasMessage() && update.getMessage().hasText()) {
            String messageText = update.getMessage().getText();
            long chatId = update.getMessage().getChatId();
            System.out.println("Получено сообщение: " + messageText + " от чата: " + chatId);
        }
    }
}

Пока бот только логирует входящие сообщения. Давайте добавим ответное действие.

Шаг 4: Отправляем ответ — бот начинает говорить

Чтобы бот отвечал, используем класс SendMessage. Добавим обработку команды /start и любого текста:

@Override
public void onUpdateReceived(Update update) {
    if (update.hasMessage() && update.getMessage().hasText()) {
        String messageText = update.getMessage().getText();
        long chatId = update.getMessage().getChatId();

        SendMessage message = new SendMessage();
        message.setChatId(chatId);

        if (messageText.equals("/start")) {
            message.setText("Привет! Я — Java-бот. Чем могу помочь?");
        } else {
            message.setText("Вы написали: " + messageText);
        }

        try {
            execute(message);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
}

Теперь бот отвечает на каждое сообщение. Обратите внимание: execute(message) выбрасывает исключение — обязательно обрабатывайте его.

Шаг 5: Запускаем бота — главный метод

Бот готов, но его нужно запустить. Создайте класс Main с методом main, где зарегистрируете бота в API Telegram:

import org.telegram.telegrambots.meta.TelegramBotsApi;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;

public class Main {
    public static void main(String[] args) {
        try {
            TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
            botsApi.registerBot(new MySimpleBot());
            System.out.println("Бот успешно запущен!");
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
}

Запустите main — и ваш Telegram бот на Java оживёт! Напишите ему любое сообщение, он ответит. Если видите ошибку — проверьте токен и интернет-соединение.

Шаг 6: Добавляем полезные команды и кнопки

Просто отвечать «эхо» — скучно. Давайте сделаем бота полезнее: добавим команды /help, /info и кнопки для быстрого выбора.

Обработка команд

Расширим метод onUpdateReceived:

if (messageText.equals("/start")) {
    message.setText("Добро пожаловать! Используйте /help для списка команд.");
} else if (messageText.equals("/help")) {
    message.setText("Доступные команды:\n/start — приветствие\n/help — эта справка\n/info — информация о боте");
} else if (messageText.equals("/info")) {
    message.setText("Я — бот, написанный на Java с использованием библиотеки TelegramBots.");
} else {
    message.setText("Неизвестная команда. Напишите /help.");
}

Кнопки под сообщением

Кнопки — это InlineKeyboardMarkup. Добавим их в ответ на /help:

import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton;

// Внутри метода onUpdateReceived
if (message                

Блоги

Рекомендаций по книгам