如何使用Telegram Bot API查询聊天现有成员且无需跟踪成员更新
Telegram Bot API 无前置跟踪获取聊天成员方案
首先明确前提:Telegram 官方公开的 Bot API 没有提供无需提前监听成员更新、直接批量拉取所有普通非管理员成员的接口,所有可行方案都有对应适用范围:
仅需要获取管理员列表
无需额外权限,也不需要提前跟踪成员更新,直接调用 getChatAdministrators 接口即可:
- 仅需传入目标聊天的
chat_id作为入参 - 接口会返回所有当前在职的管理员的完整成员信息,包括用户ID、昵称、权限配置等
- 只要机器人是聊天内的普通成员即可调用,不需要管理员权限
需要获取全量成员
如果需要拉取所有普通成员,没有前置监听成员更新的前提下,只有两种受限方案可选:
- 管理员权限导出方案
- 前置要求:机器人是目标超级群/频道的管理员,且被授予「获取成员列表」的管理员权限,同时使用自托管的 Telegram Bot API 服务端
- 操作方法:调用自托管Bot API提供的内部批量拉取成员接口,一次性获取全量成员数据,该接口不属于官方公开的标准Bot API范畴,需要自行编译部署Bot API服务端使用
- 历史消息遍历方案
- 前置要求:机器人拥有聊天历史消息的访问权限
- 操作方法:调用
getChatHistory遍历所有可访问的历史消息,提取所有消息发送者的用户ID,再逐一批量调用getChatMember接口校验用户是否仍在群内,最终汇总得到当前成员列表 - 限制:无法获取从未在群内发送过消息的成员,最终列表完整性取决于聊天历史消息的可见范围
注意:如果你使用的是第三方托管的标准Bot API服务,没有自部署条件,也不想遍历历史消息,那么没有办法在不提前监听
chat_member更新的前提下获取完整的普通成员列表。
内容的提问来源于stack exchange,提问作者Den Barret
相关产品推荐
相关产品推荐

