上载文件时无法发送空消息

时间:2020-01-13 20:59:51

标签: python discord

我想使用Python和Discord API将public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception { TextFlow text = new TextFlow( new Text("Search Everywhere\n"), new Text("Project View\n"), new Text("Go to File\n") ); text.setTextAlignment(TextAlignment.LEFT); FlowPane root = new FlowPane(text); root.setAlignment(Pos.CENTER); primaryStage.setScene(new Scene(root, 400, 400)); primaryStage.show(); } } 发送到文本通道,但是我不断收到错误消息:

{“消息”:“无法发送空消息”,“代码”:50006”}

我认为我已经按照文档中的说明完成了所有工作,但我不知道出了什么问题。 我知道,我可以为此使用一个已经存在的python库(例如discord.py),但我只是在使用API​​,而我无法弄清这里是什么问题。

discord.png

1 个答案:

答案 0 :(得分:1)

您的代码中有一些小错误,但是这里的主要问题实际上是Discord文档非常容易引起误解。

发送文件(或多个文件)时,如文档所示,通过发送请求的file字段中的内容来完成不是。而是,文件应位于请求的主体中,如第二个示例here

POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"

--boundary
Content-Disposition: form-data; name="field1"

value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"

value2
--boundary--

requests模块使我们可以非常方便地使用files参数来完成此操作:

data = {"payload_json": payload_json}
headers = {"Authorization": f"Bot {TOKEN}", "User-Agent": "DiscordBot"}
r = requests.post(f"{http_api}/channels/{CHANNEL_ID}/messages", data,
                  files={"discord.png": file_data}, headers=headers)

请注意,无需设置Content-TypeContent-Disposition标头-requests将为您解决这些问题。

有关使用files参数进行请求的更多示例/说明,请参见this question