Получить список пользователей в Telegram - PullRequest
0 голосов
/ 17 июня 2020

я хочу получить список участников канала с этим развлечением c в Python -Telegram-Bot:

context.bot.getChatMember("@*****",update.message.chat_id)

и я делаю это:

a=context.bot.getChatMember("@*****",update.message.chat_id)

, но когда я хочу напечатать, он ничего не возвращает, если этот пользователь не находится в этом канале, но если этот пользователь находится в этом канале, он возвращает информацию о пользователе

Я хочу получить значение (a), если этого пользователя нет на этом канале.

Я использовал pdb и получил 'telegram.error.BadRequest: User not found' эту ошибку, но когда я хочу распечатать ее, напечатайте ничего, и когда я wnat print (a) в pdb, он говорит *** NameError: name 'a' не определено

что мне делать?

И как я могу получить список участники канала

1 Ответ

0 голосов
/ 21 июня 2020

Во-первых, метод getChatMember используется для проверки, находится ли пользователь в конкретном чате (группе / канале) или нет. Таким образом, используя этот метод, вы не можете получить список участников канала.

По причине того, что вы получаете ошибку, в идеале ptb поднимает BadRequest: User not found, если пользователь не найден в этот чат ( разве это не очевидно! ). Вы должны использовать исключительные блоки, чтобы справиться с этим.

Допустим, вы собираетесь проверить, что пользователь находится в чате или нет

from telegram.error import BadRequest
def is_user_there(channel, chat_id) -> bool:
    try:
       chat_member = context.bot.getChatMember(channel,update.message.chat_id) # this will return a ChatMember object
       if chat_member.status in [‘administrator’, ‘creator’, ‘member’]:
         return True
       else:
         return False
    except BadRequest:
       return False

Подробнее о ChatMember объект здесь

...