Bot Telegram · Python async

Il garde votre groupe propre.

5 msg / 10 s → warn 10 arrivées / min → slow mode captcha 3 essais · 3 min 3 warns → ban 24 h SQLite · multi-groupes
0
commandes d'administration
0 boutons
dont une seule bonne réponse
0s
de délai avant expulsion
0
filtres anti-spam actifs en continu
// Protection en couches

Tout ce qu'un modérateur fait à la main, en automatique.

Chaque message entrant traverse une chaîne de filtres. Chaque arrivée déclenche une vérification. Chaque action est journalisée.

Anti-spam & anti-flood

Fenêtre glissante de 10 secondes : plus de 5 messages, messages strictement identiques répétés, invitations et liens non whitelistés — le message part à la poubelle et l'auteur reçoit un avertissement.

handlers/moderation.py → flood · repeat · links · blacklist

Captcha à l'arrivée

Message privé avec un calcul et 4 boutons. 3 minutes au compteur, 3 essais maximum, puis expulsion ou bannissement de 24 h.

handlers/verification.py

Anti-raid

Plus de 10 arrivées en une minute ? Le slow mode s'active tout seul pendant 5 minutes et le canal de logs reçoit l'alerte.

RAID_THRESHOLD=10 · RAID_WINDOW=60

Chasse aux bots

Les vrais bots sont bannis à l'entrée. Les comptes au nom douteux déclenchent une alerte — ou un kick immédiat selon la configuration.

user.is_bot + heuristiques de username

Logs structurés

Date, admin responsable, cible, raison : chaque sanction part dans le canal dédié, formatée et emoji selon le type d'action.

/setlogchannel #canal

Persistance

Warns, bans, listes noires, whitelist et configuration par groupe sont stockés en SQLite asynchrone. Un bot, autant de groupes que nécessaire.

aiosqlite · 7 tables indexées

Commandes d'administration complètes

Warn, mute, ban, kick, purge, slow mode, listes, statistiques — réservées aux admins du groupe, avec durées libres (30m, 1h, 2d) et système d'avertissements à 3 paliers.

utils/permissions.py → @admin_only
// Essayez maintenant

Le captcha, pour de vrai.

Ce mini-module reprend exactement le comportement du bot : 4 réponses possibles, une seule correcte, 3 essais, et un chrono de 3 minutes.

GuardBot · message privé —
GGuardBot
🛡️ Vérification requise
Pour accéder au groupe, réponds à cette question :
Combien font 0 + 0 ?
essais : 0/3 03:00
En attente de votre réponse…

Chaque nouvel arrivant reçoit ce message en privé. S'il bloque les MP du bot, la question est republiée dans le groupe — la vérification n'est jamais bloquée.

  • 1Bonne réponse → le bot supprime le captcha et publie le message de bienvenue personnalisé dans le groupe.
  • 2Mauvaise réponse → le compteur d'essais remonte, le clavier reste actif.
  • 33 échecs → bannissement automatique de 24 heures, journalisé.
  • 43 minutes sans réponse → expulsion du groupe, sans laisser de trace.
// Cycle de vie

De l'arrivée au message de bienvenue.

01

L'utilisateur rejoint

Le bot reçoit la mise à jour chat_member, compte l'arrivée dans la fenêtre anti-raid et dédoublonne le flux.

détection en < 1 s
02

Contrôle d'identité

Un vrai bot est banni sur-le-champ. Un profil à heuristique douteuse déclenche une alerte dans les logs. Un admin exempté passe son chemin.

is_bot + heuristiques
03

Captcha envoyé

Question mathématique, 4 boutons mélangés, chrono de 180 secondes. Repli automatique dans le groupe si le MP est bloqué.

3 essais maximum
04

Échec → sanction

Timeout = kick. Trois mauvaises réponses = ban 24 h. L'événement est écrit dans la base et poussé dans le canal de logs.

kick / ban 24 h
05

Bienvenue

Réponse correcte : le captcha disparaît, le message d'accueil personnalisé part dans le groupe et l'accès est ouvert.

/setwelcome pour personnaliser
// Référence

17 commandes, zéro friction.

Toutes réservées aux administrateurs du groupe. Une cible se désigne en répondant au message, par @username ou par ID.

/warn @user [raison]Avertissement — 3 warns = ban automatique 24 h
/unwarn @userRetire le dernier avertissement
/warns @userHistorique détaillé des avertissements
/mute @user [durée] [raison]Coupe la parole (défaut 1 h, ex. 1h, 2d)
/unmute @userRétablit la parole
/ban @user [durée] [raison]Bannissement — permanent par défaut
/unban @userLève le bannissement
/kick @user [raison]Expulsion sans laisser de trace
/purge [N]Supprime les N derniers messages (max 100)
/slowmode [secondes]Active ou désactive le mode lent
/statsMembres, warns actifs, bans en cours, compteurs
/blacklist add|remove [mot]Liste noire de mots → suppression + warn
/whitelist add|remove [valeur]Domaines et canaux Telegram autorisés
/setlogchannel #canalCanal de logs dédié (ou off)
/setwelcome [texte]Message d'accueil avec {user} et {group}
/resetwelcomeRétablit le message d'accueil par défaut
/helpAide complète, en français, toujours à jour
// Mise en place

Opérationnel en 4 commandes.

Python 3.11+ suffit. Aucune clé d'API tierce, aucune dépendance externe — seule l'API Telegram est appelée.

terminal
$ git clone https://github.com/salabertenzo36-glitch/guardbot.git
$ cd guardbot && pip install -r bot/requirements.txt
$ cp bot/.env.example bot/.env   # BOT_TOKEN, ADMIN_IDS
$ python bot/main.py
1
Créez le bot @BotFather → /newbot, copiez le token dans bot/.env. BOT_TOKEN=123456:ABC-DEF…
2
Ajoutez-le au groupe En tant qu'administrateur, avec les droits : supprimer, bannir, restreindre. requis pour les mises à jour chat_member
3
Configurez ADMIN_IDS pour les super-admins, /setlogchannel pour le journal. le bot tourne en polling : aucun port à exposer
4
Hébergez gratuitement Dockerfile fourni → Northflank Sandbox (gratuit, sans carte, toujours allumé). voir DEPLOIEMENT.md dans le dépôt
// Sous le capot

Modulaire, async, prêt à héberger.

python-telegram-bot v20 (Application builder), aiosqlite, python-dotenv. Quatre dossiers, aucune dépendance cachée.

bot/ ├── main.py # Application builder · polling ou webhook ├── config.py # TOKEN, ADMIN_IDS, seuils (.env) ├── database/ │ ├── db.py # connexion SQLite + schéma │ └── models.py # warns, bans, listes, config, stats ├── handlers/ │ ├── moderation.py # flood · répétitions · liens · mots │ ├── verification.py# captcha · anti-raid · bots │ ├── commands.py # 17 commandes admin │ └── logs.py # journal dédié └── utils/ ├── permissions.py # @admin_only + cache ├── time_parser.py # "1h" "2d" → secondes ├── captcha.py # générateur mathématique ├── actions.py # kick · ban · mute · slow mode └── errors.py # try/except centralisé
Python 3.11+Coroutines partout : aucune requête bloquante, handlers isolés par try/except.
Deux modes de lancementWEBHOOK_URL vide → polling. Renseigné → serveur webhook avec secret optionnel.
Multi-groupes natifChaque table et chaque réglage sont indexés par chat_id.
Cache d'admins 30 sLe bot ne rappelle pas Telegram à chaque message pour vérifier les droits.
Textes intégralement en françaisCommandes, erreurs, logs et messages d'accueil.

Un groupe propre,
en un clic.

Ajoutez @VaultOfficer_bot à votre groupe : il prend la main sur le captcha, le spam et les raids immédiatement. Aucune configuration minimale requise.

gratuit · open source hébergement Northflank sans carte textes en français
Ajouter le bot à mon groupe