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

如何获取Telegram群组全部成员?Pyrogram返回不全问题排查

解决Pyrogram获取Telegram全部群成员的问题

问题原因

Telegram API本身对单次获取群成员的数量有限制,默认请求只会返回少量成员(如管理员、近期活跃成员),而非全部。即使使用iter_chat_members,若未正确处理分页逻辑,也无法获取完整成员列表。

解决方案

要获取全部群成员,需通过分页遍历的方式,结合offset参数分批请求,直到没有更多成员返回。同时确保你的账号(普通账号/机器人)拥有查看群成员的权限。

以下是修改后的代码:

from pyrogram import Client
from pyrogram.enums import ChatMembersFilter

# Target supergroup ID或用户名
TARGET = "your_group_id_or_username"

app = Client("my_account", api_id=api_id, api_hash=api_hash)

async def main():
    async with app:
        offset = 0
        limit = 200  # Telegram API单次最大返回200条,不可超过此值
        while True:
            members = await app.get_chat_members(
                chat_id=TARGET,
                offset=offset,
                limit=limit,
                filter=ChatMembersFilter.ALL  # 指定获取全类型成员
            )
            if not members:
                break  # 无更多成员时终止循环
            for member in members:
                if member.user:  # 过滤无效用户项
                    print(member.user.id)
            offset += len(members)  # 更新偏移量,继续获取下一批成员

app.run(main())

关键注意事项

  • 权限验证:确保你的账号是群内成员,且群组未限制非管理员查看成员列表(部分私密群可能仅允许管理员查看全部成员)。
  • 频率限制:Telegram API存在请求频率限制,Pyrogram会自动处理基础限流,但针对超大型群组仍需避免短时间内发起过多请求。
  • 参数说明:
    • limit:单次请求最大返回200个成员,这是Telegram API的硬性上限。
    • filter:设置为ChatMembersFilter.ALL可确保获取管理员、普通成员、受限成员等全类型群成员。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:07:21