我想使用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
答案 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-Type
或Content-Disposition
标头-requests
将为您解决这些问题。
有关使用files
参数进行请求的更多示例/说明,请参见this question。