Skip to content

badhitman/SpamBlockTelegram

Repository files navigation

SpamBlockTelegramGroup

scan telegram message - .NET Core

Инструмент для быстрого анализа входящего сообщения Telegram.

Добавив например такие "сторожевые выражения"

alert_regex=http(s?)://
alert_regex=tg://
alert_regex=@(\w[_\w\d]{3,})

Администраторы группы всегда будут уведомлены если кто то в ваш чат напишет сообщение, содержащее ссылку или Telegram адрес. Если подобные "выражения" добавить/объявить как запрещённые, то бот будет автоматически их удалять из группы/чата, а потом уведомлять об этом событии администраторов.

Возможности библиотеки шире. Можно установить Webhook (используется HMAC Sign) и на стороне стороннего сервера генерировать ответ на основе анализа этой библиотеки.

По умолчанию все сообщения, в которых будут найдены block данные - будут удалены из чата немедленно (сообщения от администратора не удаляются!). Автоматическое удаление сообщений можно отключить (AutoDelete = false)

При тестировании в Debian 9 (VM VirtualBox / .net core 2.2) выявлена проблема. Через некоторое время непрерывной работы в непрерывнй рекурсии опрос телеграм становится невозможным. Имеется ввиду опрос сервера Telegram (в моём случае с паузой в 0,8 секунд между запрсами) начинал стабильно возвращать ошибку. При этом интернет на машине работал исправно. За два дня тестировоания выявлено две проблемы в HTTP_Web_Request.GetRequestStream()

  • HttpWebRequest Resource temporarily unavailable
  • Network is unreachable Network is unreachable

Появившись эти ошибки уже не пропадут до перезапуска приложения. Решение пока что найдено в том что бы непрерывно перезапускать в скрипте, т.е. рекурсия выведена из кода программы в скрипт .sh (под Linux)

#!/bin/sh
echo "Запуск программы..."
while (true)
do
# замените расположение файла и параметры на свои
dotnet "/home/user/Desktop/MySpamBlock/SpamBlockTelegram.dll" configfile=config-stop-spam-bot.ini
sleep 1; # пауза 1 секунду
clear;
done; 

или .cmd под Win.

@echo off
:loop
cls
dotnet ./SpamBlockTelegram.dll "configfile=spam-block-config.ini"
TIMEOUT.EXE 1
goto loop

Пример выше строчка TIMEOUT.EXE 1 работает в версиях win от Vista и выше. Утилита TIMEOUT.EXE появилась примерно тогда. Если требуется работа на win старше Vista - измените механизм паузы (например на ping -n 2 127.0.0.1 > nul)

Настройка и запуск:

  • Создайте текстовый файл рядом с исполняемым файлом. Дайте ему понятное имя файла конфигурации. Например stop-spam-bot-config.ini
  • Запишите туда все необходимые парамеьтры: Пример файла можно посмотреть тут https://github.com/badhitman/SpamBlockTelegram/blob/master/stop-spam-bot-config.ini
  • потом запускайте программу с ключём configfile=stop-spam-bot-config.ini

В файле конфигурации можно указать сколько угодно слов для удаления сообщения или для уведомления администраторов. Уведомления рассылаются администраторам группы.

Администраторы группы для удачного получения уведомлений от бота должны быть "подписаны" на этого бота. Иначе сообщения не будут доставлены. Это обычное правило Telegram, когда бот не может отпарвлять сообщения пользователям, которые ещё не запустили его.

Добавьте своего бота в свою группу (дайте ему права администратора) и бот будет дежурить за вас. Боту нужны права удалять сообщения. Если кто то напишет сообщение в котором есть слова из списка [alert] то это сообщение будет переслано всем администраторам чата

Если кто то напишет сообщение в котором есть слова из списка [block] то это сообщение будет удалено, а администраторам чата будет разослано уведомление

Одного бота можно добавить сразу в несколько групп/чатов. Достаточно добавить его в группу/чат и дать ему права удалять сообщения.

Releases

No releases published

Packages

No packages published

Languages