✍️ Проверка подписки на группу by @FireWookie
Добавлено:
- Новый middleware
ChannelCheckerMiddlewareдля проверки обязательной подписки на канал перед использованием бота. - Переменные окружения для обязательной подписки:
CHANNEL_SUB_ID— ID каналаCHANNEL_LINK— ссылка на каналCHANNEL_IS_SUB_REQUIRED— обязательна ли подписка (булево значение)
- Кнопочная клавиатура для подписки на канал с кнопками "Подписаться" и "Я подписался".
- Хендлер
required_sub_channel_checkдля повторной проверки подписки по нажатию кнопки "Я подписался". - Вынесена логика определения процесса регистрации пользователя в отдельный модуль
app/utils/check_reg_process.py.
Изменено:
- Расширена и обновлена схема настроек в файле
app/config.py— добавлены новые переменные для поддержки обязательной подписки. - В файле
app/bot.pyдобавлена регистрация нового middleware для всех сообщений и callback-запросов. - В
app/keyboards/inline.pyдобавлена генерация inline-клавиатуры для подписки на канал. - Хендлеры регистрации (
app/handlers/start.py) теперь поддерживают дополнительную проверку подписки (через callback "sub_channel_check"). - Middleware авторизации теперь использует вынесенную функцию для проверки этапа регистрации пользователя.
Прочее:
- В пример
.env.exampleдобавлены новые переменные для настройки обязательной подписки.
📖 Возможность настраивать шаблон описания пользователя через плейсхолдеры by @yazhog
- Новая переменная окружения
REMNAWAVE_USER_DESCRIPTION_TEMPLATEв.env.exampleдля настройки шаблона описания пользователя в панели RemnaWave. - Возможность настраивать шаблон описания пользователя через плейсхолдеры:
{full_name},{username},{username_clean},{telegram_id}. - Функция
format_remnawave_user_descriptionв настройках (app/config.py) для формирования описания пользователя по заданному шаблону. - Асинхронное обновление описания пользователя в RemnaWave при обновлении профиля пользователя в middleware (
app/middlewares/auth.py).
Изменено
- Везде, где происходит создание или обновление пользователя в RemnaWave (админка, подписки, мониторинг, синхронизация), теперь для описания используется настраиваемый шаблон через
settings.format_remnawave_user_description. - Удалены хардкодированные описания вида
Bot user: {full_name}— теперь описание формируется динамически по шаблону.
Исправлено
- Корректная обработка ситуации, когда у пользователя отсутствует username (удаление лишних символов "@" и пробелов в описании).
⚙️ Доработка сервиса мониторинга
Улучшено
- Добавлена постраничная навигация для логов мониторинга (пагинация).
- В логах теперь отображается общая статистика: количество событий, успешные/ошибочные проверки, процент успешности.
- Кнопки управления логами и навигацией теперь более удобны и информативны.
- Добавлены новые клавиатуры для управления логами и фильтрации.
- Улучшена обработка очистки логов: теперь можно очистить все логи сразу.
Исправлено
- Исправлены сообщения и оформление для пустых логов.
- Оптимизировано отображение длинных сообщений в логах (обрезка текста).
Техническое
- Обновлён сервис
monitoring_service: добавлены методы для подсчёта количества логов и улучшена очистка. - Рефакторинг обработчиков мониторинга для поддержки новой пагинации и статистики.
- Обновлены и расширены вспомогательные клавиатуры в
keyboards/admin.py.
What's Changed
- Фиксы сервиса мониторинга by @Fr1ngg in #74
- Codex/required sub channel by @FireWookie in #76
- Dev by @Fr1ngg in #79
- Шаблон описания пользователя в панели Remnawave, с плейсхолдерами by @yazhog in #78
New Contributors
- @FireWookie made their first contribution in #76
Full Changelog: v2.3.2...v2.3.3