首页 > 解决方案 > 在 Telegram 中获取用户列表

问题描述

我想在 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' 这个错误,但是当我想打印它时什么也不打印,当我在 pdb 中打印(a)时,它说 *** NameError: name 'a ' 没有定义

我该做什么?

以及如何获取频道成员列表

标签: pythonpython-3.xtelegramtelegram-botpython-telegram-bot

解决方案


首先,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对象的更多信息


推荐阅读