files.upload
上传文件时使用的令牌与我的 Slack 用户帐户关联。因此,使用此令牌执行的任何上传似乎都是由我完成的。
但是,我想指定类似
as_user
的内容(在使用 chat.PostMessage
时可用),这将使上传看起来好像是由指定的 Slack 用户上传的。这可能吗?
我有这个:
upload_file(filepath='/path/to/file.jpg',
channels='#uploads',
title='my image',
initial_comment='pls give me some feedback!')
这是被调用的函数:
import os
import requests
TOKEN = your_token_here
def upload_file(
filepath,
channels,
filename=None,
content=None,
title=None,
initial_comment=None):
"""Upload file to channel
Note:
URLs can be constructed from:
https://api.slack.com/methods/files.upload/test
"""
if filename is None:
filename = os.path.basename(filepath)
data = {}
data['token'] = TOKEN
data['file'] = filepath
data['filename'] = filename
data['channels'] = channels
if content is not None:
data['content'] = content
if title is not None:
data['title'] = title
if initial_comment is not None:
data['initial_comment'] = initial_comment
filepath = data['file']
files = {
'file': (filepath, open(filepath, 'rb'), 'image/jpg', {
'Expires': '0'
})
}
data['media'] = files
response = requests.post(
url='https://slack.com/api/files.upload',
data=data,
headers={'Accept': 'application/json'},
files=files)
return response.text
我确实找到了这个现有问题,但我根本没有找到明确的答案来说明可以采取哪些措施来实现这项工作。
没有用于通过 API 上传和共享文件的
as_user
选项。如果您想通过 files.upload
以其他用户身份将文件上传到 Slack 频道,您有两种选择:
您可以通过自定义或作为 Slack 应用程序的一部分来创建机器人用户。
files.upload 已弃用,您必须为此使用较新的 API,不幸的是,似乎没有办法直接从 Slack 应用程序/机器人将文件作为 DM 上传: https://stackoverflow.com/a/79231570/27551361