Мелкие правки и крупные обновления
Обновление движка бота и запуск альфа-теста. В этот релиз была улучшена стабильность обработки апдейтов и начата подготовка к внедрению новых команд.
Защита от дублирования сообщений: при обработке событий 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, с текстом: «⚠️ Пользователь Иван (@username) забанен. Причина: спам база CAS. Спам не пройдёт!».
Возможность апелляции: блокировка по нахождению в спам-базе CAS не является окончательной. Если предыдущий пользователь был спамером и ID нового пользователя оказался в базе по ошибке, пользователь может обратиться к амбассадору или команде парка для пересмотра статуса.
Безопасность: новые пользователи из спам-баз не получают доступ к функциям бота до уточнения статуса, что предотвращает злоупотребления и спам в чатах парка.