Discord Bot 不会删除消息(带有 JDA API 的 Eclipse IDE Java)
Posted
技术标签:
【中文标题】Discord Bot 不会删除消息(带有 JDA API 的 Eclipse IDE Java)【英文标题】:Discord Bot won't delete messages(Eclipse IDE Java with JDA API) 【发布时间】: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
。您的方法名称似乎有误。
【参考方案1】:
channel.deleteMessages(msgs).queue();
,如 JDA 文档中所述,“批量删除消息列表。这与在循环中调用 Message.delete() 不同。”
JDA 文档没有提到这一点的一件事是,discord 将批量删除仅限于不到 2 周的消息。因此,要删除较旧的消息,您必须将它们一一删除。这是几个月前施加的限制。
文档中说明了我所知道的其他可能的问题,最常见的是不遵守这些问题:
“一次必须至少有 2 条消息,并且不能超过 100 条消息。如果您只有 1 条消息,请改用 Message.delete() 方法。” “您必须拥有此频道的权限 MESSAGE_MANAGE 才能使用此功能。”【讨论】:
以上是关于Discord Bot 不会删除消息(带有 JDA API 的 Eclipse IDE Java)的主要内容,如果未能解决你的问题,请参考以下文章
如何获取 Bot 消息 ID 并编辑消息 - Discord JDA Java
Discord bot 无法使用 JDA 在 java 中发送消息
带有 discord.py 的 Discordbot 不会使用命令 ctx.channel.purge(*amount*) 删除消息