Rich-сообщения Telegram: что проверяется в блоках, кнопках и опросах
Как Defendy разбирает вложенный текст, подписи, скрытые ссылки, кнопки и правки. Какие ограничения остаются у опросов, превью ссылок и содержимого файлов и как их проверить.
Снаружи публикация выглядит как короткое объявление, а важный текст находится в сворачиваемом разделе, ячейке таблицы или кнопке. Проверить только первую строку недостаточно. Администратору нужно понимать, какие части сообщения доходят до фильтров и где остаётся ручная работа.
В проверенной реализации Defendy извлекает обычный текст с подписями, поддерживаемый вложенный rich-текст и адреса кнопок. Поля самого опроса и отдельно заданный адрес превью ссылки в этот разбор не входят. Ниже разберём границы и составим проверку, для которой не нужны настоящий спам и наказания случайных участников.
Сначала различите три похожих случая
В формате Telegram RichMessage содержимое хранится в блоках. При этом жирный текст или цитата на экране ещё не означают rich-сообщение: они могут быть оформлением обычного текста.
Для модерации важны три ситуации:
- Оформление внутри отправленного сообщения. Участник написал текст и выделил часть цитатой, спойлером или кодом. Эти слова входят в содержимое его сообщения.
- Структурированная rich-публикация. Текст находится в поддерживаемых абзацах, списках, таблицах, раскрывающихся разделах или подписях к медиа. До нужной фразы может быть несколько уровней вложенности.
- Ответ на чужое сообщение. Telegram показывает старый текст рядом с новым ответом. Общий разбор Defendy не копирует всё исходное сообщение и отдельное поле цитаты из ответа в текст, проверяемый у автора ответа.
Последнее особенно важно для жалоб. Ответ «Посмотрите, пожалуйста» не должен наследовать весь спам из сообщения выше только из-за его отображения в интерфейсе. Но если участник сам вставил запрещённый текст в свой ответ, это уже содержимое его публикации: фильтр может на него сработать. Пользуйтесь жалобой модераторам, не размножая опасный материал в группе.
Что получает проверенная цепочка модерации
Разбор собирает текст и сохраняет сведения о ссылках для действующих фильтров. Решение о нарушении принимается дальше, с учётом настроек.
Обычные сообщения. Читаются собственный текст сообщения, его сущности форматирования и ссылок, подпись и сущности подписи. За безобидной надписью может скрываться другой адрес. Видимый текст ссылки и её назначение поэтому нужно проверять отдельно.
Вложенный rich-текст. Разбираются поддерживаемые абзацы, заголовки и нижние текстовые блоки с оформлением. Учитываются метки и содержимое списков, ячейки и подписи таблиц, заголовки и содержимое раскрывающихся разделов, цитаты и подписи к ним. У коллажей и слайд-шоу обходятся поддерживаемые блоки и подписи. Свёрнутый на экране раздел сам по себе не исключает текст из разбора.
Rich-блоки с медиа. Читаются подписи поддерживаемых блоков фото, видео, анимации, аудио, голосовых сообщений, документов и карт. Подпись к документу не равна его содержимому. Этот разбор не выполняет OCR, антивирусную проверку, оценку безопасности изображения, расшифровку речи и чтение файлов. Политику вложений отдельно разбирает руководство по медиа.
Кнопки. В проверяемое содержимое входят надписи поддерживаемых обычных inline-кнопок и rich-кнопок, а также явно заданные URL, адреса входа и Web App, если они присутствуют. Служебные callback-данные кнопки не превращаются в текст сообщения. Извлечь адрес также не означает открыть сайт и проверить всё, что произойдёт после нажатия.
Полезный контрольный пример: разделите одно выдуманное стоп-слово на обычный и жирный фрагменты внутри абзаца. Проверенный разбор соединяет соседние rich-фрагменты без искусственного пробела, чтобы одно оформление не меняло слово для фильтра. Между отдельными блоками разделение сохраняется. Это помогает составить тест, но не гарантирует распознавание любых способов маскировки текста.
Цитата и надпись кнопки не должны становиться командой
Проверка содержимого и выполнение команды решают разные задачи. Запрещённая ссылка внутри цитаты может оставаться нарушением. Написанное в той же цитате /ban само по себе не означает, что администратор поручил кого-то забанить.
В проверенной обработке команд учитывается этот контекст: командоподобный текст в цитатах, коде, кнопках и некоторых автоматически формируемых фрагментах исключён из исполнения. Для rich-команд предусмотрен узкий формат поддерживаемого отдельного абзаца, а не произвольный блок внутри большой публикации. При этом содержимое сложного поста остаётся задачей контентных фильтров.
Рабочие команды отправляйте отдельно простым текстом, сверяясь со справочником. Не помещайте настоящую команду наказания в сложный пост ради эксперимента. Для проверки используйте безвредные примеры в отдельной группе.
Опросы и превью ссылок проверяйте отдельно
В опросе может быть не только вопрос с вариантами ответа. Telegram описывает ссылку, прикреплённую к варианту опроса. Это другой элемент, не обычная кнопка сообщения.
На проверенной версии общий разбор не читает вопрос, описание, варианты ответа, объяснение викторины, их сущности и адреса ссылок в медиа опроса. Поэтому эти поля не получают покрытие текстового фильтра и фильтра ссылок просто потому, что опрос пришёл как сообщение. Получить поле от Telegram и использовать его в фильтре — разные этапы.
Если каждый опрос должен проходить предварительное согласование, организуйте публикацию через команду модераторов либо проверьте право участников отправлять опросы в настройках Telegram вашего клиента. Не обещайте участникам непроверенный «сканер опросов Defendy». Если опросы разрешены всем, включите их в ручную проверку и объясните, как сообщить о сомнительном варианте.
Отдельная граница есть у настроек превью ссылки: общий разбор не извлекает link_preview_options.url самостоятельно. Если тот же адрес есть в тексте или поддерживаемой сущности ссылки, он может попасть в проверку этим путём. Наличие красивого превью или его отсутствие ничего не доказывает о разрешённости адреса. Картинка, заголовок превью и содержимое страницы этим разбором отдельно не исследуются.
В обращении в поддержку полезно сразу назвать место ссылки: «в тексте», «за кнопкой», «в варианте опроса» или «только в настройках превью». Для диагностики это четыре разных случая.
Извлечённый текст ещё должен пройти действующие правила
Адрес обрабатывается по вашим настройкам фильтра ссылок. Для слова во вложенном блоке нужен включённый фильтр и подходящее правило. Стоп-слова и антимат решают разные задачи; получение rich-текста не превращает их в универсальную проверку безопасности.
Цепочка может остановиться на первом сработавшем фильтре. Например, запрещённая ссылка вызовет действие раньше текстового антиспама. Если нужная категория включена в журнале модерации, смотрите фактическую причину. По одному удалению нельзя заключить, что остальные фильтры проверили сообщение и одобрили его.
У ИИ-проверки также есть собственные условия включения и применения. Разбор rich-текста не означает отправку каждого сообщения модели и не даёт ей доступ к вложениям. В руководстве по ChatGPT-модерации разделены ручная работа модератора с моделью и поддерживаемые проверки Defendy.
Не забудьте правки и статус отправителя
Проверенные обработчики новых и отредактированных сообщений используют одно общее представление содержимого. Добавьте сценарий, в котором сначала отправляется разрешённый пост, а затем в него вставляется выдуманный запрещённый маркер. Только проверкой новых публикаций этот путь не покрыть. У Telegram для правок предусмотрено отдельное обновление edited_message; бот должен его фактически получить.
Проверять правила для участников нужно с согласованного обычного аккаунта. В рассмотренной цепочке сообщения администраторов помечаются для пропуска модерации, а автоматические публикации связанного канала идут доверенным путём для статистики. Сохранившийся пост администратора не доказывает поломку фильтра для участников. У примера, присланного другим ботом, тоже могут отличаться условия доставки и отправитель. Запишите реальный тип автора; при необходимости откройте разбор сообщений от имени канала.
Контрольная матрица без настоящего спама
Используйте отдельную группу и сообщения, которые не жалко удалить. Для временного правила стоп-слов придумайте нейтральный маркер, для ссылок возьмите безопасный адрес под вашим контролем. Перед началом зафиксируйте сохранённые настройки. Проверьте удаление, накопление предупреждений и срок наказания: действие «Ничего» для участника не обязательно отключает удаление сообщения.
Ниже предложены сценарии приёмки. Это не результаты живого теста Telegram, выполненного для статьи.
| Случай | Что установить |
|---|---|
| Обычный текст и разрешённый контроль | Маркер вызывает нужное правило, похожая разрешённая фраза сохраняется. |
| Вложенный абзац, таблица, раскрывающийся блок | Тот же маркер доходит до правила в каждой поддерживаемой структуре, включая свёрнутый раздел. |
| Цитата внутри отправленного текста | Содержимое подчиняется выбранной политике; безвредный пример команды не исполняется. |
| Ответ на сообщение с маркером | Чистый ответ не считается копией всего предыдущего сообщения. |
| Подпись и адрес кнопки | Отдельно проверяются маркер в подписи и запрещённый тестовый адрес за нейтральной надписью кнопки. |
| Опрос и адрес только в превью | Зафиксирована граница разбора и ручной либо штатный способ контроля; сохранение не считается успешным сканированием. |
| Правка разрешённого сообщения | После добавления маркера или поддерживаемой ссылки происходит ожидаемое действие. |
| Участник и администратор | Статус отправителя записан, исключение для администратора не перепутано с потерей содержимого. |
Меняйте одну переменную за раз. При расхождении сохраните в закрытой заметке ссылку на сообщение, если она доступна, время, тип отправителя, ожидаемый и фактический результат. Для поддержки лучше короткое искусственное воспроизведение, чем полный Telegram update с чужими персональными данными. После проверки удалите временное правило и снимите ограничения с тестовых аккаунтов, если они были наложены.
Что подтверждает этот разбор
Описанные возможности основаны на проверке реализации от 7 октября 2026 года. Она не подтверждает версию, работающую именно в вашей группе, свежий живой тест или поддержку любого будущего формата Telegram. Неподдерживаемые структуры, пределы разбора, ошибки доставки и слишком большие сообщения не позволяют обещать «проверяется абсолютно всё».
Рабочая политика перечисляет поддерживаемые случаи, даёт модераторам способ разобрать остальные и проверяет как нежелательные, так и нормальные сообщения. Если обязанности ещё не распределены, начните с модерации для новичков. Формат меняет место, где нужно искать содержимое; решение по-прежнему определяется правилами сообщества.