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

Node Telegram Bot API:获取成员加入的聊天邀请链接及更新异常

解决Telegram机器人获取新成员邀请链接的问题

核心问题分析

你的代码存在两个关键错误:

  • 事件结构误用:chatMemberUpdated事件的更新数据不在update.message里,而是存储在update.chat_member字段中。
  • 不必要的异步等待:update对象的属性都是同步可访问的,无需使用await。

另外,要获取邀请链接,机器人必须被授予**管理群组(manage_chat)**权限,否则Telegram不会推送包含邀请链接的更新数据。

修正后的代码

bot.on("chatMemberUpdated", (update) => {
  try {
    const chatMemberUpdate = update.chat_member;
    const chatId = chatMemberUpdate.chat.id;
    const oldStatus = chatMemberUpdate.old_chat_member.status;
    const newStatus = chatMemberUpdate.new_chat_member.status;

    // 精准判断:成员从非群组状态变为成员状态
    if (oldStatus === "left" && newStatus === "member") {
      const inviteLinkObj = chatMemberUpdate.invite_link;

      if (inviteLinkObj) {
        console.log(`新成员 ${chatMemberUpdate.new_chat_member.user.first_name} 加入群组 ${chatId}`);
        console.log(`邀请链接: ${inviteLinkObj.invite_link}`);
      } else {
        console.log(`群组 ${chatId} 无法获取邀请链接(成员可能通过非链接方式加入,或机器人权限不足)`);
      }
    }
  } catch (error) {
    console.error("处理更新出错:", error);
  }
});

关键说明

  • 状态判断逻辑:通过对比old_chat_member.status和new_chat_member.status,可以准确识别成员的加入行为(从left状态切换为member状态)。
  • 邀请链接字段:邀请链接的完整数据在chatMemberUpdate.invite_link对象中,实际可直接使用的链接字符串是该对象的invite_link属性。
  • 权限要求:务必确保机器人在目标群组中拥有manage_chat权限,否则无法获取任何邀请链接相关信息。

替代兼容方案

如果需要兼容旧版的new_chat_members事件,Telegram会在该事件的message对象中携带chat_invite_link字段,同样需要机器人具备管理权限:

bot.on("new_chat_members", (msg) => {
  const chatId = msg.chat.id;
  const inviteLinkObj = msg.chat_invite_link;

  msg.new_chat_members.forEach(member => {
    console.log(`新成员 ${member.first_name} 加入群组 ${chatId}`);
    if (inviteLinkObj) {
      console.log(`邀请链接: ${inviteLinkObj.invite_link}`);
    } else {
      console.log(`无法获取该成员的邀请链接`);
    }
  });
});

内容的提问来源于stack exchange,提问作者Parvez Alam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:23:32