Мелкие правки и крупные обновления
Обновление движка бота и запуск альфа-теста. В этот релиз была улучшена стабильность обработки апдейтов и начата подготовка к внедрению новых команд.
Защита от дублирования сообщений: при обработке событий getChatMember()
, getNewChatMembers()
и getLeftChatMember()
Телеграм дублирует сообщения при входе/выходе пользователя. Ранее бот обрабатывал каждое сообщение, что приводило к дублям в чате. Теперь бот проверяет уникальность апдейта по update_id
и игнорирует повторные события.
Защита от использования бота без настроенного парка: если профиль парка не заполнен или парк не добавлен (нет привязки к ID чата), бот ограничивает действия. Базовое оповещение остаётся, а также появляется уведомление о необходимости завершить настройку, чтобы избежать ошибок при работе команд и репортов.
Игнорирование служебных приватных чатов: после первого получения ID приватного чата бот сохраняет его в базе и перестаёт логировать и обрабатывать все последующие апдейты из этого чата, кроме команды /getid
, если она используется для первичной регистрации.
Добавлена система репортов: при ответе на сообщение нарушителя командой /report
бот отправляет оповещение в командный чат. Если командный чат не добавлен, уведомление отправляется руководителю парка. При этом бот корректно формирует ссылку на сообщение и отображает имя нарушителя.
При добавлении бота в командный чат ему не требуются права администратора. После добавления ID секретного чата в настройках, бот перестаёт реагировать на все события в этом чате — это предотвращает лишнее логирование и обработку команд, которые предназначены только для рабочих чатов.
Обработка команд /ban и /allban: теперь сначала проверяется, что апдейт не из приватного чата, затем проверяются права пользователя, и только после этого выполняется бан. Это предотвращает ошибки при попытке использования команд в личных чатах с ботом.
Обработка апдейтов: бот проверяет update_id
, чат и тип сообщения перед выполнением логики, что минимизирует дублирование событий и нагрузку на систему.
Антиспам и антифлуд: добавлены проверки частоты сообщений и команд, чтобы предотвратить массовые повторные действия и засорение чатов. Бот ограничивает выполнение команд при превышении установленного порога и уведомляет пользователя о превышении лимита.
Команда /contact: теперь бот корректно отображает контакты парка в личных и групповых чатах. В чате парка — контакты данного парка, в личном чате — контакты привязанного к пользователю парка.
Кликабельные ссылки и оформление: все контакты выводятся с иконками сервисов и кликабельными ссылками, что упрощает доступ к ресурсам парка.
Страница-визитка парка: автоматически формируется при заполнении контактов в панели управления парка и доступна через ссылки, уникальные для каждого парка с привязкой к ID парка в системе (пример для Полюстровского парка с ID1: https://5api.ru/link/1).
Безопасность в группах: если пользователь пытается использовать /contact в группе и бот ещё не может писать в личку, выводится уведомление с ссылкой для начала диалога с ботом. Командное сообщение удаляется из чата, чтобы не засорять историю.
Интеграция с CAS (Combot Anti-Spam): при первом добавлении пользователя в базу бот теперь делает проверку через сервис CAS. Если пользователь найден в базе спамеров — раньше ему автоматически присваивался статус rank = 0
и выполнялась блокировка. ⚠️ Теперь автоматической блокировки не происходит — решение принимает команда парка вручную.
Обработка ошибок: если запрос к CAS не удался из-за проблем с сетью или неизвестной ошибки, регистрация пользователя происходит стандартным образом, с обычным статусом rank = 1
.
Прозрачность для администраторов: бот отправляет уведомление в приватный чат команды или руководителю, если пользователь найден в CAS. Сообщение содержит данные пользователя.
Возможность апелляции: нахождение в CAS не является окончательным приговором. Если ID нового пользователя попал в базу ошибочно, он может обратиться к амбассадору или команде парка для пересмотра статуса.
Безопасность: новые пользователи из спам-баз не получают автоматических ограничений, но команда получает все необходимые инструменты для принятия решения. Это позволяет избежать ошибок и при этом сохранять защиту от злоупотреблений.
Приветственные и прощальные сообщения: добавлены переключатели для управления выводом приветственных (welcom_msg
) и прощальных (left_msg
) сообщений в чатах парка. Теперь администратор может гибко включать или отключать эти опции.
Гибкость настроек: если опция отключена (значение 0
), бот полностью пропускает отправку соответствующих сообщений. При включённой настройке (значение 1
) работает установленный сценарий.
Дефолтное поведение: если настройки не заданы, бот использует стандартные приветственные и прощальные сообщения.
🔹 Обновление реализовано по запросу команды парка.
Запуск бота-отладчика MarkdownV2 разметки: добавлен специальный бот @verst5_debug_bot для тестирования и визуализации исключительно MarkdownV2 разметки. Теперь разработчики могут проверять корректность оформления сообщений перед отправкой в основном боте.
Функциональность отладчика: бот поддерживает команды /start
, /help
, /test
и обработку произвольного текста. Для каждого сообщения выводится:
Специализация на MarkdownV2: отладочный бот работает исключительно с форматом MarkdownV2, что соответствует стандарту основного бота и исключает путаницу между разными типами разметки.
Автоматическое экранирование: реализована функция корректного экранирования всех специальных символов MarkdownV2, включая _ * [ ] ( ) ~ ` > # + - = | { } . !
, что полностью предотвращает ошибки парсинга при отправке сообщений.
Обработка ошибок: реализована система резервной отправки сообщений через прямое API Telegram в случае возникновения проблем с основной библиотекой.
🔹 Обновление значительно упрощает процесс отладки сообщений с MarkdownV2 форматированием, обеспечивая единый стандарт разметки.