Skip to content

Настройка ​

bot-gateway настраивается переменными окружения.

ПеременнаяПо умолчаниюЧто
BOT_TOKEN—Обязательна. Каждый запрос к API передаёт Authorization: Bearer <BOT_TOKEN>. Длинная и случайная: openssl rand -hex 24.
RELAY_URL—Сервер Mailbees, на котором бот регистрируется при первом запуске, например https://mailbees.online.
BOT_NAME—Имя бота. При первом запуске обязательно; потом имя меняется, если отличается.
BOT_AVATAR—Путь к JPEG, PNG или WebP внутри контейнера. Обрезается до квадрата и уменьшается сам.
ACCEPT_REQUESTSallall: запросы на переписку и приглашения в группы принимаются сразу. contacts: сразу попадают только пришедшие по ссылке бота, остальные остаются запросами до POST /v1/chats/{chat}/accept.
WEBHOOK_URL, WEBHOOK_SECRET—Входящие POST-ом на этот адрес вместо GET /v1/updates. См. webhook.
UPDATESonoff: бот только отправляет (например, через хуки). Очереди входящих нет, GET /v1/updates отвечает 409.
HOOKS_URL—Внешний адрес gateway. Включает входящие хуки: их URL — HOOKS_URL/hooks/<секрет>.
BOT_OWNERS—id аккаунтов через запятую: только они заводят и удаляют хуки командами в чате.
LISTEN:8080Адрес HTTP API.
DATA_DIR/dataКлючи, база и очередь входящих.
LOG_LEVEL—debug — подробный лог.

Том с данными ​

В DATA_DIR лежат:

  • db.key — ключ, которым зашифрована база; создаётся при первом запуске;
  • база ядра: ключи бота, контакты, чаты и сообщения;
  • очередь ещё не подтверждённых входящих (зашифрована тем же ключом).

Потерять его — потерять бота: при следующем запуске зарегистрируется новый аккаунт, и людям придётся добавлять бота заново. Копируйте том целиком.

Проверка здоровья ​

GET /healthz отвечает 200 без токена — для healthcheck контейнера.

Доступ к API ​

API даёт полную власть над ботом. Держите его во внутренней сети или на 127.0.0.1, как в примере. Если включены входящие хуки, наружу через reverse proxy публикуйте только путь /hooks/.

Ограничения ​

  • Сервер ограничивает, скольким новым людям аккаунт может написать первым за сутки (50). Ответ тому, кто написал первым, бесплатен, поэтому боту в личных чатах это не мешает, а бот в большой группе упрётся в лимит так же, как человек.
  • В группе бот получает все сообщения: он полноправный участник. Приложения предупреждают об этом, когда бота добавляют в группу.
  • Неподтверждённые входящие хранятся 24 часа, не больше 10 000; старые вытесняются.