Discourse Chat Bridge (Telegram)

Ok, consertei isso.

1 curtida

O plugin bridge agora é compatível com a versão mais recente do discourse com teste aprovado.

5 curtidas

Estou ansioso para que ele suporte QQ depois.

1 curtida

Pelo que entendi das últimas mensagens no tópico: o plugin está funcionando. Por favor, diga-me se estou certo nessa suposição.

Posso perguntar se este plugin funciona com temas do Telegram (seções de chat)?

Muito obrigado pelo seu trabalho

Bem-vindo à Meta :wave:

As últimas postagens foram escritas antes da última edição da primeira postagem, onde a tag broken foi adicionada, acontecer.

Portanto, eu esperaria que ainda estivesse quebrado.

3 curtidas

Tenho o prazer de anunciar que este plugin agora é compatível novamente com a versão mais recente do Discourse :rocket:

9 curtidas

Adorei isso. Eu não uso o Telegram, mas adoro a oportunidade que este projeto nos permitirá finalmente integrar com o Matrix <3

Existe alguma forma de obter logs do plugin? @Lhc_fl
Estou tentando descobrir por que ele só funciona de uma maneira (Discourse → Telegram). O bot, claro, tem permissão para acessar as mensagens do grupo. Não há logs aparentes no console :thinking:

Editar: Estava tentando solucionar isso e, aparentemente, é basicamente impossível obter logs adequados em produção.

Nem mesmo erros ou avisos relacionados ao plugin são registrados em production.log / production_error.log.

Suspeito de algum problema relacionado a webhook e, pelo que parece, o plugin não é desativado em caso de erros?

Como funciona de uma maneira, as credenciais fornecidas estão definitivamente corretas. Se alguém tiver uma ideia de como obter os logs escritos pelo plugin, por favor, me avise.

Ele está apenas suprimindo INFO e DEBUG, tenho certeza de que Rails.logger.error deixará logs de erro em produção :thinking: Outros logs, por design, não devem aparecer em produção.

Eu escrevi este plugin há muito tempo, talvez eu deva verificar sua lógica de webhook.

Tente acessar este URL no seu navegador e veja qual é a saída?

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

Substitua {token} pelo token do seu bot.

Se o webhook estiver configurado corretamente, ele deverá receber uma mensagem “ok”.

Sim, posso confirmar que isso funciona:

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

Isso é estranho. E se a criação da mensagem falhar, o log de erros será impresso aqui, você deve ser capaz de vê-lo em https://your.discourse.site/logs

Pode ser realmente um problema de permissão? Se responder diretamente à mensagem criada pela ponte do bot do Telegram, terá sucesso?

1 curtida

Estou vendo agora alguns logs relacionados ao módulo em /logs:

[Discourse -> Telegram] Falha em chat_message_created:
Inspecionando o 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 etapas adicionais não mostradas, pois o fluxo de execução foi interrompido antes de alcançá-las)

Por que falhou:

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'

Mas isso é de ontem e não se repetiu depois, então estou assumindo que teve a ver com a adição do bot e ainda não atendeu a todos os requisitos. Depois disso, não houve mais logs do plugin de ponte. A menos, é claro, que isso tenha feito com que nunca mais funcionasse :confused:

Não, isso não funciona.

Eu me pergunto se é possível olhar o segredo criado pelo plugin, pois isso permitiria a criação manual?

Acabei de notar uma coisa ao verificar os logs do Nginx (já que a chamada do webhook deve ocorrer aqui)

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

Esse é o webhook que criei manualmente antes, certo?

… e estamos um passo à frente. Ajustei manualmente o caminho secreto via console do rails e adaptei o webhook manualmente. A solicitação POST para o Discourse agora é bem-sucedida. E agora há um erro 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'
Exceção do Job: Em params.message creation: Inspecionando o 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 etapas adicionais não mostradas, pois o fluxo de execução foi interrompido antes de alcançá-las)

Por que falhou:

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

Mas isso parece mais um problema de configuração :thinking: Eu me pergunto por que preciso ajustar.

Ah, isso não é esperado, acho que cometi um erro aqui ao adaptar para a nova versão do Discourse. Vou dar uma olhada nisso.

2 curtidas

Obrigado! Me avise se houver algo que eu possa fazer para ajudar.

Olá @Lhc_fl, gostaria de perguntar gentilmente se ainda há planos de consertar isso :slight_smile:

1 curtida