使用 users.info 时有没有办法忽略机器人用户?
Is there a way to ignore bot users when using users.info?
我正在尝试从 slack 上接收用户的电子邮件。所有用户 ID 都来自 channels.info,这也包括机器人用户 ID。当我 运行 users.info 查看频道中所有用户的信息时,它不会让我收到电子邮件,因为也通过 API 传递的 bot 用户不会有一个电子邮件字段。
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
我目前收到“电子邮件”的 KeyError,因为机器人用户没有电子邮件字段。有没有办法一起忽略机器人用户。目前所有用户 ID 都取自 channels.info 并循环遍历 users.info,因此从 channels.info
收集每个用户 ID 的信息
为了避免客户端出现异常,您可以使用 dictionary.get() 来获得它 return 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]?
我不确定您是如何检索某个频道的用户列表的(您是在呼叫 conversations.members
吗?)。
但是无论如何,在任何 API 方法中都无法预先选择只接收用户而不接收机器人。
但是您从 user.info
获得的用户对象包含字段 is_bot
,您可以在循环中检查它。
我正在尝试从 slack 上接收用户的电子邮件。所有用户 ID 都来自 channels.info,这也包括机器人用户 ID。当我 运行 users.info 查看频道中所有用户的信息时,它不会让我收到电子邮件,因为也通过 API 传递的 bot 用户不会有一个电子邮件字段。
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
我目前收到“电子邮件”的 KeyError,因为机器人用户没有电子邮件字段。有没有办法一起忽略机器人用户。目前所有用户 ID 都取自 channels.info 并循环遍历 users.info,因此从 channels.info
收集每个用户 ID 的信息为了避免客户端出现异常,您可以使用 dictionary.get() 来获得它 return 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]?
我不确定您是如何检索某个频道的用户列表的(您是在呼叫 conversations.members
吗?)。
但是无论如何,在任何 API 方法中都无法预先选择只接收用户而不接收机器人。
但是您从 user.info
获得的用户对象包含字段 is_bot
,您可以在循环中检查它。