REPOSITORY / ScuroNeko/Laniakea

Wiki

KNOWLEDGE REPOSITORY
4
Bot Options and Configuration RU
ScuroNeko edited this page 2026-05-20 13:22:27 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Bot Options and Configuration RU

English version: Bot-Options-and-Configuration

Это краткая русскоязычная версия страницы про BotOpts. Полная и наиболее актуальная страница: Bot-Options-and-Configuration.

Зачем нужен BotOpts

BotOpts — это construction-time конфигурация для Bot.

Через него настраиваются:

  • токен и API endpoint;
  • update types и command prefixes;
  • поведение логирования;
  • ограничение частоты;
  • строгое декодирование данных callback;
  • размер worker pool.

Обычный поток:

  1. собрать BotOpts вручную, через LoadOptsFromEnv() или через LoadBotOptsFile(...);
  2. при необходимости донастроить setter methods;
  3. передать в NewBot(...).

Три способа собрать BotOpts

Вручную

opts := (&laniakea.BotOpts{}).
	SetToken("TOKEN").
	SetPrefixes("/", "!").
	SetRateLimit(30).
	SetMaxWorkers(32)

Через environment

opts := laniakea.LoadOptsFromEnv()

Это удобно для production, containers и CI.

Из файла

LoadBotOptsFile(...) подходит, когда конфиг бота удобнее хранить в отдельном файле.

Из коробки доступно:

  • BotOptsFileJSONCodec для JSON.
codec := laniakea.BotOptsFileJSONCodec{}
opts, err := laniakea.LoadBotOptsFile(codec, "config.json")
if err != nil {
	return err
}

При необходимости BotOpts можно сохранить обратно:

if err := laniakea.SaveBotOptsFile(codec, "config.json", opts); err != nil {
	return err
}

Перед декодированием loader разворачивает плейсхолдеры вроде {{ TG_TOKEN }} из environment variables.

Из коробки библиотека пока поддерживает только JSON. Для других форматов можно реализовать свой codec через BotOptsFileCodec. Если нужен другой формат, например TOML, используй BotOptsFileJSONCodec как референсную реализацию собственного codec.

Что обязательно

Обязателен только Token.

Если токен пустой, NewBot(...) вернет ErrTokenRequired.

Дефолты, которые стоит помнить

  • Prefixes по умолчанию ["/"]
  • RateLimit по умолчанию 30
  • MaxWorkers по умолчанию 32
  • ErrorTemplate по умолчанию "%s"
  • журналирование запросов и логирование в файл выключены
  • строгое декодирование данных callback выключено

Плейсхолдеры в файлах

LoadBotOptsFile(...) разворачивает плейсхолдеры такого вида:

{{ TG_TOKEN }}
{{API_URL}}

Это происходит до вызова codec.FromBytes(...).

Такой режим удобен, когда:

  • структуру конфига хочется хранить в репозитории;
  • секреты всё ещё должны приходить из environment;
  • нужен свой codec под другой формат файла.

Важные поля

UpdateTypes

Ограничивает, какие update types bot запрашивает у Telegram.

Полезно, когда ты не хочешь принимать лишние update types и шуметь в routing layer.

Prefixes

Определяет command prefixes вроде / или !.

ErrorTemplate

Определяет, как пользователю показываются ошибки, возвращённые обработчиком.

Debug

Включает отладочное логирование.

UseRequestLogger

Включает логирование сырых updates после getUpdates.

WriteToFile и LoggerBasePath

Управляют записью логов в файлы.

UseTestServer и APIURL

Полезны для тестового окружения, proxy или собственного Telegram gateway.

RateLimit и DropRLOverflow

Управляют политикой limiter:

  • ждать и доставлять надежнее;
  • или сбрасывать лишние запросы ради отзывчивости.

StrictPayloadType

Включает строгую политику декодирования данных callback без запасного варианта между JSON и Base64.

MaxWorkers

Определяет максимальное количество параллельных обработчиков обновлений.

Когда выбирать маленький или большой MaxWorkers

Меньше:

  • если обработчики CPU-bound;
  • если нижележащие сервисы не выдержат много параллелизма.

Больше:

  • если handlers в основном I/O-bound;
  • если bot часто ждет БД или внешние API.

Стартовая безопасная точка обычно 16-32.

Что читать дальше