Найти - Пользователи
Полная версия: Метод GetParticipantsRequest внутри библиотеки Telethon
Начало » Python для новичков » Метод GetParticipantsRequest внутри библиотеки Telethon
1
gandonio
Добрый день.

Продолжая изучать библиотеку telethon наткнулся на метод GetParticipantsRequest, который, по логике, должен отдавать объект класса ChannelParticipants, который имеет в себе переменную users, состоящую из списка юзеров канала. Набросав вот такой код:
from telethon import functions, types
from telethon.sync import TelegramClient

with TelegramClient("name", api_id, api_hash) as client:
result = client(functions.channels.GetParticipantsRequest(
channel=channel_username,
filter=types.ChannelParticipantsRecent(),
offset=1,
limit=200,
hash=0
))
users = [i for i in result.users]
Я получаю список, состоящий из информации о пользователях канала. Но только о 199, когда мне нужны все. Много раз пробовал менять аргументы offset и limit, но так и не получил желаемого результата. Прошу помочь разобраться с этим методом.
gandonio
ZerG
https://telethonn.readthedocs.io/en/latest/extra/examples/chats-and-channels.html#retrieving-all-chat-members-channels-too
Благодаря информации по ссылке, которой вы со мной поделились, я написал такую функцию:
def get_users_from_channel(client, channel_username):
offset = 0
limit = 100
all_participants = []

while True:
participants = client(GetParticipantsRequest(
channel_username, ChannelParticipantsSearch(''), offset, limit,
hash=0
))
if not participants.users:
break
all_participants.extend(participants.users)
offset += len(participants.users)

return all_participants
Однако когда я передаю ей юзернэйм канала, она собирает только 201 подписчика из 291. Может, я допустил где-либо ошибку?
ZerG
наверное стоит увеличить лимит?
gandonio
ZerG
наверное стоит увеличить лимит?

Простите за тупость, но я так и не смог получить всех 291 пользователей из канала, меняя лимит с 100 на 150, 200, 250 и так далее до 500. Не могли бы объяснить за этот лимит?
ZerG
К сожалению не могу - тут вопрос к автороам этой говнолибы
Но могу посоветовать использовать либы которые рекомендует сам телеграм
https://core.telegram.org/bots/samples#python

Думаю с ними будем много проще.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB