Первая строка welcome.text уходит подписью к фото, остальное вместе с text2 и text3 — одним сообщением с кнопкой. Так текст не разбит на три части и не упирается в лимит подписи к фото (1024 символа). В редакторе welcome.text появилась подсказка, что первая строка — подпись. Если понадобится больше гибкости, следующим шагом можно сделать последовательность сообщений с картинками.
Появился раздел «Админы»: добавить человека по Telegram-ID, сменить роль, выключить или удалить (с защитой от отключения себя и последнего администратора). В карточке пользователя теперь можно выгнать из чата: бот банит и сразу разбанивает, данные удаляются, кто кого выгнал — уходит в чат логов. Заодно исправлен старый баг: при исключении уведомление и удаление применялись к тому, кто выгонял, а не к выгнанному. Шаблоны можно создавать из «Сообщений», а смена ника через /ник теперь видна в истории — с пометкой, что это сделал сам пользователь, а не админ.
Шаблоны из message_templates читаются через кеш на 45 секунд (TEMPLATE_CACHE_TTL), поэтому правка в админке доезжает до следующего сообщения или рассылки сама. Если база недоступна или таблицы ещё нет, бот работает на текстах из кода, а неудачный запрос не повторяется на каждом сообщении — админка не может уронить бота. Расписания рассылок теперь ссылаются на ключи шаблонов, а не на строки, так что тексты рассылок тоже редактируются.
- единая отправка уведомлений через bot/services/alerts.py, ошибки не ломают обработку
- вход и выход участников и успешные очищения уходят в ALERT_CHAT_ID
- ежечасный пинг «бот живой» перенесён в heartbeat, дублирующий пинг из рассылок убран
- событие bot_alive в ClickHouse для графиков доступности
- служебные теги chat_title, version и uptime в реестре тегов
- версия 0.3.3
- middleware пишет события message и command по основному чату, текст сообщений не сохраняется
- сервисы экономики, магазина, подписок и участников пишут события своих операций
- bot.purification возвращает уровень до и после, чтобы отличать повышение уровня
- добавлены события bot_start, bot_stop, access_denied и error
- аналитика инициализируется и закрывается вместе с ботом, её сбой не влияет на работу
- версия 0.3.2