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

使用NodeJS Telegraf包检测Telegram用户频道状态返回异常求助

解决Telegraf机器人检测频道成员状态始终返回"left"的问题

以下是几个排查和解决的关键点:

  • 确认频道标识的正确性
    不要直接使用@dji_fly_app_hebrew作为频道参数,先通过ctx.telegram.getChat("@dji_fly_app_hebrew")获取频道的数字ID,再用这个ID替代用户名传入getChatMember。部分情况下,用户名可能因频道设置(如曾修改过用户名)导致识别异常,数字ID的稳定性更高。

  • 验证机器人的频道身份与权限
    手动确认以下两点:

    1. 机器人确实是目标频道的成员(包括管理员身份)
    2. 若频道为私有,需确保管理员权限中开启了查看成员相关权限
  • 检查用户ID的准确性
    打印ctx.message.from.id确认用户ID是否正确,避免因消息上下文错误(比如在群组触发时误拿其他用户ID)导致查询对象出错。另外,若用户是频道的匿名管理员,getChatMember可能无法正确识别其状态,需特殊处理。

  • 确保异步代码正确执行
    确认调用getChatMember的代码处于async函数内部,否则await不会生效,可能导致获取到未解析的Promise对象,进而出现异常状态值。

示例修正后的代码:

// 先获取频道数字ID
const channel = await ctx.telegram.getChat("@dji_fly_app_hebrew");
// 使用频道ID查询成员状态
const memberStatus = await ctx.telegram.getChatMember(channel.id, ctx.message.from.id);
console.log(memberStatus.status);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:24:49