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

时间:2019-06-11 02:43:35

标签: java discord discord-jda

我尝试过执行清除命令,该命令会删除用户在不和谐频道中想要的消息量。但是,它没有解决问题。

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();

    }

我希望漫游器删除指定的消息量。但是,它没有任何回应。我在其他命令(例如检查ping)中使用了if语句的这种方法,因此删除消息很有可能是这种情况。

1 个答案:

答案 0 :(得分:0)

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

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

  • “一次必须至少包含2条消息,并且最多不得超过100条消息。如果只有1条消息,请改用Message.delete()方法。”
  • “该频道必须具有MESSAGE_MANAGE权限才能使用此功能。”