python - 使用 users.info 时有没有办法忽略机器人用户?

标签 python slack slack-api

我正在尝试从 Slack 上的用户那里获取电子邮件。所有用户 ID 均来自channels.info,其中还包括机器人用户 ID。当我运行 users.info 来查看 channel 中所有用户的信息时,它不会让我收到电子邮件,因为同样通过 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

我目前收到带有“电子邮件”的 KeyErorr,因为机器人用户没有电子邮件字段。有没有办法完全忽略机器人用户。目前,所有用户 ID 均从 Channels.info 获取并循环通过 users.info,因此从 Channels.info 收集每个用户 ID 的信息

最佳答案

为了避免客户端出现异常,可以使用dictionary.get()让它返回None,而不是抛出KeyError。

email = r.json()['user']['profile'].get('email')
if email is not None:
   result.append(email)

这个问题中有一些关于dictionary.get()的更多细节及其答案:Why dict.get(key) instead of dict[key]?

关于python - 使用 users.info 时有没有办法忽略机器人用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57913455/

相关文章:

python - 无法在 Ubuntu Wily 上运行 Kivy

python - 模拟 Python shell 的 "return value"行为

python - 匹配 latex 的正则表达式

python - slackclient python - 异步 RTM 客户端

python - 使用 slack webhook 馈送字符串

azure - 通过azure逻辑应用程序通知slack中的@channel

webhooks - 松弛传入 webhook - 将消息发送到另一个 channel

artificial-intelligence - Recast 机器人连接器的 recast.ai 机器人的终点 url 是什么

python - keras:样本权重多重不平衡输出

javascript - DynamoDb 放入 node.js lambda 后合并异步 http 请求函数时出现问题