java - Discord Bot 不会删除消息(带有 JDA API 的 Eclipse IDE Java)

标签 java discord discord-jda

我尝试创建一个清除命令,它会删除用户在不和谐 channel 中想要的消息量。然而,这并没有成功。

public void onGuildReceived(GuildMessageReceivedEvent event) {
        Message objMsg = event.getMessage();
        String[] args = objMsg.getContentRaw().split("");
        if(args[0].equalsIgnoreCase(Ref.prefix + "purge")) {
            if(args.length <= 2) {
                //TODO
            }else {
                event.getMessage().delete().queue();
                TextChannel target = event.getMessage().getMentionedChannels().get(0);
                purgeMessages(target, Integer.parseInt(args[2]));
            }
        }
    }
    private void purgeMessages(TextChannel channel, int numberofMessages) {
        MessageHistory history = new MessageHistory(channel);
        List<Message> msgs;

        msgs = history.retrievePast(numberofMessages).complete();
        channel.deleteMessages(msgs).queue();

    }

我希望机器人删除指定数量的消息。然而,它没有任何回应。我已将这种 if 语句方法用于其他命令,例如检查您的 ping,因此它很可能与删除消息有关。

最佳答案

channel.deleteMessages(msgs).queue();,如 JDA 文档中所述,“批量删除消息列表。这与在循环中调用 Message.delete() 不同。” JDA 文档没有提到这一点的一件事是,discord 只限制批量删除不到 2 周的消息。因此,要删除较旧的邮件,您必须将它们一一删除。这是几个月前施加的限制。

我所知道的其他可能的问题已在文档中说明,最常见的是不遵守这些问题:

  • “必须至少有 2 条消息,且一次不得超过 100 条消息。如果只有 1 条消息,请改用 Message.delete() 方法。”
  • “您必须拥有此 channel 的 MESSAGE_MANAGE 权限才能使用此功能。”

关于java - Discord Bot 不会删除消息(带有 JDA API 的 Eclipse IDE Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56535789/

相关文章:

java - 如何添加对嵌入消息的 react JDA

java - 通过 unicode 添加表情符号 react 不起作用

java - IntelliJ event.getmessage() 和 "event"已识别

java - JVM如何执行JNI

java - VoIP RTP 流从/到服务器(在 Java 中)到/从 android

javascript - 使用不和谐的存在.状态.等于

java - SQL WHERE 无法与 Discord 一起使用

javascript - 如何使用 discord.js 调用 SubCommand 的选项? (v13)

Java - 检查数字是否为 Not Null,否则分配默认字符串值

java - 从 Apache Ant 运行 JUnit 并包含 jar 文件会导致 "JUnitTask was not found"