You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JDA中使用什么方法可以检测消息是否包含图片?

JDA检测消息是否包含图片的实现方法

核心调用方法

JDA 中所有消息附件的信息都封装在 Message.Attachment 类中,你只需要两步即可完成检测:

  • 调用 Message#getAttachments() 方法获取当前消息携带的所有附件列表
  • 调用 Message.Attachment#isImage() 方法判断单个附件是否为图片类型,该方法会自动识别附件的后缀与 MIME 类型,不需要手动做格式校验

完整示例代码

import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.jetbrains.annotations.NotNull;

public class ImageCommandListener extends ListenerAdapter {
    // 替换为你自定义的交互指令
    private static final String TARGET_COMMAND = "!random-reply";

    @Override
    public void onMessageReceived(@NotNull MessageReceivedEvent event) {
        // 过滤机器人自身发送的消息,避免循环触发
        if (event.getAuthor().isBot()) return;
        
        String content = event.getMessage().getContentRaw();
        // 匹配用户触发的指令
        if (!TARGET_COMMAND.equals(content)) return;

        // 检测是否携带图片附件
        boolean hasImage = event.getMessage().getAttachments()
                .stream()
                .anyMatch(Message.Attachment::isImage);

        if (hasImage) {
            // 替换为你生成随机字符串的逻辑
            String randomReply = "随机应答字符串";
            event.getChannel().sendMessage(randomReply).queue();
        }
    }
}

注意事项

  • isImage() 方法支持识别常见的所有图片格式,包括 png、jpg、gif、webp 等
  • 如果需要过滤动态图/静态图,可以额外通过 Attachment#getFileExtension() 方法获取后缀做二次判断

内容的提问来源于stack exchange,提问作者Vincent Banks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:54:04