Discourse Chat Bridge (Telegram)

Ok, ich habe das behoben.

1 „Gefällt mir“

Das Bridge-Plugin ist jetzt mit der neuesten getesteten Version von Discourse kompatibel.

5 „Gefällt mir“

Ich freue mich darauf, dass es danach auch QQ unterstützt

1 „Gefällt mir“

Nach meinem Verständnis aus den neuesten Nachrichten im Thema: das Plugin funktioniert. Bitte sagen Sie mir, ob ich mit dieser Annahme richtig liege.

Darf ich fragen, ob dieses Plugin mit Telegram-Themes (Chat-Bereiche) funktioniert?

Vielen Dank für Ihre Arbeit

Willkommen bei Meta :wave:

Die neuesten Beiträge wurden geschrieben, bevor die letzte Bearbeitung des ersten Beitrags, bei der das Tag broken hinzugefügt wurde, stattgefunden hat.

Daher würde ich erwarten, dass es immer noch kaputt ist.

3 „Gefällt mir“

Ich freue mich, bekannt geben zu können, dass dieses Plugin jetzt wieder mit der neuesten Version von Discourse kompatibel ist :rocket:

9 „Gefällt mir“

Ich liebe das. Ich benutze Telegram nicht, aber ich liebe die Möglichkeit, dass dieses Projekt uns endlich die Integration mit Matrix ermöglichen wird <3

Gibt es eine Möglichkeit, Protokolle des Plugins zu erhalten? @Lhc_fl
Ich versuche herauszufinden, warum es nur in eine Richtung funktioniert (Discourse → Telegram). Der Bot hat natürlich die Berechtigung, auf Gruppen-Nachrichten zuzugreifen. Es gibt keine offensichtlichen Protokolle in der Konsole :thinking:

Bearbeiten: Ich habe versucht, dies zu beheben, und anscheinend ist es in der Produktion praktisch unmöglich, ordnungsgemäße Protokolle zu erhalten.

Nicht einmal Fehler oder Warnungen im Zusammenhang mit dem Plugin werden in production.log / production_error.log protokolliert.

Ich vermute ein Problem mit Webhooks, und dem Anschein nach wird das Plugin bei Fehlern nicht deaktiviert?

Da es in eine Richtung funktioniert, sind die angegebenen Anmeldeinformationen definitiv korrekt. Wenn jemand eine Idee hat, wie man die vom Plugin geschriebenen Protokolle erhält, lassen Sie es mich bitte wissen.

Es unterdrückt nur INFO und DEBUG, ich bin ziemlich zuversichtlich, dass Rails.logger.error Fehlerprotokolle in der Produktion hinterlassen wird :thinking: Andere Protokolle sollen aus Designgründen nicht in der Produktion erscheinen.

Ich habe dieses Plugin vor langer Zeit geschrieben, vielleicht sollte ich seine Webhook-Logik überprüfen.

Versuchen Sie, diese URL in Ihrem Browser aufzurufen und sehen Sie, was die Ausgabe ist?

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

Ersetzen Sie {token} durch Ihr Bot-Token.

Wenn der Webhook korrekt eingerichtet ist, sollte er eine ok-Nachricht erhalten.

Ja, ich kann bestätigen, dass dies funktioniert:

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

Das ist seltsam. Und wenn die Erstellung der Nachricht fehlschlägt, wird das Fehlerprotokoll hier ausgegeben. Sie sollten es unter https://your.discourse.site/logs sehen können.

Könnte es wirklich ein Berechtigungsproblem sein? Wenn Sie direkt auf die von der Telegram-Bot erstellte Nachricht antworten, wird dies dann erfolgreich sein?

1 „Gefällt mir“

Ich sehe jetzt tatsächlich einige Protokolle im Zusammenhang mit dem Modul in /logs:

[Discourse -> Telegram] Fehler bei chat_message_created:
Inspektion des Ergebnisobjekts 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 weitere Schritte nicht angezeigt, da der Ausführungsfluss vorher gestoppt wurde)

Warum es fehlgeschlagen ist:

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'

Aber das ist von gestern und hat sich danach nicht wiederholt, also gehe ich davon aus, dass es mit dem Hinzufügen des Bots zu tun hatte und noch nicht alle Anforderungen erfüllt waren. Danach gab es keine weiteren Bridge-Plugin-Logs. Es sei denn, das hat natürlich dazu geführt, dass es danach nie wieder funktionierte :confused:

Nein, das funktioniert nicht.

Ich frage mich, ob es möglich ist, das vom Plugin erstellte Geheimnis einzusehen, da dies die manuelle Erstellung ermöglichen würde?

Ich habe gerade etwas bemerkt, als ich die Nginx-Logs durchgesehen habe (da der Webhook-Aufruf hier erfolgen muss)

[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 "-" "-" "-" "-" "-" "-" "-" "-"

Das ist der Webhook, den ich zuvor manuell erstellt habe, oder?

… und wir sind einen Schritt weiter. Ich habe den geheimen Pfad manuell über die Rails-Konsole eingestellt und den Webhook manuell angepasst. Der POST-Aufruf an Discourse gelingt jetzt. Und jetzt gibt es einen tatsächlichen Fehler:

/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'
Job exception: In params.message creation: Inspektionsergebnisobjekt von 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 weitere Schritte nicht angezeigt, da der Ausführungsfluss vorher gestoppt wurde)

Warum es fehlgeschlagen ist:

/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...

Aber das sieht eher nach einem Konfigurationsproblem aus :thinking: Ich frage mich, warum ich etwas anpassen muss.

Oh, das ist nicht erwartet, ich schätze, ich habe hier einen Fehler gemacht, als ich mich an die neue Version von Discourse angepasst habe. Ich werde es mir ansehen.

2 „Gefällt mir“

Danke! Lassen Sie mich wissen, wenn ich helfen kann.

Hallo @Lhc_fl, ich wollte freundlich fragen, ob es noch Pläne gibt, dies zu beheben :slight_smile:

1 „Gefällt mir“