Bot Telegram · Python async

Il garde votre groupe propre.

Anti-flood, anti-raid, liste noire, captcha envoyé en message privé et chaque sanction journalisée — en groupe comme en canal, sans configuration.

5 msg / 10 s → warn 10 arrivées / min → slow mode captcha 3 essais · 3 min 3 warns → ban 24 h groupes + canaux 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.

01

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
02

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 · groupes + canaux
03

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
04

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
05

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
06

Persistance

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

aiosqlite · 8 tables indexées
07

Commandes d'administration

Warn, mute, ban, purge, slow mode, listes, statistiques — réservées aux admins. Dans un canal : /post, /pin, bannissement des abonnés, réponses en MP. Durées libres (30m, 1h, 2d).

utils/permissions.py → @admin_only · @channel_only
08

Textes en français

Commandes, erreurs, messages d'accueil et journaux : le bot ne parle qu'une seule langue, de bout en bout.

HELP_TEXT · config.py
// 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 ou abonné reçoit ce message en privé. En groupe, s'il bloque les MP, la question est republiée dans le chat ; dans un canal, jamais de message public — le bot alerte ses logs et laisse passer.

  • 1Bonne réponse → le captcha disparaît, le bienvenue part dans le groupe (ou en MP dans un canal) et l'abonné est marqué vérifié.
  • 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é — jamais dans un canal.

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 (ou en MP dans un canal) et l'accès est ouvert.

/setwelcome pour personnaliser
// Référence

21 commandes, zéro friction.

Réservées aux administrateurs, en groupe comme en canal — dans un canal, les réponses arrivent en message privé. 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 ou daté (abonné exclu du canal)
/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
/statsGroupe : membres, warns, bans — canal : abonnés, vérifiés, posts
/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é (alias /logchannel, ou off)
/setwelcome [texte]Message d'accueil avec {user} et {group}
/resetwelcomeRétablit le message d'accueil par défaut
/verify on|offCaptcha à l'entrée — activé par défaut, groupes et canaux
/post [texte]Publie dans le canal (ou copie le message répondu)
/pin [silent]Épingle le message répondu — groupes et canaux
/unpinDésépingle le message répondu, ou tous les épinglages
/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 ou au canal En tant qu'administrateur : supprimer, bannir, restreindre — publier et épingler pour un canal. 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, vérifications, config, stats ├── handlers/ │ ├── moderation.py # flood · répétitions · liens · mots │ ├── verification.py# captcha groupes + canaux · anti-raid │ ├── commands.py # commandes admin │ ├── channel.py # /post · /pin · /unpin │ └── logs.py # journal dédié └── utils/ ├── permissions.py # @admin_only / @channel_only ├── 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 et multi-canauxChaque 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 ou à votre canal : il prend la main sur le captcha, le spam, les raids — et publie ou épingle sur commande. Aucune configuration minimale requise.

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