You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram Bot的message事件未触发群成员退群通知,如何解决?

问题解答

这种方式能不能获取退群通知?

不能。message事件仅负责处理用户发送的消息类更新,而群成员退群属于chat_member类型的更新,不会触发message事件,所以你当前的代码捕获不到退群通知。

怎么实现获取退群通知?

你已经在allowed_updates里配置了chat_member,这一步是对的,确保Telegram会推送成员变动的更新。接下来需要单独监听chat_member事件来处理退群逻辑:

  1. 导入对应的类型:从node-telegram-bot-api导入ChatMemberUpdated类型,用于类型校验。
  2. 监听chat_member事件:通过bot.on('chat_member')捕获成员状态变更,判断成员是否退群。

修改后的代码示例:

import TelegramBot, { Message, ChatMemberUpdated } from 'node-telegram-bot-api'

const bot = new TelegramBot(MY_TOKEN, { polling: {
  params: {
    allowed_updates: ['chat_member', 'message', 'my_chat_member']
  }
}})

// 处理消息事件
bot.on('message', async (msg) => {
  console.log("MESSAGE")
})

// 处理群成员变动事件
bot.on('chat_member', async (chatMemberUpdate: ChatMemberUpdated) => {
  const { new_chat_member, old_chat_member, chat } = chatMemberUpdate
  // 判断是否为退群(包括主动退出或被踢出)
  if (new_chat_member.status === 'left' || new_chat_member.status === 'kicked') {
    const userName = new_chat_member.user.first_name
    console.log(`用户 ${userName} 已退出群组 ${chat.title}`)
    // 这里可以添加你需要的退群后续处理逻辑
  }
})

注意事项

  • 确保你的机器人在目标群组中是管理员身份,否则Telegram不会推送群成员变动的更新给机器人。
  • my_chat_member是用于监听机器人自身的成员状态变更(比如被踢出群组),如果不需要可以保留或移除,不影响用户退群的监听。

内容的提问来源于stack exchange,提问作者Riccardo Perego

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 16:12:07