在尝试获取所有聊天室成员时,是否有解决10000电报服务器查询限制的方法';使用Pyrogram/Python的数据?

在尝试获取所有聊天室成员时,是否有解决10000电报服务器查询限制的方法';使用Pyrogram/Python的数据?,python,telegram,mtproto,pyrogram,Python,Telegram,Mtproto,Pyrogram,我必须从电报聊天列表的所有成员(组和超级组)中获取数据,但是,因为在一次查询中,总共只能获得10000个ChatMember结果。Pyrogram的iter_chat_成员方法仅限于此,不提供offset参数或某种分页处理。因此,我尝试使用其get\u chat\u members方法获取200个大小的数据块,但在第50个数据块(对应于第10000个ChatMember对象)之后,它开始给我空结果。我用于测试的代码草案如下: from pyrogram import Client def ge

我必须从电报聊天列表的所有成员(组和超级组)中获取数据,但是,因为在一次查询中,总共只能获得10000个
ChatMember
结果。Pyrogram的
iter_chat_成员
方法仅限于此,不提供
offset
参数或某种分页处理。因此,我尝试使用其
get\u chat\u members
方法获取200个大小的数据块,但在第50个数据块(对应于第10000个
ChatMember
对象)之后,它开始给我空结果。我用于测试的代码草案如下:

from pyrogram import Client

def get_chat_members(app, target, offset=0, step=200):
    total = app.get_chat_members_count(target)
    itrs = (total//step) + 1
    members_list = []
    itr = 1
    while itr <= itrs:
        members = app.get_chat_members(target, offset)
        members_list.append(members)
        offset += step
        itr += 1
    return members_list

app = Client("my_account")
with app:
    results = get_chat_members(app, "example_chat_entity")
    print(results)
来自pyrogram导入客户端的

def get_chat_成员(应用程序、目标、偏移量=0、步骤=200):
总计=应用程序获取\聊天\成员\计数(目标)
itrs=(总计//步数)+1
成员名单=[]
itr=1

虽然itr这是一个服务器限制,而不是Pyrogram本身。服务器在~10k个成员之后不会再产生任何信息。无论如何,用户都不可能需要知道这么多成员的详细信息。

谢谢您的回答。事实上,普通用户并不需要这种信息。但在获取聊天室成员的完整数据时,有很多分析的可能性。电报API似乎不受欢迎,也不是为这类研究而设计的。虽然是的,肯定有分析的可能性,但这也为垃圾邮件发送者和骗子打开了大门。如果您需要构建一个数据库,其中的成员位于通道或大型超组中,您可以使用