【问题标题】:Discord Bot won't delete messages(Eclipse IDE Java with JDA API)Discord Bot 不会删除消息(带有 JDA API 的 Eclipse IDE Java)
【发布时间】:2019-10-25 09:48:52
【问题描述】:

我尝试发出清除命令,删除用户在不和谐频道中想要的消息量。但是,它没有成功。

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,因此很可能与删除消息有关。

【问题讨论】:

  • 不应该是split(" ")而不是split("")吗?
  • 该方法可能应该从ListenerAdapter 覆盖onGuildMessageReceived。您的方法名称似乎有误。

标签: java discord discord-jda


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-06-30
    • 2021-06-02
    • 2021-07-06
    • 2023-01-12
    • 2022-01-05
    • 2020-05-11
    • 2021-09-10
    • 2021-01-28
    • 2021-06-17
    相关资源
    最近更新 更多