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

如何通过Telegram API获取invite_link?排查入群链接获取失败问题

问题描述

我需要获取新成员加入Telegram群组时使用的邀请链接。根据Telegram官方API文档,监听chat_member更新事件时,返回的ChatMemberUpdated对象应该包含可选的invite_link字段,但使用node-telegram-bot-api编写代码后,即使确认成员是通过非主邀请链接入群,打印的ChatMemberUpdated数据中始终没有这个字段。

相关Telegram API文档片段

ChatMemberUpdated 对象代表聊天成员状态的变更

字段类型描述
chatChat用户所属的聊天
fromUser导致状态变更的操作者
dateInteger状态变更的Unix时间戳
old_chat_memberChatMember聊天成员的旧状态信息
new_chat_memberChatMember聊天成员的新状态信息
invite_linkChatInviteLink可选。用户加入聊天时使用的邀请链接,仅在通过邀请链接加入的事件中存在
via_join_requestBoolean可选。如果用户是发送直接加入请求并被管理员批准后加入,则为True
via_chat_folder_invite_linkBoolean可选。如果用户是通过聊天文件夹邀请链接加入,则为True

我的代码

const TelegramBot = require('node-telegram-bot-api');
require('dotenv').config();

const token = process.env.BOT_TOKEN;
const bot = new TelegramBot(token, { polling: true });

bot.on('chat_member', (msg) => {
  const newMemberInviteLink = msg.invite_link ? msg.invite_link : "Unknown Invite Link";
  console.log(newMemberInviteLink);
})

返回的ChatMemberUpdated数据

Received update: {
  chat: {
    id: -1002225700353,
    title: 'TestReferralChatgroup',
    username: 'TestReferralChatgroup',
    type: 'supergroup'
  },
  from: {
    id: 5189356713,
    is_bot: false,
    first_name: 'rii',
    last_name: 'un',
    username: 'LilKimbom'
  },
  date: 1721558379,
  old_chat_member: {
    user: {
      id: 5189356713,
      is_bot: false,
      first_name: 'rii',
      last_name: 'un',
      username: 'LilKimbom'
    },
    status: 'left'
  },
  new_chat_member: {
    user: {
      id: 5189356713,
      is_bot: false,
      first_name: 'rii',
      last_name: 'un',
      username: 'LilKimbom'
    },
    status: 'member'
  }
}
解决方案

1. 升级node-telegram-bot-api到最新版本

旧版本的库可能未适配Telegram API新增的invite_link字段,执行以下命令升级:

npm install node-telegram-bot-api@latest

2. 确保机器人拥有足够的权限

将机器人添加为群组管理员,并开启**"管理群组"**权限(至少需要能查看邀请链接相关事件的权限)。权限不足时,Telegram不会返回invite_link字段。

3. 修正代码并验证完整更新数据

在代码中打印完整的msg对象,确认字段是否存在;同时注意invite_link是嵌套对象,实际链接字符串在其invite_link属性下:

const TelegramBot = require('node-telegram-bot-api');
require('dotenv').config();

const token = process.env.BOT_TOKEN;
const bot = new TelegramBot(token, { polling: true });

bot.on('chat_member', (msg) => {
  // 打印完整更新对象,确认字段存在情况
  console.log('完整ChatMemberUpdated对象:', JSON.stringify(msg, null, 2));
  const newMemberInviteLink = msg.invite_link ? msg.invite_link.invite_link : "Unknown Invite Link";
  console.log('使用的邀请链接:', newMemberInviteLink);
})

4. 确认触发场景符合要求

invite_link字段仅在用户主动通过邀请链接点击加入时才会返回。如果是管理员直接添加用户、用户通过聊天文件夹加入,或通过申请被批准加入,该字段不会出现(对应会有via_join_request或via_chat_folder_invite_link字段)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:35:13