Python 在使用users.info时,是否有办法忽略机器人用户?
我试图从slack上的用户那里获得电子邮件。所有用户id都来自channels.info,这还包括bot用户id。当我运行users.info查看频道中所有用户的信息时,它不会让我收到电子邮件,因为同样通过API传递的机器人用户没有电子邮件字段Python 在使用users.info时,是否有办法忽略机器人用户?,python,slack,slack-api,Python,Slack,Slack Api,我试图从slack上的用户那里获得电子邮件。所有用户id都来自channels.info,这还包括bot用户id。当我运行users.info查看频道中所有用户的信息时,它不会让我收到电子邮件,因为同样通过API传递的机器人用户没有电子邮件字段 def get_users(): url = 'https://slack.com/api/users.info' headers = {'Accept': 'application/x-www-form-urlencoded'}
def get_users():
url = 'https://slack.com/api/users.info'
headers = {'Accept': 'application/x-www-form-urlencoded'}
users = get_channel()
result = []
for user in users:
payload = {
'token': API_KEY,
'user': user
}
r = requests.get(url, headers=headers, params=payload)
if r.status_code == 200:
result.append(r.json()['user']['profile']['email])
return result
我目前得到一个带有“email”的KeyErorr,因为bot用户没有email字段。是否有一种方法可以忽略bot用户的所有信息。当前,所有用户id都来自channels.info并通过users.info循环,因此从channels.info收集每个用户id的信息。要避免客户端出现异常,可以使用dictionary.get()使其返回None,而不是抛出keyrerror
email=r.json()['user']['profile'].get('email'))
如果电子邮件不是无:
结果。追加(电子邮件)
关于dictionary.get()在这个问题及其答案中有一些更详细的信息:我不确定您如何准确地检索频道的用户列表(您正在调用
对话.members
?)
但无论如何,在任何API方法中都无法预先选择只接收用户而不接收机器人
但是您从user.info
获取的用户对象包含字段is\u bot
,您可以在循环中检查该字段