0

Telegram チャットのリスト (グループとスーパーグループ) のすべてのメンバーからデータを取得する必要がありますが、Pyrogram ドキュメント アラートChatMemberのように、1 つのクエリで合計 10,000 の結果しか取得できません。Pyrogram のメソッドはそれに限定されており、パラメーターや何らかのページネーション処理をiter_chat_members提供していません。offsetそのため、そのメソッドで 200 サイズのデータ​​のチャンクを取得しようとしましたget_chat_membersが、10,000 番目のオブジェクトに対応する 50 番目のチャンクの後、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 のドキュメントでこの制限について述べられていることは単一のクエリに対応していることを考えると、回避策が必要であると考えました。では、API をフラッディングせずに、オフセット状態を失うことなく、複数のクエリを実行する方法があるかどうか疑問に思います。何か不足していますか、それとも API の制限により不可能ですか?

4

1 に答える 1