python - 在 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 ' 没有定义
我该做什么?
以及如何获取频道成员列表
解决方案
首先,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对象的更多信息