# Последовательности сообщений Реализовано в 0.5.0. Позволяет собирать приветствие (и любые другие наборы) из нескольких сообщений по порядку, с картинками и кнопками. ## Модель - `bot.message_sequences` — `key`, `title`, `description`, `updated_at/by`. - `bot.message_sequence_items` — сообщения: `sequence_key`, `position`, `text`, `enabled`, `image_name` (файл в общем volume `media/`). - `bot.message_sequence_buttons` — кнопки конкретного сообщения: `item_id`, `position`, `text`, `url`. Кнопок может быть несколько, каждая на своей строке. - `bot.message_sequence_history` — JSON-снимок последовательности при каждом изменении. Картинки не лежат в Postgres: они в Docker-volume `media`, который монтируется в `/app/media` и боту, и админке. При старте админка копирует туда встроенное `images/welcome_image.jpg`, если файла ещё нет. ## Отправка ботом `bot/services/sequences.py` читает включённые сообщения по `position` и отправляет: - с картинкой → `send_photo` (текст подписью, если ≤ 1024 символов; иначе фото без подписи и отдельное сообщение); - без картинки → `send_message`; - кнопки — `InlineKeyboardMarkup`, по одной в ряд. Для `welcome` при отсутствии/пустоте последовательности остаётся фолбэк на старые шаблоны `welcome.text*` из кода. ## Админка `/sequences` — список и создание; `/sequences/{key}` — редактор: - параметры последовательности; - сообщения по порядку: текст, картинка (загрузка/удаление), вкл/выкл, кнопки, перемещение вверх/вниз, удаление; - предпросмотр и история изменений. Текст редактируется в textarea с тулбаром: жирный ``, курсив ``, подчёркивание ``, зачёркивание ``, код ``, блок `
`,
цитата `
`, спойлер ``, ссылка ``. Есть счётчик символов (1024 для подписи к фото, 4096 для обычного сообщения) и предпросмотр через тот же `render()`, что использует бот. Картинки отдаются по `/sequences/media/{filename}` (только после входа). ## Миграции - `V20__message_sequences.sql` — таблицы и история. - `V21__seed_welcome_sequence.sql` — перенос текущего приветствия в `welcome` (подпись к фото + остальной текст с кнопкой «Канал») и удаление старых шаблонов `welcome.text*` из `message_templates`. ## Проверки `tests/test_admin_sequences.py` — список, редактор, создание, параметры, добавление, сохранение текста/кнопок, лимиты, загрузка картинки, порядок и удаление; `tests/test_welcome_split.py` — фолбэк приветствия.