Создаем чат-бота на Java: пошаговое руководство для начинающих

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

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

Начать курс

Почему Java — отличный выбор для создания чат-бота?

Когда речь заходит о разработке чат-ботов, многие сразу вспоминают Python или Node.js. Но Java остаётся мощным и надёжным инструментом, особенно для корпоративных проектов. Надёжность, строгая типизация и огромное количество библиотек делают Java идеальной для создания ботов, которые должны работать 24/7 без сбоев.

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

Давайте погрузимся в мир чат-ботов на Java!

Что нам понадобится?

Прежде чем писать код, убедитесь, что у вас есть:

  • JDK 11 или выше (рекомендуем 17 или 21)
  • IntelliJ IDEA (Community Edition подойдёт) или другая IDE
  • Maven или Gradle (мы будем использовать Maven)
  • Аккаунт Telegram и смартфон/компьютер

Всё остальное — библиотеки и настройки — мы сделаем в процессе. Если вы новичок, не пугайтесь: создание чат-бота на Java проще, чем кажется.

Шаг 1. Регистрируем бота в Telegram

Первым делом нужно получить токен — уникальный ключ, который позволит вашему коду общаться с серверами Telegram.

  1. Откройте Telegram и найдите бота @BotFather.
  2. Напишите команду /newbot.
  3. Придумайте имя (например, JavaTestBot) и username, заканчивающийся на bot (например, JavaTestExampleBot).
  4. После создания BotFather выдаст токен. Сохраните его — он понадобится в коде.

Готово! Теперь у нас есть «душа» будущего чат-бота на Java.

Шаг 2. Создаём проект Maven

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

  • File → New → Project
  • Выберите Maven и Java 17
  • Задайте GroupId (например, com.example) и ArtifactId (например, telegram-bot)

Теперь откройте файл pom.xml и добавьте зависимость для работы с Telegram API. Мы будем использовать популярную библиотеку TelegramBots:

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

Сохраните файл и дождитесь, пока Maven загрузит библиотеки. Это основа для любого Java Telegram бота.

Шаг 3. Пишем основной класс бота

Создайте новый Java-класс с именем MyTelegramBot. Он будет расширять класс TelegramLongPollingBot. Вот минимальный код:

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

public class MyTelegramBot extends TelegramLongPollingBot {

    @Override
    public String getBotUsername() {
        return "JavaTestExampleBot"; // замените на ваше имя бота
    }

    @Override
    public String getBotToken() {
        return "ВАШ_ТОКЕН_ЗДЕСЬ"; // вставьте токен от BotFather
    }

    @Override
    public void onUpdateReceived(Update update) {
        // Проверяем, есть ли сообщение
        if (update.hasMessage() && update.getMessage().hasText()) {
            String messageText = update.getMessage().getText();
            long chatId = update.getMessage().getChatId();

            // Простой ответ на команду /start
            if (messageText.equals("/start")) {
                sendMessage(chatId, "Привет! Я чат-бот на Java. Напиши /help, чтобы узнать мои команды.");
            } else if (messageText.equals("/help")) {
                sendMessage(chatId, "Доступные команды:\n/start - приветствие\n/help - помощь\n/about - обо мне");
            } else if (messageText.equals("/about")) {
                sendMessage(chatId, "Я создан с помощью Java и библиотеки TelegramBots.");
            } else {
                sendMessage(chatId, "Извините, я не знаю такой команды. Попробуйте /help.");
            }
        }
    }

    private void sendMessage(long chatId, String text) {
        SendMessage message = new SendMessage();
        message.setChatId(String.valueOf(chatId));
        message.setText(text);
        try {
            execute(message);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
}

Обратите внимание: чат-бот на Java работает по принципу Long Polling — он постоянно «слушает» сервер Telegram на наличие новых сообщений. Альтернатива — Webhook, но для простоты мы используем Long Polling.

Шаг 4. Запускаем бота

Теперь нам нужен класс с методом main, который зарегистрирует бота. Создайте класс BotApplication:

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

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

Запустите метод main. Если всё сделано правильно, в консоли увидите сообщение «Бот успешно запущен!». Найдите своего бота в Telegram и напишите /start. Поздравляю — вы только что создали своего первого чат-бота на Java!

Шаг 5. Добавляем полезные функции

Простой echo-бот — это скучно. Давайте добавим что-то интересное. Например, бот может показывать погоду, курс валют или просто сохранять заметки. Я покажу, как реализовать простой калькулятор.

Добавьте в метод onUpdateReceived обработку команды /calc:

else if (messageText.startsWith("/calc")) {
    String[] parts = messageText.split(" ");
    if (parts.length == 4) {
        try {
            double a = Double.parseDouble(parts[1]);
            String op = parts[2];
            double b = Double.parseDouble(parts[3]);
            double result;
            switch (op) {
                case "+": result = a + b; break;
                case "-": result = a - b; break;
                case "*": result = a * b; break;                

Блоги

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