使用 Python 向 Slack 发送带有附件的消息
Send messages to Slack with attachments using Python
我正在尝试使用 Python 向 Slack 发送消息。它适用于普通邮件,但我需要附加文件。
在此示例中,我尝试发送位于我本地设备上的图像。在以下代码中:
import os
import slack
from slack_sdk import WebClient
from pathlib import Path
from dotenv import load_dotenv
from slack_sdk.errors import SlackApiError
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
client = slack.WebClient(token=os.environ['SLACK_TOKEN'])
try:
filepath = "./ccc.jpg"
response = client.files_upload(channels='#test', file=filepath)
assert response["file"] # the uploaded file
except SlackApiError as e:
assert e.response["ok"] is False
assert e.response["error"]
print(f"Got an error: {e.response['error']}")
当我尝试 运行 代码时,它显示了这种类型的 error/warning:
C:\ProgramData\Anaconda3\envs\practice\lib\site-packages\slack\deprecation.py:16: UserWarning: slack package is deprecated. Please use slack_sdk.web/webhook/rtm package instead. For more info, go to https://slack.dev/python-slack-sdk/v3-migration/
warnings.warn(message)
Got an error: missing_scope
有什么办法可以解决这种问题吗?
错误missing_scope表示具有此令牌的应用程序没有足够的权限,意思是'scope'是Slack中权限的术语。
要解决此问题,请在此处查看所需范围部分 https://api.slack.com/methods/files.upload
您会发现您需要为您的应用程序授予以下权限 'files:write',您可以转到 https://api.slack.com -> 右上角的应用程序 -> 选择您的应用程序并开始到 'OAuth & Permissions' 选项卡,向下滚动,您会找到范围部分,您可以从那里添加所需的范围。
您将在页面顶部收到一条通知(横幅),告知您需要重新安装您的应用,然后邀请您的 bot/application 加入您的频道并再次 运行 您的代码。
请确保使用最新的 slack_sdk,而不是已弃用的。
此脚本应该 运行 没有错误:
import os
from slack_sdk import WebClient
from pathlib import Path
from dotenv import load_dotenv
from slack_sdk.errors import SlackApiError
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
client = WebClient(token=os.environ['SLACK_TOKEN'])
try:
filepath = "./ccc.jpg"
response = client.files_upload(channels='#test', file=filepath)
assert response["file"] # the uploaded file
except SlackApiError as e:
assert e.response["ok"] is False
assert e.response["error"]
print(f"Got an error: {e.response['error']}")
我正在尝试使用 Python 向 Slack 发送消息。它适用于普通邮件,但我需要附加文件。
在此示例中,我尝试发送位于我本地设备上的图像。在以下代码中:
import os
import slack
from slack_sdk import WebClient
from pathlib import Path
from dotenv import load_dotenv
from slack_sdk.errors import SlackApiError
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
client = slack.WebClient(token=os.environ['SLACK_TOKEN'])
try:
filepath = "./ccc.jpg"
response = client.files_upload(channels='#test', file=filepath)
assert response["file"] # the uploaded file
except SlackApiError as e:
assert e.response["ok"] is False
assert e.response["error"]
print(f"Got an error: {e.response['error']}")
当我尝试 运行 代码时,它显示了这种类型的 error/warning:
C:\ProgramData\Anaconda3\envs\practice\lib\site-packages\slack\deprecation.py:16: UserWarning: slack package is deprecated. Please use slack_sdk.web/webhook/rtm package instead. For more info, go to https://slack.dev/python-slack-sdk/v3-migration/
warnings.warn(message)
Got an error: missing_scope
有什么办法可以解决这种问题吗?
错误missing_scope表示具有此令牌的应用程序没有足够的权限,意思是'scope'是Slack中权限的术语。
要解决此问题,请在此处查看所需范围部分 https://api.slack.com/methods/files.upload
您会发现您需要为您的应用程序授予以下权限 'files:write',您可以转到 https://api.slack.com -> 右上角的应用程序 -> 选择您的应用程序并开始到 'OAuth & Permissions' 选项卡,向下滚动,您会找到范围部分,您可以从那里添加所需的范围。
您将在页面顶部收到一条通知(横幅),告知您需要重新安装您的应用,然后邀请您的 bot/application 加入您的频道并再次 运行 您的代码。
请确保使用最新的 slack_sdk,而不是已弃用的。
此脚本应该 运行 没有错误:
import os
from slack_sdk import WebClient
from pathlib import Path
from dotenv import load_dotenv
from slack_sdk.errors import SlackApiError
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
client = WebClient(token=os.environ['SLACK_TOKEN'])
try:
filepath = "./ccc.jpg"
response = client.files_upload(channels='#test', file=filepath)
assert response["file"] # the uploaded file
except SlackApiError as e:
assert e.response["ok"] is False
assert e.response["error"]
print(f"Got an error: {e.response['error']}")