Bots Unban命令JDA 4.1.1_101,can';我不能让它工作,我也不能';我不知道为什么

Bots Unban命令JDA 4.1.1_101,can';我不能让它工作,我也不能';我不知道为什么,bots,discord,discord-jda,Bots,Discord,Discord Jda,我正在用JDA4.1.1_101编写一个Discord机器人。我创建了“ban”命令,但无法使unban命令工作。我真的不明白为什么。。。谢谢你的帮助 if(args[0].equalsIgnoreCase(Main.prefix+“unban”)){ if(event.getGuild().getSelfMember().hasPermission(Permission.BAN_MEMBERS)){ 如果(args.length>0&&args.length{ message.delete()

我正在用JDA4.1.1_101编写一个Discord机器人。我创建了“ban”命令,但无法使unban命令工作。我真的不明白为什么。。。谢谢你的帮助

if(args[0].equalsIgnoreCase(Main.prefix+“unban”)){
if(event.getGuild().getSelfMember().hasPermission(Permission.BAN_MEMBERS)){
如果(args.length>0&&args.length<3){
试一试{
event.getMessage().delete().queue();
用户成员=event.getMessage().getNitenedMembers().get(0.getUser();
String id=member.getId();
event.getGuild().unban(id.queue();
EmbeddeBuilder ban=新的EmbeddeBuilder();
ban.setColor(Color.GREEN);
禁令。设定所有权(“UnBan”);
禁令。说明(“UnBan报告”);
ban.addField(“Staffer:,event.getMessage().getAuthor().getName(),true);
ban.addField(“Unban:,member.getName(),true);
logs.sendMessage(ban.build()).queue();
}捕获(IndexOutOfBoundsException exx){
EmbeddeBuilder错误=新建EmbeddeBuilder();
错误。设置颜色(0xff3923);
error.setTitle(“error:User”);
错误。setDescription(“无效用户”);
event.getChannel().sendMessage(error.build()).queue(message->{
message.delete().queueAfter(5,TimeUnit.SECONDS);
});
}
}否则{
EmbeddeBuilder错误=新建EmbeddeBuilder();
错误。设置颜色(0xff3923);
错误.setTitle(“错误:错误用法”);
错误。setDescription(“使用:.unban[@user]”;
event.getChannel().sendMessage(error.build()).queue(message->{
message.delete().queueAfter(5,TimeUnit.SECONDS);
});
}
}
}

问题是,您正试图从消息中提及的内容中检索用户

由于用户不再是公会的一部分,这似乎不起作用

为了解决这个问题,您必须手动检索ID

提及的内容总是采用
的格式

要获取ID,您可以拆分消息并替换不必要的部分,例如,
String ID=event.getMessage().getContentRaw().split(“”[0]。replace(“!”,“”)。replace(“@)”,“”)

我相信有更好、更流畅的方法可以做到这一点

检索ID的更好方法是使用正则表达式,如Minn提到的

为了获得用户名,您只需要通过
event.getJDA().getUserById(ID).getName()获取ID

必须指出的是,您不能正确地提及不在服务器上的用户(当他们被禁止时就是这种情况)


(另外:我尝试使用
.getNiteedUsers()
,结果与OP相同。)

您只能正确地提及属于公会成员的用户。检索ID的更好方法是使用正则表达式,如
。谢谢,但我刚刚意识到我无法标记某个人不在我的Discord服务器中。。。是否有方法获取不在服务器ID中的用户?如果在用户设置中启用开发人员模式(用户设置->外观->开发人员模式),则只需右键单击被禁止的用户并获取ID(服务器设置->禁止)。您也可以使用此ID而不提及用户,因为您只需要它,而不需要其他任何东西。