Pont de chat Discourse (Telegram)

Ok, j’ai corrigé ça.

1 « J'aime »

Le plugin bridge est désormais compatible avec la dernière version de discourse testée avec succès.

5 « J'aime »

J’ai hâte qu’il prenne en charge QQ par la suite

1 « J'aime »

D’après ce que je comprends des derniers messages du sujet : le plugin fonctionne. Veuillez me dire si je suis dans le vrai.

Puis-je demander si ce plugin fonctionne avec les thèmes Telegram (sections de chat) ?

Merci beaucoup pour votre travail.

Bienvenue sur Meta :wave:

Les derniers messages ont été rédigés avant la dernière modification du premier message, où la balise broken a été ajoutée.

Je m’attendrais donc à ce que ce soit toujours cassé.

3 « J'aime »

Je suis heureux d’annoncer que ce plugin est à nouveau compatible avec la dernière version de Discourse :rocket:

9 « J'aime »

J’adore ça. Je n’utilise pas Telegram, mais j’adore l’opportunité que ce projet nous permettra enfin de nous intégrer à Matrix <3

Y a-t-il un moyen d’obtenir les logs du plugin ? @Lhc_fl
J’essaie de comprendre pourquoi il ne fonctionne que dans un sens (Discourse → Telegram). Le bot a bien sûr la permission d’accéder aux messages du groupe. Il n’y a pas de logs apparents dans la console :thinking:

Edit : J’essayais de résoudre ce problème, et apparemment, il est pratiquement impossible d’obtenir des logs appropriés en production.

Même les erreurs ou les avertissements liés au plugin ne sont pas enregistrés dans production.log / production_error.log.

Je suspecte un problème lié aux webhooks, et d’après ce que je vois, le plugin n’est pas désactivé en cas d’erreur ?

Comme cela fonctionne dans un sens, les identifiants fournis sont certainement corrects. Si quelqu’un a une idée sur la façon d’obtenir les logs écrits par le plugin, merci de me le faire savoir.

Il supprime simplement INFO et DEBUG, je suis à peu près sûr que Rails.logger.error laissera des journaux d’erreurs en production :thinking: Les autres journaux ne sont pas censés apparaître en production par conception.

J’ai écrit ce plugin il y a longtemps, peut-être que je devrais vérifier sa logique de webhook.

Essayez d’accéder à cette URL dans votre navigateur et voyez quel est le résultat ?

https://api.telegram.org/bot{token}/setWebhook?url=https://your.discourse.site/chat-bridge/telegram/hook/123456

Remplacez {token} par votre jeton de bot.

Si le webhook est correctement configuré, il devrait recevoir un message ok.

Oui, je peux confirmer que cela fonctionne :

{"ok":true,"result":true,"description":"Webhook was set"}

C’est étrange. Et si la création du message échoue, le journal d’erreurs sera imprimé ici, vous devriez pouvoir le voir sur https://your.discourse.site/logs

Est-ce vraiment un problème de permissions ? Si vous répondez directement au message ponté créé par le bot Telegram, cela réussira-t-il ?

1 « J'aime »

Je vois en fait quelques journaux liés au module dans /logs :

[Discourse -> Telegram] Échec dans chat_message_created :
Inspection de l'objet résultat de ChatBridgeModule::Provider::Telegram::Services::HandleDiscourseMessage :

[1/8] [params] default (0,0555 ms) ✅
[2/8] [model] bot (0,0178 ms) ✅
[3/8] [step] ensure_bot_valid ❌

(5 étapes supplémentaires non affichées car le flux d'exécution s'est arrêté avant de les atteindre)

Pourquoi cela a échoué :

INVALID_BOT
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'

activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'

activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'

activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'

activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'

/var/www/discourse/plugins/discourse-chat-bridge/lib/chat_bridge_module/provider/telegram/bridge.rb:51:in `block (3 levels) in <main>'

/var/www/discourse/lib/scheduler/defer.rb:125:in `block in do_work'

rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'

rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'

/var/www/discourse/lib/scheduler/defer.rb:119:in `do_work'

/var/www/discourse/lib/scheduler/defer.rb:105:in `block (2 levels) in start_thread'

Mais c’était hier et cela ne s’est pas reproduit depuis, donc je suppose que cela avait à voir avec l’ajout du bot et que toutes les exigences n’étaient pas encore remplies. Après cela, plus aucun journal du plugin de pont. Sauf, bien sûr, si cela a empêché tout fonctionnement par la suite :confused:

Non, cela ne fonctionne pas.

Je me demande s’il est possible de regarder le secret créé par le plugin, car cela permettrait une création manuelle ?

Je viens de remarquer une chose en examinant les journaux Nginx (car l’appel webhook doit se produire ici)

[26/Jan/2025:12:05:39 +0000] "forum.xyz.org" 91.108.5.109 "POST /chat-bridge/telegram/hook/123456 HTTP/1.1" "-" "chat_bridge_module/telegram_webhook/hook" 403 5865 "-" 0.009 0.010 "-" "-" "-" "-" "-" "-" "-" "-"

C’est le webhook que j’ai créé manuellement plus tôt, n’est-ce pas ?

… et nous avons avancé d’un pas. J’ai réglé manuellement le chemin du secret via la console Rails et adapté le webhook manuellement. La requête POST vers Discourse réussit maintenant. Et maintenant, il y a une erreur réelle :

/var/www/discourse/plugins/discourse-chat-bridge/lib/chat_bridge_module/provider/telegram/services/handle_tg_message.rb:110:in `message_creation_succeed'

/var/www/discourse/lib/service/base.rb:156:in `instance_exec'

/var/www/discourse/lib/service/base.rb:156:in `run_step'

/var/www/discourse/lib/service/base.rb:199:in `run_step'

/var/www/discourse/lib/service/base.rb:139:in `block in call'

/var/www/discourse/lib/service/base.rb:165:in `with_runtime'

/var/www/discourse/lib/service/base.rb:139:in `call'

/var/www/discourse/lib/service/base.rb:457:in `block in run!'

/var/www/discourse/lib/service/base.rb:457:in `each'

/var/www/discourse/lib/service/base.rb:457:in `run!'

/var/www/discourse/lib/service/base.rb:450:in `run'

internal:kernel:90:in `tap'

/var/www/discourse/lib/service/base.rb:302:in `call'

/var/www/discourse/plugins/discourse-chat-bridge/lib/chat_bridge_module/provider/telegram/bridge.rb:9:in `block (3 levels) in <main>'

/var/www/discourse/lib/scheduler/defer.rb:125:in `block in do_work'

rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'

rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'

/var/www/discourse/lib/scheduler/defer.rb:119:in `do_work'

/var/www/discourse/lib/scheduler/defer.rb:105:in `block (2 levels) in start_thread'
Exception de tâche : Dans params.message creation : Inspection de l'objet résultat de Chat::CreateMessage :

[ 1/28] [options] default (0,0168 ms) ✅
[ 2/28] [policy] no_silenced_user (0,0148 ms) ✅
[ 3/28] [policy] accept_blocks (0,0051 ms) ✅
[ 4/28] [params] default (0,0742 ms) ✅
[ 5/28] [model] channel (0,7018 ms) ✅
[ 6/28] [step] enforce_membership (0,013 ms) ✅
[ 7/28] [model] membership ❌

(21 étapes supplémentaires non affichées car le flux d'exécution s'est arrêté avant de les atteindre)

Pourquoi cela a échoué :

/var/www/discourse/lib/service/base.rb:184:in `run_step': Model not found (ArgumentError)

raise ArgumentError, "Model not found"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
from /var/www/discourse/lib/service/base.rb:139:in `block in call'
from /var/www/discourse/lib/service/base.rb:165:in `with_runtime'
from /var/www/discourse/lib/service/base.rb:139:in `call'
from /var/www/discourse/lib/service/base.rb:457:in `block in run!'
from /var/www/discourse/lib/service/base.rb:457:in `each'
from /var/www/discourse/lib/service/base.rb:457:in `run!'
from /var/www/discourse/lib/service/base.rb:450:in `run'
from internal:kernel:90:in `tap'
from /var/www/discourse/lib/service/base.rb:302:in `call'
from /var/www/discourse/plugins/discourse-chat-bridge/lib/chat_bridge_module/provider/telegram/services/handle_tg_message.rb:91:in `fetch_message_creation'
from /var/www/discourse/lib/service/base.rb:156:in `instance_exec'
from /var/www/discourse/lib/service/base.rb:156:in `run_step'
from /var/www/discourse/lib/service/base.rb:182:in `run_step'
from /var/www/discourse/lib/service/base.rb:139:in `block in call'
from /var/www/discourse/lib/service/base.rb:165:in `with_runtime'
from /var/www/discourse/lib/service/base.rb:139:in `call'
from /var/www/discourse/lib/service/base.rb:457:in `block in run!'
from /var/www/discourse/lib/service/base.rb:457:in `each'
from /var/www/discourse/lib/service/base.rb:457:in `run!'
from /var/www/discourse/lib/service/base.rb:450:in `run'
from internal...

Mais cela ressemble davantage à un problème de configuration :thinking: Je me demande pourquoi j’ai besoin d’ajuster.

Oh, ce n’est pas ce qui était prévu, je suppose que j’ai fait une erreur ici en m’adaptant à la nouvelle version de Discourse. Je vais y jeter un œil.

2 « J'aime »

Merci ! Faites-moi savoir s’il y a quoi que ce soit que je puisse faire pour aider.

Salut @Lhc_fl Je voulais gentiment demander s’il y avait toujours des projets pour corriger cela :slight_smile:

1 « J'aime »