/
Praxis/

Минимальный Telegram-бот

На этом этапе мы запускаем самый простой рабочий бот: он читает токен из переменных окружения, стартует long polling и отвечает на базовые команды. Это фундамент, на котором мы будем наращивать архитектуру: каждый следующий этап добавляет функциональность, не ломая базовое поведение.

Ключевая концепция: Long polling

— способ получения обновлений от Telegram: бот открывает HTTP-запрос getUpdates с таймаутом; как только появляется апдейт, сервер отвечает. Бот обрабатывает событие и запрашивает следующую порцию с offset, чтобы не читать одно и то же дважды. Для локальной разработки это проще webhook: не нужен публичный URL и HTTPS.

pref := telebot.Settings{ Token: token, Poller: &telebot.LongPoller{Timeout: 10 * time.Second}, } bot, _ := telebot.NewBot(pref) bot.Handle("/ping", func(c telebot.Context) error { return c.Send("pong") }) bot.Start()

💡 Gotcha: Не храните токен в коде. Используйте os.LookupEnv — она возвращает второе значение bool, позволяющее отличить «переменная пустая» от «переменная не задана».

Используемые пакеты

ПакетНазначениеКлючевые функции
gopkg.in/telebot.v4Telegram Bot APINewBot, Handle, Start
osПеременные окруженияLookupEnv

Цели этапа

Запустить минимального бота, отвечающего на базовые команды.

Что необходимо сделать:

  • Функция:

    func LoadToken() (string, error)

    Логика: прочитать TELEGRAM_BOT_TOKEN из переменных окружения через os.LookupEnv; если переменная не задана — вернуть ошибку.

  • В main: загрузить токен, создать бота через telebot.NewBot с LongPoller, зарегистрировать обработчики /start (приветствие) и /ping (ответ pong), запустить polling.

Пример работы

$ export TELEGRAM_BOT_TOKEN=123:ABC $ ./bot INFO bot started, polling updates # В Telegram: /start -> "Привет! Я готов. Используй /ping для проверки." /ping -> "pong"

При отсутствии токена:

$ ./bot ERROR TELEGRAM_BOT_TOKEN is not set exit status 1

Полезные материалы

  • TeleBot: Getting Started — обзор библиотеки
  • os.LookupEnv — чтение переменных окружения
  • Effective Go: Errors — стиль ошибок в Go
  • Создание Telegram-бота на Go — на русском

Критерии

не проверялось
  • Функция LoadToken() (string, error) использует os.LookupEnv для чтения TELEGRAM_BOT_TOKEN
  • Бот создаётся через telebot.NewBot с telebot.Settings и telebot.LongPoller
  • Обработчики /start и /ping зарегистрированы через bot.Handle
Войдите в аккаунт, чтобы начать проект
Запустите первую проверку