我正在尝试从 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/