Webhook Telegram Bot - Notifications Discourse alimentées par l'IA

:information_source: Résumé Bot Telegram professionnel pour les notifications automatiques sur les nouveaux messages des forums Discourse avec des résumés générés par l’IA à l’aide d’OpenAI GPT-4.1-nano
:hammer_and_wrench: Lien du dépôt GitHub - DigneZzZ/webhook_tg_bot
:open_book: Guide d’installation README_EN.md

Bot Telegram Webhook - Notifications Discourse alimentées par l’IA

Note : Bien qu’il ne s’agisse pas d’un plugin Discourse traditionnel mais plutôt d’un service d’intégration externe, je n’ai pas trouvé de catégorie plus appropriée pour partager cet outil utile avec la communauté Discourse. Ce bot fonctionne aux côtés de votre forum Discourse pour offrir des capacités de notification améliorées.

Fonctionnalités

:link: Intégration Discourse

  • Traite les webhooks pour les événements de création de sujet et de message

  • Prend en charge tous les types de contenu Discourse

  • Combine les données de sujet et de message dans des messages unifiés

  • Vérification de la signature du webhook pour la sécurité (HMAC-SHA256)

:robot: Analyse de contenu par IA

  • Intégration OpenAI GPT-4.1-nano pour des résumés de messages intelligents

  • Analyse de contenu contextuelle avec nettoyage HTML

  • Modèles spéciaux pour différents types de contenu

  • Filtrage et traitement automatique du contenu

:mobile_phone: Diffusion avancée sur Telegram

  • Envoi de notifications au chat principal ou à des sujets de forum spécifiques

  • Mappage de catégories - achemine différentes catégories Discourse vers différents sujets Telegram

  • Préfixes d’émojis de rôles d’utilisateur (:crown: Admin, :shield: Modérateur, :star: Staff, etc.)

  • Mise en forme intelligente des messages HTML

:bullseye: Filtrage et contrôle flexibles

  • Surveille des catégories spécifiques ou toutes les catégories

  • Ignore les catégories indésirables avec un système de priorité

  • Bloque les utilisateurs du bot (discobot, chatbot, utilisateurs système)

  • Notifications de section premium avec alertes d’abonnement

:rocket: Prêt pour la production

  • Conteneurisation Docker avec vérifications de l’état de santé

  • Pipeline CI/CD GitHub Actions

  • Intégration Systemd pour le démarrage automatique

  • Journalisation et surveillance complètes

  • Arrêt et gestion des erreurs en douceur

Configuration

1. Configuration du webhook Discourse

  1. Accédez à Admin → API → Webhooks

  2. Cliquez sur Nouveau Webhook

  3. Configurez :


URL du payload : https://your-domain.com/webhook

Type de contenu : application/json

Secret : your_webhook_secret

Quels événements : Événement de sujet + Événement de message

2. Configuration du bot Telegram

  1. Créez un bot via @BotFather

  2. Obtenez l’ID du chat pour votre groupe/canal

  3. Configurez éventuellement des sujets de forum pour le routage des catégories

3. Configuration de l’environnement

Créez un fichier .env avec les paramètres requis (voir la configuration complète dans le dépôt).

4. Déploiement Docker


# Installation rapide

curl -fsSL https://raw.githubusercontent.com/dignezzz/webhook_tg_bot/main/install.sh -o install.sh

chmod +x install.sh

./install.sh install

5. Configuration du proxy inverse

Pour la prise en charge des webhooks sur votre domaine, configurez un proxy inverse (nginx/Apache) pour achemine les requêtes de webhook vers le conteneur du bot sur le port 8080.

Exemple de configuration nginx :


location /webhook {

proxy_pass http://localhost:8080/webhook;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

}

Paramètres

Nom Description Défaut Requis
TELEGRAM_BOT_TOKEN Jeton du bot de @BotFather - :white_check_mark:
TELEGRAM_CHAT_ID ID du groupe/canal cible - :white_check_mark:
TELEGRAM_THREAD_ID ID du sujet principal (0 = chat principal) 0 :cross_mark:
WEBHOOK_SECRET Clé secrète pour la vérification de la signature - :white_check_mark:
WEBHOOK_PORT Port du serveur webhook 8080 :cross_mark:
WEBHOOK_PATH Chemin du point d’accès webhook /webhook :cross_mark:
OPENAI_API_KEY Clé API OpenAI pour les résumés - :cross_mark:
OPENAI_MODEL Modèle GPT à utiliser gpt-4.1-nano :cross_mark:
BASE_URL URL de votre forum Discourse - :cross_mark:
MONITORED_CATEGORIES IDs des catégories à surveiller (séparés par des virgules) all :cross_mark:
IGNORED_CATEGORIES IDs des catégories à ignorer (séparés par des virgules) none :cross_mark:
IGNORED_USERS IDs des utilisateurs à ignorer (séparés par des virgules) none :cross_mark:
PREMIUM_CATEGORIES IDs des catégories premium (séparés par des virgules) none :cross_mark:

Mappage Catégorie-Sujet (Facultatif) :


TELEGRAM_THREAD_ID_1=123456
THREAD_CATEGORIES_1=1,2,3
TELEGRAM_THREAD_ID_2=234567
THREAD_CATEGORIES_2=4,5

Exemple de format de message


👤 👑 Administrator a créé un nouveau message : Guide de configuration Docker

📋 L'auteur partage une solution au problème de configuration du conteneur Docker et explique le processus étape par étape pour résoudre les erreurs de connexion à la base de données.

🔗 Lien du sujet (https://forum.example.com/t/topic/123)

🏷 Tags : #docker, #database, #troubleshooting

💎 Cette section est disponible uniquement sur abonnement.

Installation et gestion

Le bot comprend un script de gestion pour des opérations faciles :


whtg status # Vérifier l'état du bot

whtg start # Démarrer le bot

whtg stop # Arrêter le bot

whtg restart # Redémarrer le bot

whtg logs # Afficher les journaux

whtg update # Mettre à jour vers la dernière version

whtg uninstall # Supprimer le bot

Prise en charge linguistique

Note : Actuellement, tous les messages de l’interface et la documentation sont en russe, mais la prise en charge de la langue anglaise sera ajoutée dans un avenir proche. Le bot fonctionne avec n’importe quel forum Discourse, quelle que soit la langue.

Exigences techniques

  • Docker et Docker Compose

  • Proxy inverse (nginx/Apache) pour la prise en charge du domaine webhook

  • Clé API OpenAI (facultatif, pour les résumés IA)

  • Certificat HTTPS (recommandé pour la production)

Support et contributions

Licence : Licence MIT

2 « J'aime »