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

JDA开发Discord机器人 如何让purge清理指令跳过置顶消息

JDA Purge指令跳过置顶消息实现方案

JDA的Message类内置了isPinned()原生方法,可直接判断消息是否为置顶状态,返回值为true即代表是置顶消息,你只需要在删除逻辑前增加对应判断跳过即可,同时建议同步调整统计逻辑,避免最终提示的删除数量和实际删除数量不符。

修改后完整代码

public class Purge {

    public static void onPurgeCommand(SlashCommandEvent event) {

        event.deferReply().queue();
        JDA bot = Bot.bot;
        int amount = Integer.parseInt(event.getOption("amount").getAsString());
        // 统计实际删除的消息数量,避免跳过置顶后数据不准
        int deletedCount = 0;

        List<Message> messages = event.getChannel().getHistory().retrievePast(amount).complete();
        for (Message message: messages) {
            // 判断是置顶消息就跳过
            if (message.isPinned()) {
                continue;
            }
            message.delete().queue();
            deletedCount++;
        }
        event.getHook().sendMessage("**Es wurden "+deletedCount+" Nachrichten gelöscht.**").queue();
    }

}

核心改动说明

  • 新增deletedCount变量统计真实删除的消息数量,解决跳过置顶消息后提示文案和实际结果不一致的问题
  • 遍历消息时新增置顶状态校验,调用message.isPinned()判断为置顶消息时直接执行continue跳过删除操作
  • 最终回复的提示文案替换为实际删除的deletedCount变量,反馈结果更准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 16:51:03