26 lines
1.9 KiB
SQL
26 lines
1.9 KiB
SQL
-- 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;
|
||
|
||
-- Отбор пользователей со своим ботом при старте процесса (реестр ботов
|
||
-- и их поллеры): колонка трогается редко, индекс не нужен.
|