Python 在使用users.info时,是否有办法忽略机器人用户?

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'}

我试图从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'}

    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
,您可以在循环中检查该字段