Настройка
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_REQUESTS | all | all: запросы на переписку и приглашения в группы принимаются сразу. contacts: сразу попадают только пришедшие по ссылке бота, остальные остаются запросами до POST /v1/chats/{chat}/accept. |
WEBHOOK_URL, WEBHOOK_SECRET | — | Входящие POST-ом на этот адрес вместо GET /v1/updates. См. webhook. |
UPDATES | on | off: бот только отправляет (например, через хуки). Очереди входящих нет, 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; старые вытесняются.