axe/internal/db/migrations/0012_user_bot_tokens.sql

26 lines
1.9 KiB
MySQL
Raw Normal View History

2026-10-18 19:07:25 +00:00
-- 0012_user_bot_tokens — токен собственного бота у каждого пользователя.
--
-- Зачем: раньше бот был один на весь сервис (TELEGRAM_BOT_TOKEN в env
-- сервера), и уведомления шли только от него. Теперь пользователь может
-- подключить своего бота сам, из раздела «Настройки»: создаёт его в
-- @BotFather, вставляет токен — уведомления уходят через его бота.
-- Глобальный бот остаётся запасным вариантом для тех, кто токен не ввёл.
--
-- Хранение: токен зашифрован на стороне приложения (AES-256-GCM, ключ —
-- секрет DATA_ENCRYPTION_KEY), в базе лежит bytea. Ответ «что это за
-- бот» (telegram_bot_username) берётся из getMe при сохранении и лежит
-- открыто: имя бота секрета не представляет.
--
-- Кто чем владеет:
-- * telegram_bot_token — приватно, читается только своим пользователем,
-- в API не отдаётся вообще (в статусе только has_bot_token);
-- * telegram_target — куда слать (та же колонка, что и раньше).
--
-- Применённый файл не редактировать (checksum в schema_migrations).
ALTER TABLE profiles ADD COLUMN IF NOT EXISTS telegram_bot_token bytea;
ALTER TABLE profiles ADD COLUMN IF NOT EXISTS telegram_bot_username text;
-- Отбор пользователей со своим ботом при старте процесса (реестр ботов
-- и их поллеры): колонка трогается редко, индекс не нужен.