【问题标题】:Discord api ignores the 'file' elementDiscord api 忽略“文件”元素
【发布时间】:2021-08-11 07:53:02
【问题描述】:

我在 python 中使用请求上传文件时遇到问题。

非工作代码:

import requests

url = 'https://discord.com/api/v9/channels/XXXXX/messages'

headers = {
    'authorization': 'XXXXX'
}

data = {
    'file': open('test.png', 'rb')
}

r = requests.post(url=url, headers=headers, data=data)
print(r)
print(r.text)

这是我得到的回复:

<Response [400]>
{"message": "Cannot send an empty message", "code": 50006}

所以我尝试添加到数据"content": "Whoas"

data = {
    'file': open('test.png', 'rb'),
    "content": "Whoas"
}

现在至少会发送消息,但没有文件。 这是我得到的回复:

<Response [200]>
{"id": "XXXXX", "type": 0, "content": "Whoas", "channel_id": "XXXXX", "author": {"id": "XXXXX", "username": "XXXXX", "avatar": "XXXXX", "discriminator": "2885", "public_flags": 0}, "attachments": [], "embeds": [], "mentions": [], "mention_roles": [], "pinned": false, "mention_everyone": false, "tts": false, "timestamp": "2021-05-22T09:08:47.061000+00:00", "edited_timestamp": null, "flags": 0, "components": [], "referenced_message": null}

我很可能只是不理解 discord API 文档 (https://discord.com/developers/docs/resources/channel#create-message),遗憾的是它没有详细说明如何上传文件。

我已尝试将模块 discord.py 与 discord.File('test.png') 一起使用,但此方法不会返回我需要的上传文件的链接。

如果有人知道如何让它工作,将不胜感激!

【问题讨论】:

    标签: discord


    【解决方案1】:

    据我所知...您正在使用 API 调用来操作机器人。实际上,这是一个非常复杂的过程,这就是为什么我们有像 discord.py 这样的库来让一切变得更简单。如果你想创建一个机器人,你应该完全查看他们的documentation

    【讨论】:

    • 我确实在discord.py 中编写了一个机器人,但我在本地文件操作方面遇到了障碍,我想截取一个网站的屏幕截图,(我确实有一个工作代码,它返回图片的链接,仅在 24 小时内有效),所以我想将其下载到临时文件 test.png 或其他文件中,然后将其上传到 discord,然后我将使用 discord.embed.set_image(url={link to the uploaded image}) 至少没有办法据我所知,如何使用discord.py 上传文件并获取链接。而且我想避免使用第 3 方托管服务。感谢您的帮助
    • 我明白了,所以您可以使用一个小技巧将图像文件转换为可用于嵌入的有效 URL。您需要有一个机器人所在的单独频道(最好是没人会看到的私人测试服务器)。您可以让机器人发送带有附加文件的消息 (discordpy.readthedocs.io/en/stable/…)。然后,您可以获取该消息的附件 (discordpy.readthedocs.io/en/stable/…),并获取 Discord URL (discordpy.readthedocs.io/en/stable/…)。
    • 哦,你是对的,这是有效的,非常感谢!
    • 很高兴能帮上忙!
    猜你喜欢
    • 2011-06-29
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    相关资源
    最近更新 更多