Эти 1749 сообщений пришли с аккаунтов, которые наша сеть уже пометила, — по 129 чатам, меньше чем за полчаса. Это лёгкая половина задачи: про такие аккаунты всё известно заранее. Тяжёлая половина — сообщение, которое выглядит совершенно обычным, пока не заметишь, что оно четвёртое одинаковое за час и все четыре с аккаунтов недельной давности.
Выбор антиспам-бота для Telegram — это в основном вопрос, с какой из половин вы воюете.
Три вида спама, и умирают они по-разному
Текстовый спам — очевидный: реферальные ссылки, крипта, «заработок из дома», один и тот же абзац в сорока чатах. У него есть видимые признаки — ссылка, слово, номер телефона, — поэтому правило по содержимому его ловит.
Спам аккаунтами текста не имеет вообще. Пятьдесят одноразовых аккаунтов входят за полторы минуты, садятся и накручивают счётчик участников. Кто-то из них потом напишет, многие — никогда, потому что накрутка счётчика и была задачей. Фильтр по словам не может пометить аккаунт, который ничего не сказал.
Возвращающиеся нарушители — те, что стоят людям денег. Отлежавшийся аккаунт, живая аватарка, правдоподобный ник, бан в одиннадцати других каналах за прошлый месяц. Капчу он проходит не вспотев, неделю пишет что-то безобидное, а потом делает то, за чем пришёл.
Что реально закрывают бесплатные решения
Скажем прямо, потому что подборки обычно этого не говорят: если ваша проблема — один человек, который вставляет реферальные ссылки, бесплатный бот её решает, и деньги лучше оставить себе.
- Встроенный антиспам Telegram. В супергруппах от 200 участников в настройках админа есть переключатель агрессивного фильтра. Один тумблер, никаких настроек, ложные срабатывания на живых людях случаются — но это бесплатно и включить стоит.
- Rose, Combot, GroupHelp, Ирис. Стоп-слова, фильтр ссылок, варн / мут / бан, приветствия, антифлуд по сообщениям в секунду. Зрелые, документированные, бесплатные на том тарифе, которого большинству чатов хватает.
- Своё на сервере — вроде umputun/tg-spam с GitHub. Если вам не страшны VPS и конфиг, это честно хороший вариант: стоит только вечеров, зато правила целиком ваши.
Форма у всех одна: сообщение пришло, правило его прочитало, бот отреагировал. Для текстового спама это верный ответ. Для двух других видов — нет.
Фильтр по содержимому судит только то, что аккаунт уже написал. Половина спама в Telegram решается до того, как кто-то напечатал первое слово.
Три дыры
Вступления. Антифлуд, считающий сообщения в секунду, ничего не знает про аккаунты в секунду. Прогон спама ссылками, который заходит двадцатью аккаунтами за минуту, останавливают на входе, а не на клавиатуре.
Комментарии. На этом спотыкается больше владельцев каналов, чем на всём остальном. Комментарии под постами живут не в канале — Telegram кладёт их в отдельную связанную группу обсуждения со своими участниками и своим списком админов. Добавили бота в канал — он не увидит ни одного комментария. Поэтому 561 из тех 1749 помеченных сообщений спокойно лежали в комментариях: боты, которые должны были их поймать, находились не в том чате.
История. Бот, который видит только вашу группу, ничего не знает об отправителе, собиравшем баны по всему Telegram последнюю неделю. Эта информация существует — но только если кто-то смотрит больше чем на один чат.
Как устроены правила в TGuard
TGuard читает каждое сообщение в защищённом чате и в его комментариях и сверяет с правилами, которые вы задаёте на странице настроек конкретного чата. Правил сейчас три:
- Стоп-слова — подстрокой или словом целиком, выбор для каждого слова свой. «Слово целиком» не даст правилу на «кран» срабатывать на «экране», а подстрока ловит нарочно исковерканные написания, которыми обходят простые фильтры.
- Фильтр ссылок —
http://, голые домены,t.meиtelegra.ph. По умолчанию выключен: полно живых чатов, которые держатся на том, что люди кидают ссылки. - Правило известного нарушителя. Аккаунт, забаненный в пяти и более каналах сети, помечен, и его сообщение считается спамом независимо от текста. Это тот слой, которого у бота, живущего в одной группе, не может быть в принципе.
У каждого правила своя реакция: записать, удалить сообщение или удалить и забанить. Новые правила намеренно включаются в режиме «только записывать». Сутки смотрите, что правило удалило бы, и только потом разрешаете ему удалять — потому что самый быстрый способ угробить живой чат это одно неосторожное стоп-слово, срабатывающее на обычном разговоре. Плюс жёсткий потолок на число срабатываний одного правила в чате: превысило — правило само встаёт на паузу и пишет предупреждение, вместо того чтобы вычистить чат, пока вы спите.
Под этим — прежний уровень аккаунтов: капча на входе, лимит вступлений против рейдов и общая база банов, на которой стоит правило нарушителя. Правила по тексту и правила по аккаунтам отвечают на разные вопросы, и задавать стоит оба.
Как включить
- Добавьте @channel_guardian_bot в группу администратором с правами удалять сообщения и банить.
- Защищаете комментарии? Добавьте его в связанную группу обсуждения, а не только в канал — это два разных чата.
- Включите «Защиту от спама» и откройте страницу настроек этого чата.
- Добавьте стоп-слова и решите по фильтру ссылок. Всё оставьте в режиме «только записывать».
- Вернитесь завтра, прочитайте, что попалось, и переведите правила, которым доверяете, на удаление или бан.
Пятый шаг нужен чаще, чем кажется. Список, который вы напишете в первый день, никогда не остаётся тем же: у живого чата свой словарь, и узнать, какие слова опасны, можно только по логу до того, как что-то заряжено. Если вы сравниваете это с обычным ботом для ведения канала, деление простое: за ним приветствия и расписание постов, за нами спам и аккаунты, которые за ним стоят.
Частые вопросы
Это бот, добавленный в чат администратором: он читает входящие сообщения и применяет к ним правила — стоп-слова, фильтр ссылок, лимит флуда, иногда проверку самого отправителя. Когда правило срабатывает, бот удаляет сообщение, выдаёт мут или банит аккаунт — в зависимости от того, как правило настроено.
Для текстового спама — да. Rose, Combot, GroupHelp и Ирис фильтруют слова и ссылки бесплатно, а у самого Telegram в супергруппах от 200 участников есть переключатель агрессивного антиспама. Бесплатные решения заканчиваются на уровне аккаунтов: они не реагируют на пачку вступивших и ничего не знают об отправителе, которого на прошлой неделе забанили в десяти других каналах.
Только если добавить его в связанную группу обсуждения. Комментарии живут не в канале — Telegram держит их в отдельном чате со своими участниками и своими админами. Бот, добавленный только в канал, не увидит ни одного комментария. Именно поэтому спам в комментариях выживает на каналах, владельцы которых считают себя защищёнными.