我尝试创建一个清除命令,它会删除用户在不和谐 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/