我已经设置了SLACK_TOKEN环境变量。但"SLACK_TOKEN=os.environ.get('SLACK_TOKEN')"
正在返回“无”。
SLACK_TOKEN 的类型为 NoneType 。我认为os.environ.get没有获取环境变量的值。所以其余代码没有执行。
import os
from slackclient import SlackClient
SLACK_TOKEN= os.environ.get('SLACK_TOKEN') #returning None
print(SLACK_TOKEN) # None
print(type(SLACK_TOKEN)) # NoneType class
slack_client = SlackClient(SLACK_TOKEN)
print(slack_client.api_call("api.test")) #{'ok': True}
print(slack_client.api_call("auth.test")) #{'ok': False, 'error': 'not_authed'}
def list_channels():
channels_call = slack_client.api_call("channels.list")
if channels_call['ok']:
return channels_call['channels']
return None
def channel_info(channel_id):
channel_info = slack_client.api_call("channels.info", channel=channel_id)
if channel_info:
return channel_info['channel']
return None
if __name__ == '__main__':
channels = list_channels()
if channels:
print("Channels: ")
for c in channels:
print(c['name'] + " (" + c['id'] + ")")
detailed_info = channel_info(c['id'])
if detailed_info:
print(detailed_info['latest']['text'])
else:
print("Unable to authenticate.") #Unable to authenticate
答案 0 :(得分:2)
我遇到了类似的问题。我通过删除值中的引号来修复它。 例: 我创建了一个local.env文件,其中存储了我的密钥值:
*local.env:*
export SLACK_TOKEN=xxxxxyyyyyyyzzzzzzz
*settings.py:*
SLACK_TOKEN = os.environ.get('SLACK_TOKEN')
在python终端或控制台中,运行命令:*source local.env*
****将local.env包含在gitignore中。请确保您不要将其推送到git,因为您必须保护自己的信息。
这仅适用于本地服务器。希望这有帮助。快乐编码:)
答案 1 :(得分:1)
就我而言,我在环境文件中写入了错误的内容:
SLACK_TOKEN=xxxxxyyyyyyyzzzzzzz
我忘记了export
,正确应该是:
export SLACK_TOKEN=xxxxxyyyyyyyzzzzzzz