如何使用 JDA 将带有消息的文件发送到 Discord?

How to send file with message to Discord with JDA?

我正在使用 JDA 库创建我的 discord 机器人,我遇到了一个问题:为了发送带有文件的消息,我应该使用现有的消息:

RestAction<Message> sendFile(File file, Message message)
RestAction<Message> sendFile(File file, String fileName, Message message)
RestAction<Message> sendFile(InputStream data, String fileName, Message message)

没有使用简单字符串消息发送文件的实现。因此,当我尝试发送文件并向其传递消息时,我收到了重复的消息。

所以问题是:如何在不复制邮件的情况下创建带有附件的Message

我在发布文件后通过消息编辑解决了这个问题。

sendFile(file, null).queue(message -> {
    message.editMessage("Message").queue()
})

正确的方法是用一个MessageBuilder格式化构建一个Message.

Message message = new MessageBuilder().append("My message").build();
textChannel.sendFile(new File("my-file.txt"), message).queue();

在 JDA 中,Message 对象不一定已发送。

您可以像这样一次性发送带有附件的消息:

//channel is a MessageChannel object or similar
channel.sendMessage("message").addFile(new File("path/to/file")).queue();