Skip to content

TiraelSedai/ClubDoorman

Repository files navigation

Антиспам для телеграма

Изначально разрабатывался чтобы решить проблему со спамерами в чатах Вастрик.Клуба, но может использоваться и в чатах других форков, да и просто в любых больших чатах.

Принцип работы

  • Пользователи Клуба с привязанным ботом автоматически добавляются в доверенные
  • При эвенте "пользователь вошёл в чат" выдаётся простенькая капча
  • Если пользователь уже в доверенных, то все проверки пропускаются
  • Если пользователь в известных списках спамеров - нафиг
  • Если в сообщении многовато эмодзи - нафиг
  • Если в сообщении есть слова, которые маскируются под русские но имеют английские буквы внутри - нафиг. Именно этот аспект сейчас затюнен в основном на русскоязычные чаты и может сработать на нормальные слова из языков которые пишутся кириллицей, но пока что все известные кейсы добавлены в тесты.
  • Если в сообщении есть стоп-слова типа "заработок в сети" - нафиг
  • Дальше сообщение очищается от эмодзи, пунктуации, диакритиков и скармливается ML. Если ML считает что спам - нафиг.
  • Если пользователь написал несколько нормальных сообщений, он добавляется в доверенные - спамеры крайне редко "втираются в доверие" и обычно выдают всё первым-вторым сообщением
  • Автоматически бот только удаляет сообщения, банятся пользователи только вручную из админки чтобы снизить урон ложнопозитивных срабатываний
    • Кроме блеклиста. Такие банятся сразу, но это можно выключить
  • Если кого-то в чате забанил не бот, в админку приходит уведомление, возможно бот пропустил спам и его стоит добавить в датасет

Команды админки

Все команды вызываются реплаем на другое сообщение

  • /spam - добавляет сообщение в датасет спама
  • /ham - добавляет сообщение в датасет не-спама
  • /check - прогоняет сообщение через все проверки

Конфиг

Создаём чат-админку, запоминаем ID. Переменные среды:

  • DOORMAN_BOT_API: Токен телеграм бота. Обязательно
  • DOORMAN_ADMIN_CHAT: ID чата админки. Обязательно
  • DOORMAN_CLUB_SERVICE_TOKEN: Сервис токен для Клуба, создаётся тут: https://vas3k.club/apps/. Если переменная не задана, автоматический аппрув людей из Клуба пропускается.
  • DOORMAN_CLUB_URL: Базовый URL для форков Клуба, например https://rationalanswer.club/
  • DOORMAN_BLACKLIST_AUTOBAN_DISABLE: Установить в true или 1 чтобы бот не банил людей (не из Клуба, не approved, из блеклиста) при заходе сразу
  • DOORMAN_LOW_CONFIDENCE_HAM_ENABLE: Установить в true или 1 чтобы отсылать в админку не-спам который имеет низкий конфиденс скор, полезно для чатов где спамеры постоянно проверяют качество ML на прочность
  • DOORMAN_CHANNELS_AUTOBAN_DISABLE: Установить в true или 1 чтобы бот не банил сообщения от имени каналов (кроме тех, которые привязаны к текущей группе)
  • DOORMAN_APPROVE_BUTTON: Установить в true или 1 чтобы к каждому удалённому сообщению добавлялась опция "это свой, знакомый, завсегдатай"

Спасибо

Translation

If you're willing to do the heavy lifting of translating all the text of this bot to other languages, please let me know first before running headfirst and creating a PR.

About

Telegram anti-spam bot

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages