Ладно, я исправил это.
Плагин моста теперь совместим с последней версией Discourse с тестом passed.
Я с нетерпением жду, когда это будет поддерживать QQ в дальнейшем
Насколько я понял из последних сообщений в теме: плагин работает. Пожалуйста, подтвердите, верно ли я понял.
Можно ли узнать, работает ли этот плагин с темами Telegram (разделами чата)?
Большое спасибо за вашу работу.
Добро пожаловать в Meta ![]()
Последние сообщения были написаны до последнего редактирования первого поста, в котором был добавлен тег broken.
Так что, я предполагаю, что проблема всё ещё не решена.
Я рад сообщить, что этот плагин снова совместим с последней версией Discourse ![]()
Мне это очень нравится. Я не использую Telegram, но мне нравится возможность, которую этот проект наконец-то даст нам для интеграции с Matrix <3
Есть ли способ получить логи плагина? @Lhc_fl
Я пытаюсь разобраться, почему он работает только в одну сторону (Discourse → Telegram). У бота, конечно, есть права на доступ к сообщениям группы. В консоли нет никаких видимых логов ![]()
Редактирование: пытался устранить эту проблему, и, похоже, в продакшн-среде практически невозможно получить корректные логи.
Даже ошибки или предупреждения, связанные с плагином, не записываются в production.log / production_error.log.
Я подозреваю проблему, связанную с вебхуком, и судя по всему, плагин не отключается при ошибках?
Так как он работает в одну сторону, предоставленные учетные данные точно верны. Если у кого-то есть идея, как получить логи, записываемые плагином, пожалуйста, дайте знать.
Просто скрываются логи уровня INFO и DEBUG. Я почти уверен, что Rails.logger.error будет записывать логи ошибок в продакшене
Остальные логи по замыслу не должны появляться в продакшене.
Я написал этот плагин довольно давно, возможно, мне стоит проверить его логику работы с вебхуками.
Попробуйте открыть эту ссылку в браузере и посмотрите, какой результат вы получите:
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
Неужели это действительно проблема с правами доступа? Если ответить напрямую на сообщение из моста, созданное ботом Telegram, оно будет отправлено успешно?
Я сейчас вижу несколько логов, связанных с модулем, в /logs:
[Discourse -> Telegram] Ошибка в chat_message_created:
Проверка объекта результата ChatBridgeModule::Provider::Telegram::Services::HandleDiscourseMessage:
[1/8] [params] default (0.0555 мс) ✅
[2/8] [model] bot (0.0178 мс) ✅
[3/8] [step] ensure_bot_valid ❌
(еще 5 шагов не показаны, так как выполнение было остановлено до их достижения)
Причина ошибки:
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 и адаптировал вебхук вручную. POST-запрос к Discourse теперь успешен. И теперь есть реальная ошибка:
/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'
Исключение задачи: В params.message creation: Проверка объекта результата Chat::CreateMessage:
[ 1/28] [options] default (0.0168 мс) ✅
[ 2/28] [policy] no_silenced_user (0.0148 мс) ✅
[ 3/28] [policy] accept_blocks (0.0051 мс) ✅
[ 4/28] [params] default (0.0742 мс) ✅
[ 5/28] [model] channel (0.7018 мс) ✅
[ 6/28] [step] enforce_membership (0.013 мс) ✅
[ 7/28] [model] membership ❌
(еще 21 шаг не показан, так как выполнение было остановлено до их достижения)
Причина ошибки:
/var/www/discourse/lib/service/base.rb:184:in `run_step': Модель не найдена (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! Хотел бы вежливо спросить, не отменили ли вы планы по исправлению этого ![]()

