Puente de Chat Discourse (Telegram)

Ok, lo he solucionado.

1 me gusta

El plugin bridge ahora es compatible con la última versión probada de discourse.

5 Me gusta

Espero que después admita QQ.

1 me gusta

Según entiendo por los últimos mensajes en el tema: el plugin está funcionando. Por favor, díganme si tengo razón en esta suposición.

¿Puedo preguntar si este plugin funciona con temas de Telegram (secciones de chat)?

Muchas gracias por su trabajo.

Bienvenido a Meta :wave:

Las últimas publicaciones se escribieron antes de que ocurriera la última edición de la primera publicación, donde se añadió la etiqueta broken.

Por lo tanto, esperaría que todavía esté roto.

3 Me gusta

Me complace anunciar que este plugin ahora es compatible nuevamente con la última versión de Discourse :rocket:

9 Me gusta

Me encanta. No uso Telegram, pero me encanta la oportunidad que este proyecto nos permitirá integrar finalmente con Matrix <3

¿Hay alguna forma de obtener los registros del plugin? @Lhc_fl
Estoy tratando de averiguar por qué solo funciona de una manera (Discourse → Telegram). El bot, por supuesto, tiene permiso para acceder a los mensajes del grupo. No hay registros aparentes en la consola :thinking:

Editar: Estaba tratando de solucionar esto, y aparentemente es básicamente imposible obtener registros adecuados en producción.

Ni siquiera los errores o advertencias relacionados con el plugin se registran en production.log / production_error.log.

Sospecho de algún problema relacionado con los webhooks, y por lo que parece, el plugin no se desactiva ante errores.

Como funciona de una manera, las credenciales proporcionadas son definitivamente correctas. Si alguien tiene una idea de cómo obtener los registros escritos por el plugin, por favor hágamelo saber.

Simplemente está suprimiendo INFO y DEBUG, estoy bastante seguro de que Rails.logger.error dejará registros de error en producción :thinking: Otros registros, por diseño, no deben aparecer en producción.

Escribí este plugin hace mucho tiempo, tal vez debería revisar su lógica de webhook.

¿Intentas acceder a esta URL en tu navegador y ver cuál es la salida?

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

Reemplaza {token} con tu token de bot.

Si el webhook está configurado correctamente, debería recibir un mensaje de “ok”.

Sí, puedo confirmar que esto funciona:

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

Eso es extraño. Y si falla la creación del mensaje, el registro de errores se imprimirá aquí, deberías poder verlo en https://your.discourse.site/logs

¿Podría ser realmente un problema de permisos? Si respondes directamente al mensaje puenteado creado por el bot de Telegram, ¿tendrá éxito?

1 me gusta

Estoy viendo ahora algunos registros relacionados con el módulo en /logs:

[Discourse -> Telegram] Falló en chat_message_created:
Inspeccionando el objeto de resultado 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 pasos más no se muestran ya que el flujo de ejecución se detuvo antes de alcanzarlos)

Por qué falló:

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'

Pero eso es de ayer y no se repitió después, así que supongo que tuvo que ver con la adición del bot y no cumplir aún todos los requisitos. Después de eso, no más registros del plugin de puente. A menos, por supuesto, que eso haya provocado que nunca funcionara después de eso :confused:

No, eso no funciona.

Me pregunto si es posible ver el secreto creado por el plugin, ya que esto permitiría la creación manual.

Acabo de notar algo mientras revisaba los registros de Nginx (ya que la llamada webhook debe ocurrir aquí)

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

Ese es el webhook que creé manualmente antes, ¿verdad?

… y estamos un paso más adelante. Ajusté manualmente la ruta secreta a través de la consola de Rails y adapté manualmente el webhook. La solicitud POST a Discourse ahora tiene éxito. Y ahora hay un error real:

/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: En params.message creation: Inspeccionando el objeto de resultado 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 pasos más no se muestran ya que el flujo de ejecución se detuvo antes de alcanzarlos)

Por qué falló:

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

Pero esto parece más un problema de configuración :thinking: Me pregunto por qué necesito ajustar.

Oh, esto no es lo esperado, supongo que cometí un error aquí al adaptarme a la nueva versión de Discourse. Le echaré un vistazo.

2 Me gusta

¡Gracias! Avísame si hay algo que pueda hacer para ayudar.

Hola @Lhc_fl, quería preguntar amablemente si todavía hay planes de solucionar esto :slight_smile:

1 me gusta