如何在Node.js+Telegraf.js启动Bot时检测用户是否开通TG Premium
官方Bot API实现方式
- 调用
getUser接口,返回的用户对象中包含is_premium布尔字段,直接判断该值即可。示例Python代码:
import requests TOKEN = "你的机器人令牌" USER_ID = "目标用户ID" response = requests.get(f"https://api.telegram.org/bot{TOKEN}/getUser?user_id={USER_ID}") user_data = response.json() if user_data.get("ok"): is_premium = user_data["result"].get("is_premium", False) print(f"用户是否开通Premium: {is_premium}") else: print("获取用户数据失败")
- 权限要求:机器人需与目标用户有互动记录(用户发过消息),或机器人在用户所在群组中,才能成功获取用户信息。
常见问题排查
- 核对机器人令牌是否正确,确保令牌未泄露或过期。
- 确认目标用户ID准确,避免使用用户名(部分用户隐私设置会隐藏用户名关联)。
- 群组内获取时,机器人需具备查看成员信息的权限(普通成员权限可能无法获取完整用户数据)。
自建客户端(TDLib/MTProto)实现方式
- 基于TDLib开发时,直接读取
User结构体中的is_premium属性即可。 - 确保使用最新版本的TDLib,旧版本可能未支持该字段。
内容的提问来源于stack exchange,提问作者Bogdan
相关产品推荐
相关产品推荐

