Перейти к содержимому

Аутентификация

Каждый запрос бота к Флудилке (REST и Gateway) должен содержать заголовок Authorization с бот-токеном.

Токен имеет форму:

<application_id>.<secret>
  • application_id — несекретный ID приложения (тот же что в инвайт-ссылке)
  • secret — секретная часть, выдаётся один раз при сбросе токена

Вместе они дают полный доступ к бот-аккаунту. Ни одна половина сама по себе не работает.

Префикс обязательный — это Bot:

GET /api/v1/users/@me HTTP/1.1
Host: floodilka.com
Authorization: Bot 1496956937664585746.ZjBkYjE5ODI3NjQ4MGY4MTc1NzFjMjY1

В коде:

await fetch('https://floodilka.com/api/v1/users/@me', {
headers: {Authorization: `Bot ${process.env.FLOODILKA_BOT_TOKEN}`},
});

В IDENTIFY передаётся тот же токен, без префикса Bot:

{
"op": 2,
"d": {
"token": "1496956937664585746.ZjBkYjE5ODI3NjQ4MGY4MTc1NzFjMjY1",
"properties": {"os": "linux", "browser": "mybot", "device": "mybot"}
}
}

Обратите внимание — в gateway токен без Bot в отличие от REST. Если IDENTIFY включает префикс — сервер закроет соединение 4004 AUTHENTICATION_FAILED.

Никогда не:

  • Не коммитьте токен в git
  • Не вставляйте в клиентские приложения (extension, mobile app)
  • Не показывайте в скриншотах
  • Не отправляйте в чаты/поддержку

Правильно:

  • .env файл, добавленный в .gitignore
  • Секрет-менеджер хостинга (Railway Variables, Fly.io secrets, Docker secrets)
  • Переменная окружения на VPS через systemd EnvironmentFile

Если токен утёк — немедленно сбросьте его в Настройки → Приложения и боты → вкладка Бот → Сбросить токен. Старый токен инвалидируется в момент выдачи нового; все работающие процессы со старым токеном получат 401 Unauthorized на REST или 4004 AUTHENTICATION_FAILED на Gateway.

Статус Когда Что делать
401 Unauthorized Токен не передан, обрезан или сброшен Проверить .env, пересбросить если надо
403 Forbidden Токен валиден, но действия недоступны (нет прав, бот не в гильдии) Проверить инвайт-ссылку, посмотреть Права доступа
Close code Когда Что делать
4004 AUTHENTICATION_FAILED Токен невалиден Не реконнектиться. Сбросить и обновить токен
4003 NOT_AUTHENTICATED Клиент отправил payload до IDENTIFY Реконнект с правильным порядком HELLO → IDENTIFY

Подробнее — Коды закрытия.