修复 Discourse Telegram 插件无法回复与点赞的问题

[!info]起因
这两天发现论坛的telegram机器人无法进行点赞和回复,L站的机器人就可以。所以研究了一下,最后发现是因为论坛原来使用的另外一个域名,从https://api.telegram.org/botYOUR_TOKEN/getWebhookInfo 这个链接可以看到原来的webhook链接还是用的旧域名,所以导致,webhook无法响应从而无法进行点赞和回复。
另外一点,如果你的机器人原来搭建过其他服务,再搭建新服务的时候也会出现这种情况,一般使用命令是可以响应的,但是菜单操作就无法响应,这种情况也可以使用这个办法解决。

在使用 davidtaylorhq/discourse-telegram-notifications 插件时,经常会遇到一个 Bug:可以正常收到论坛的消息推送,但无法在 Telegram 中直接回复,点击消息下方的“点赞”按钮也毫无反应。

这通常是因为 Telegram Bot 的 Webhook 状态卡死,或者缺少接收“回调查询 (Callback Query)”的权限。可以通过直接调用 Telegram API 来硬重置 Webhook 解决。

准备工作

找到你的 Telegram Bot Token(格式类似 1234567890:ABCDefGhIJKlmNoPQRstuVWxyz)。

修复步骤

第一步:清理积压状态并删除旧 Webhook

我们需要清理掉 Telegram 服务器上积压的错误请求,防止它们继续堵塞通道。
打开浏览器,将下面链接中的 <YOUR_BOT_TOKEN> 替换为你的真实 Token 并访问:

https://api.telegram.org/bot<YOUR_BOT_TOKEN>/deleteWebhook?drop_pending_updates=true

成功标志: 网页返回 {"ok":true,"result":true,"description":"Webhook was deleted"}

第二步:重置 Webhook 并赋予正确权限

这一步是核心。我们需要告诉 Telegram:允许向我们的服务器发送“消息 (message)”和“按钮点击事件 (callback_query)”。
继续在浏览器中访问以下链接(同样替换 Token):

https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook?url=&allowed_updates=["message","callback_query"]

注:这里 url= 留空即可,因为我们稍后会让 Discourse 插件自动去填补正确的服务器回调地址。

成功标志: 网页返回 {"ok":true,"result":true,"description":"Webhook was set"}

第三步:在 Discourse 中重新绑定

  1. 进入你的 Discourse 论坛后台 (Admin)。
  2. 进入“设置 (Settings)”,搜索 telegram notifications enabled
  3. 将该选项取消勾选并保存。
  4. 等待几秒钟,重新勾选该选项并保存。

这一步会触发插件使用你的论坛域名重新向 Telegram 注册 Webhook。

验证测试

现在,等待论坛产生一条新消息推送到 Telegram。长按该消息进行“回复”,或者直接点击消息下方自带的点赞按钮,你的操作应该可以瞬间同步到论坛中了!

这个厉害了,非常有用

1 Like