使用python将文件上载到SLACK时,如何解决"从None KeyError:[SLACK_BOT_TOK



这是我的代码,用于将pdf文件发送到我的空闲工作区。但它会产生错误。

client = WebClient(token=os.environ[SLACK_BOT_TOKEN])
try:
filepath = "./output.pdf"
response = client.files_upload(channels='#mychannelid_here', file=filepath)
assert response["file"]  # the uploaded file
except SlackApiError as e:
# You will get a SlackApiError if "ok" is False
assert e.response["ok"] is False
assert e.response["error"]  # str like 'invalid_auth', 'channel_not_found'
print(f"Got an error: {e.response['error']}")

错误为:

从None引发KeyError(key(键错误:SLACK_BOT_TOKEN_HERE

提前感谢您的帮助!

最好将getenv与默认值一起使用(如果有意义的话(。

import os
SLACK_BOT_TOKEN = 'SLACK_BOT_TOKEN'
DEFAULT_SLACK_BOT_TOKEN_VALUE = 'Hello Slack'
token = os.getenv(SLACK_BOT_TOKEN, DEFAULT_SLACK_BOT_TOKEN_VALUE)
print(token)

您试图引用变量SLACK_BOT_TOKEN,但您的代码没有定义具有此名称的变量。

您可能指的是token=os.environ["SLACK_BOT_TOKEN"],其中在环境中查找文本字符串SLACK_BOT_TOKEN(因此您应该有一个具有此名称的环境变量,现在您正在查找它(。

一种常见的安排是将令牌存储在代码中没有保存的地方(因此不在git存储库等中(,并要求您在运行Python之前在环境中设置它。因此,例如

bash$ secrettoken="your token here"
bash$ export secrettoken
bash$ python -c 'import os; print(os.environ["secrettoken"])'
your token here

这在Windows上的工作原理类似(尽管不完全相同(,有着通常不同的语法和奇怪的角用例。

最新更新