Java 如何在JDA中发送图像

Java 如何在JDA中发送图像,java,eclipse,discord-jda,Java,Eclipse,Discord Jda,我想制作一个discord机器人,当用户键入-m skelt时,机器人将显示一张图片。到目前为止,我得到的是:有人能帮我吗。谢谢 package lairex59.Commands; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import lairex59.Main; import net.dv8tio

我想制作一个discord机器人,当用户键入-m skelt时,机器人将显示一张图片。到目前为止,我得到的是:有人能帮我吗。谢谢

package lairex59.Commands;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import lairex59.Main;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.events.message.guild.GuildMessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

public class Comment extends ListenerAdapter
{
    public void onGuildMessageReceived(GuildMessageReceivedEvent event){
        String[] args = event.getMessage().getContentRaw().split("\\s+");
        
        if (args[0].equalsIgnoreCase(Main.prefix + "help")) {
            EmbedBuilder info = new EmbedBuilder();
            info.setTitle(":among_us_lime:Among Us help cnter");
            info.setDescription("Among Us code center :office:");
            info.setColor(0xf45642);
            info.setFooter("Created by Laraib", event.getMember().getUser().getAvatarUrl());
            
            event.getChannel().sendTyping().queue();
            event.getChannel().sendMessage(info.build()).queue();
            info.clear();
        }
        if ((args[0].equalsIgnoreCase(Main.prefix + "m")) && (args[1].equalsIgnoreCase("polus"))) {
            event.getChannel().sendTyping().queue();
            event.getChannel().sendMessage("Polus file").queue();
        }
        if (args[0].equalsIgnoreCase(Main.prefix + "m") && (args[1].equalsIgnoreCase("mira"))) {
            event.getChannel().sendTyping().queue();
            event.getChannel().sendMessage("Mira file").queue();
        }
        if (args[0].equalsIgnoreCase(Main.prefix + "m") && (args[1].equalsIgnoreCase("skelt"))) {
            event.getChannel().sendTyping().queue();

            BufferedImage image = null;
            File f = null;
            
            try {
                f = new File ("D:\\Laraib\\Images\\Skelt.jpg");
                image = ImageIO.read(f);
            }
            catch(IOException e) {
                System.out.println("Error"+e);
            }
            try {
                f = new File ("D:\\Laraib\\Images\\Skelt.jpg");
                ImageIO.write(image, "jpg", f);
            }
            catch (IOException e) {
                System.out.println("Error"+e);
            }
        }
        
    }


}

我设法读取了文件,但不知道如何告诉机器人发送图像。需要一切帮助。谢谢

Discord不要求指定发送的文件是图像还是其他内容,它只是发送文件,是客户端从文件扩展名将图像显示为图像,因此您的BuffereImage是无用的

所以,要发送您的图像,这很愚蠢: MessageAction界面有一个方法
MessageAction\addFile(File)

您所要做的就是调用此方法,并将所有这些信息发送给错误的人(例如队列方法)

File File=新文件(“路径”);
if(Objects.nonNull(文件)){
event.getChannel().sendMessage(“这是我的图像!”).addFile(file.queue();
}否则{
event.getChannel().sendMessage(“对不起,我找不到映像:c”).queue();
}
以下是java文档:

编辑:

或者,正如@minn提醒我的那样,您不必在MessageAction中添加文件,但可以使用方法
MessageChannel#sendFile(file)
直接发送文件,而无需添加其他内容


这是文件:

请提供更多详细信息。到目前为止你试过什么?你看过文件了吗?出现了什么错误?如果消息应该是文件,也可以使用
MessageChannel#sendFile