알겠습니다. 이 문제를 수정했습니다.
브리지 플러그인은 이제 최신 discourse test-passed 버전과 호환됩니다.
나중에 QQ를 지원해 주길 기대합니다.
최근 토픽의 메시지들을 보면, 플러그인이 정상적으로 작동하고 있는 것으로 이해됩니다. 제 추정이 맞는지 알려주시겠습니까?
이 플러그인이 텔레그램 테마(채팅 섹션)와 호환되는지 여쭤봐도 될까요?
귀하의 노고에 진심으로 감사드립니다.
이 플러그인이 이제 최신 버전의 Discourse와 다시 호환된다는 소식을 전하게 되어 기쁩니다 ![]()
정말 좋아해요. 저는 텔레그램을 안 쓰지만, 이 프로젝트를 통해 마침내 매트릭스와 연동할 수 있게 되어 정말 좋아요 <3
플러그인의 로그를 가져올 수 있는 방법이 있을까요? @Lhc_fl
현재 한쪽 방향(Discourse → Telegram)으로만 작동하는 이유를 파악하려고 하고 있습니다. 봇은 당연히 그룹 메시지 접근 권한이 있습니다. 콘솔에는 눈에 띄는 로그가 없습니다 ![]()
수정: 문제 해결을 시도해 보았는데, 프로덕션 환경에서 적절한 로그를 얻는 것은 사실상 불가능해 보입니다.
플러그인과 관련된 오류나 경고도 production.log / production_error.log에 기록되지 않습니다.
웹훅 관련 문제일 것으로 추정되며, 오류 발생 시 플러그인이 비활성화되지 않는 것처럼 보입니다?
한쪽 방향으로 작동하므로 제공된 자격 증명은 확실히 정확한 상태입니다. 플러그이가 작성하는 로그를 얻는 방법에 대해 아이디어가 있으신 분은 알려주시면 감사하겠습니다.
그냥 INFO와 DEBUG 레벨을 억제하는 것뿐인 것 같고, Rails.logger.error는 프로덕션 환경에서 에러 로그를 남길 것이라고 꽤 확신합니다
다른 로그들은 프로덕션 환경에 표시되지 않도록 설계되어 있습니다.
이 플러그인을 꽤 오래전에 작성했으니, 웹훅 로직을 다시 확인해 봐야 할 것 같습니다.
브라우저에서 이 URL에 접근하여 출력이 무엇인지 확인해 보세요.
https://api.telegram.org/bot{token}/setWebhook?url=https://your.discourse.site/chat-bridge/telegram/hook/123456
{token}을(를) 봇 토큰으로 교체하세요.
웹훅이 올바르게 설정되어 있다면 ok 메시지를 수신해야 합니다.
네, 이 방법으로 작동하는 것을 확인했습니다:
{"ok":true,"result":true,"description":"Webhook was set"}
이상하네요. 그리고 메시지 생성에 실패하면 에러 로그가 여기에 출력되므로 https://your.discourse.site/logs에서 확인하실 수 있어야 합니다.
정말 권한 문제일까요? 텔레그램 봇이 만든 브리지된 메시지에 직접 답장을 보내면 성공할까요?
실제로 /logs 디렉터리에서 모듈과 관련된 몇 가지 로그를 확인했습니다:
[Discourse -> Telegram] Failed in chat_message_created:
Inspecting ChatBridgeModule::Provider::Telegram::Services::HandleDiscourseMessage result object:
[1/8] [params] default (0.0555 ms) ✅
[2/8] [model] bot (0.0178 ms) ✅
[3/8] [step] ensure_bot_valid ❌
(5 more steps not shown as the execution flow was stopped before reaching them)
Why it failed:
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'
하지만 이것은 어제의 로그이고 이후로는 반복되지 않았습니다. 그래서 봇을 추가하는 과정에서 아직 모든 요구 사항을 충족하지 못했기 때문이라고 추정하고 있습니다. 그 이후로는 브리지 플러그인 로그가 더 이상 나타나지 않습니다. 물론, 그 때문에 이후로 작동하지 않게 된 것이 아니라면요 ![]()
아니요, 그렇게 하면 작동하지 않습니다.
플러그인이 생성한 시크릿을 살펴볼 수 있는지 궁금합니다. 이렇게 하면 수동으로 생성할 수 있을 것 같아서요.
Nginx 로그를 확인하던 중(웹훅 호출은 여기서 발생해야 하므로) 한 가지를 알아차렸습니다.
[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 "-" "-" "-" "-" "-" "-" "-"
이것은 제가 이전에 수동으로 생성한 웹훅이 맞나요?
… 그리고 한 단계 더 나아갔습니다. rails 콘솔을 통해 시크릿 경로를 수동으로 설정하고 웹훅을 수동으로 조정했습니다. 이제 Discourse에 대한 POST 요청이 성공합니다. 그리고 이제 실제 오류가 나타납니다:
/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: Inspecting Chat::CreateMessage result object:
[ 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 more steps not shown as the execution flow was stopped before reaching them)
Why it failed:
/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...
하지만 이것은 설정 문제처럼 보입니다
왜 제가 조정을 해야 하는지 궁금합니다.
아, 이건 예상하지 못한 상황이네요. Discourse의 새 버전으로 적응하는 과정에서 실수를 한 것 같습니다. 확인해 보겠습니다.
감사합니다! 도움이 될 일이 있으면 말씀해 주세요.
안녕하세요 @Lhc_fl. 이 문제를 수정할 계획이 아직 남아 있는지 조심스럽게 여쭤보고 싶었어요 ![]()
플러그인을 포크하고 수정했습니다. 이제 예상대로 작동합니다. 이것이 올바른 방법이었기를 바랍니다!
이제 메인 저장소에 PR을 보내는 것을 고려해볼 수 있으며, 리뷰 과정에서 알게 될지도 모릅니다 ![]()
방금 이 작업을 완료했습니다. 저장소와 확장 기능이 매우 방치된 상태라 그전까지는 신경 쓰지 않았습니다.
네, 공감이 갑니다. 그건 문제가 될 수 있죠. 다만 OP는 한때 아주 활동적이었거든요 …

