Discourse Chat Bridge (Telegramm)

Ok, ho risolto questo problema.

1 Mi Piace

Il plugin bridge è ora compatibile con l’ultima versione di discourse testata e superata.

5 Mi Piace

Non vedo l’ora che supporti QQ in seguito

1 Mi Piace

Per quanto ho capito dagli ultimi messaggi nell’argomento: il plugin funziona. Potreste dirmi se questa mia supposizione è corretta?

Posso chiedere se questo plugin funziona con i temi di Telegram (sezioni chat)?

Grazie mille per il vostro lavoro

Benvenuto in Meta :wave:

Gli ultimi post sono stati scritti prima che avvenisse l’ultima modifica al primo post, dove è stato aggiunto il tag broken.

Quindi, mi aspetterei che sia ancora rotto.

3 Mi Piace

Sono lieto di annunciare che questo plugin è ora di nuovo compatibile con l’ultima versione di Discourse :rocket:

9 Mi Piace

Adoro questo. Non uso Telegram, ma adoro l’opportunità che questo progetto ci permetterà finalmente di integrarci con Matrix <3

È possibile ottenere i log del plugin? @Lhc_fl
Sto cercando di capire perché funziona solo in un modo (Discourse → Telegram). Il bot ovviamente ha il permesso di accedere ai messaggi del gruppo. Non ci sono log apparenti nella console :thinking:

Modifica: stavo cercando di risolvere questo problema e apparentemente è praticamente impossibile ottenere log adeguati in produzione.

Nemmeno errori o avvisi relativi al plugin vengono registrati in production.log / production_error.log.

Sospetto un problema relativo ai webhook e, a quanto pare, il plugin non viene disattivato in caso di errori?

Dato che funziona in un modo, le credenziali fornite sono sicuramente corrette. Se qualcuno ha un’idea su come ottenere i log scritti dal plugin, per favore me lo faccia sapere.

Sta solo sopprimendo INFO e DEBUG, sono abbastanza sicuro che Rails.logger.error lascerà log di errore in produzione :thinking: Altri log, per progettazione, non dovrebbero apparire in produzione.

Ho scritto questo plugin molto tempo fa, forse dovrei controllare la sua logica webhook.

Prova ad accedere a questo URL nel tuo browser e vedi qual è l’output?

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

Sostituisci {token} con il token del tuo bot.

Se il webhook è configurato correttamente, dovrebbe ricevere un messaggio “ok”.

Sì, posso confermare che questo funziona:

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

È strano. E se la creazione del messaggio fallisce, il log degli errori verrà stampato qui, dovresti essere in grado di vederlo su https://your.discourse.site/logs

Potrebbe davvero essere un problema di permessi? Se rispondi direttamente al messaggio bridge creato dal bot di Telegram, riuscirà?

1 Mi Piace

Sto vedendo alcuni log relativi al modulo in /logs:

[Discourse -> Telegram] Fallito in chat_message_created:
Ispezione dell'oggetto risultato di 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 ❌

(altri 5 passaggi non mostrati poiché il flusso di esecuzione si è interrotto prima di raggiungerli)

Perché è fallito:

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'

Ma questo è di ieri e non si è ripetuto in seguito, quindi presumo che avesse a che fare con l’aggiunta del bot e il non soddisfacimento di tutti i requisiti. Dopodiché, nessun altro log del plugin bridge. A meno che, ovviamente, ciò non abbia causato il mancato funzionamento in seguito :confused:

No, non funziona.

Mi chiedo se sia possibile esaminare il segreto creato dal plugin, poiché ciò consentirebbe la creazione manuale?

Ho appena notato una cosa mentre guardavo i log di Nginx (poiché la chiamata webhook deve avvenire qui)

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

Quello è il webhook che ho creato manualmente in precedenza, giusto?

… e siamo un passo avanti. Ho impostato manualmente il percorso del segreto tramite la console rails e ho adattato manualmente il webhook. La richiesta POST a Discourse ora ha successo. E ora c’è un errore effettivo:

/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'
Eccezione del job: In params.message creation: Ispezione dell'oggetto risultato di 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 ❌

(altri 21 passaggi non mostrati poiché il flusso di esecuzione si è interrotto prima di raggiungerli)

Perché è fallito:

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

Ma questo sembra più un problema di configurazione :thinking: Mi chiedo perché devo fare aggiustamenti.

Oh, questo non era previsto, immagino di aver commesso un errore qui nell’adattarmi alla nuova versione di Discourse. Ci darò un’occhiata.

2 Mi Piace

Grazie! Fammi sapere se c’è qualcosa che posso fare per aiutare.

Ciao @Lhc_fl, volevo gentilmente chiederti se ci sono ancora piani per risolvere questo :slight_smile:

1 Mi Piace