我正在嘗試使用 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']}")
當我嘗試運行代碼時,它會顯示這種型別的錯誤/警告:
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
有什么辦法可以解決這類問題?
uj5u.com熱心網友回復:
錯誤 missing_scope 表示具有此令牌的應用程式沒有足夠的權限,這意味著“范圍”是 Slack 中權限的術語。
要解決此問題,請檢查此處的所需范圍部分https://api.slack.com/methods/files.upload
你會發現你需要給你的應用程式以下權限'files:write',你可以通過轉到https://api.slack.com -> 你的應用程式在右上角 -> 選擇你的應用程式并轉到'OAuth & Permissions' 選項卡,向下滾動,您將找到范圍部分,您可以從那里添加所需的范圍。
您將在頁面頂部收到一條通知(橫幅),您需要重新安裝您的應用程式,然后將您的機器人/應用程式邀請到您的頻道并再次運行您的代碼。
只要確保使用最新的 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']}")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/455081.html
標籤:Python python-3.x api 机器人 松弛API
