Light Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

dimonier/tgimguard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

9 Commits

Repository files navigation

tgimguard -- anti-spam bot po tekstu s kartinok v Telegram

Bot dlia grupp/supergrupp: izvlekaet tekst s izobrazhenii cherez OpenAI i proveriaet na nalichie zapreshchionnogo teksta. Esli tekst soderzhit zapreshchionnye stroki, to udaliaet soobshchenie, banit otpravitelia i uvedomliaet vladel'tsa chata.

Vozmozhnosti

  • OCR cherez OpenAI: izvlechenie vidimogo teksta iz izobrazhenii
  • Fil'tratsiia po pravilam: podderzhka prostykh strok i reguliarnykh vyrazhenii
  • Avtodeistviia: udalenie soobshcheniia, ban pol'zovatelia, uvedomlenie vladel'tsa chata
  • Bezopasnost' i loggirovanie: rotatsiia logov v logs/tgimguard.log

Trebovaniia

  • Python: >= 3.12
  • Telegram Bot Token
  • OpenAI API Key (ili sovmestimyi API, esli meniaete OPENAI_BASE_URL)

Bystryi start

  1. Sozdaite konfig na osnove primera: env.example -> .env
  2. Zapolnite .env: kak minimum TELEGRAM_BOT_TOKEN, OPENAI_BASE_URL i OPENAI_API_KEY
  3. Ustanovite zavisimosti s ispol'zovaniem uv:
uv sync
  1. Zapustite bota:
uv run main.py
  1. Dobav'te bota v gruppu i vydaite emu prava administratora (udalenie soobshchenii, ban pol'zovatelei).
  2. Vladelets gruppy dolzhen zapustit' bota (/start), chtoby bot mog uvedomliat' ego o spame.

Peremennye okruzheniia (.env)

  • TELEGRAM_BOT_TOKEN -- token bota (obiazatel'no)
  • OPENAI_API_KEY -- kliuch OpenAI (obiazatel'no)
  • OPENAI_BASE_URL -- bazovyi URL API (po umolchaniiu https://api.openai.com/v1)
  • OPENAI_MODEL_ID -- model', po umolchaniiu gpt-4o-mini

Pravila fil'tratsii

Pravila fil'tratsii opredeleny v YAML-failakh v kataloge rules/. Kazhdyi fail *.yaml -- eto odno pravilo.

Struktura pravila:

name: nazvanie pravila
min_matches: 2
patterns:
- type: literal
value: stroka dlia poiska
- type: regex
value: reguliarnoe vyrazhenie

Parametry:

  • name -- chelovekochitaemoe nazvanie pravila (optsional'no)
  • min_matches -- minimal'noe kolichestvo unikal'nykh patternov, kotorye dolzhny sovpast', chtoby pravilo srabotalo
  • patterns -- massiv patternov dlia proverki:
    • type: literal -- prostaia podstroka, poisk bez uchiota registra
    • type: regex -- reguliarnoe vyrazhenie Python (flagi cherez inline, naprimer (?i))

Logika srabatyvaniia:
Pravilo srabatyvaet, esli v tekste naideno >= min_matches unikal'nykh patternov.

Primery:

Prostoe pravilo (1 pattern):

name: buy now spam
min_matches: 1
patterns:
- type: literal
value: buy now

Kombinirovannoe pravilo (neskol'ko patternov):

name: voditel'skie prava
min_matches: 2
patterns:
- type: literal
value: voditel'sk
- type: literal
value: prav
- type: literal
value: udostoverenie

V etom primere pravilo srabotaet, esli naideny khotia by 2 iz 3 slov.

  • IMAGE_COMPRESSION_THRESHOLD_KB -- porog razmera, vyshe kotorogo izobrazhenie resaizitsia i preobrazuiutsia v JPEG
  • IMAGE_RESIZE_WIDTH_PX -- shirina v pikseliakh pri resaize
  • CHAT_OWNER_ID -- ID vladel'tsa chata dlia uvedomlenii (optsional'no, inache avtoopredelenie)

Kak eto rabotaet

  1. Pol'zovatel' otpravliaet izobrazhenie v gruppovoi chat
  2. Bot skachivaet fail, pri neobkhodimosti szhimaet/resaizit
  3. Otpravliaet v OpenAI i poluchaet izvlechionnyi s izobrazheniia tekst
  4. Proveriaet tekst na sootvetstvie liubomu pravilu iz rules/
  5. Pri sovpadenii: udaliaet soobshchenie, banit otpravitelia, uvedomliaet vladel'tsa gruppy

Logi

  • Fail: logs/tgimguard.log (sutochnaia rotatsiia, khranenie 30 dnei)

Primechaniia

  • Bot reagiruet tol'ko v chatakh tipov group i supergroup
  • Dlia korrektnoi raboty nuzhny prava: udalenie soobshchenii i ban pol'zovatelei
  • Chem proshche i koroche spisok pravil, tem men'she lozhnykh srabatyvanii

About

Telegram anti-spam bot that checks images for prohibited text, deletes SPAM and bans spammers

Resources

Readme

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages