Есть ли способ обхода лимита запросов к серверу в 10000 Telegram при попытке получить данные всех участников чата с помощью Pyrogram/Python?

Мне нужно получить данные от всех участников списка чатов Telegram - групп и супергрупп, но, как предупреждает документация Pyrogram , всего за один запрос можно получить только 10 000 результатов. Пирограммы iter_chat_members метод ограничен этим и не обеспечивает offsetпараметр или некоторая обработка разбивки на страницы. Итак, я попытался получить куски данных размером 200 с его get_chat_members метод, но после 50-го чанка, что соответствует 10-тысячному 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?

1 ответ

Это ограничение сервера, а не самого Pyrogram. Сервер просто не предоставляет больше информации после ~10 тыс. Участников. В любом случае пользователю не потребуется знать подробную информацию об этом большом количестве участников.

Другие вопросы по тегам