Java 如何使用JDA禁止不和谐的人?

Java 如何使用JDA禁止不和谐的人?,java,intellij-idea,discord-jda,Java,Intellij Idea,Discord Jda,如何使用JDA禁止不和谐的人?我试了很多次,但都没用。 我试图在JavaJDA中创建一个bot,我想实现一个命令,管理员可以在其中禁止用户使用bot 这是ban命令的基本代码: String[] args = event.getMessage().getContentRaw().split("\\s+"); // gets message from mod and splits every whitespace. if (args[0].equalsIgnoreCase(M

如何使用JDA禁止不和谐的人?我试了很多次,但都没用。 我试图在JavaJDA中创建一个bot,我想实现一个命令,管理员可以在其中禁止用户使用bot

这是ban命令的基本代码:

String[] args = event.getMessage().getContentRaw().split("\\s+"); // gets message from mod and splits every whitespace.

if (args[0].equalsIgnoreCase(Main.prefix + "ban")) {
    // ban code here
}
您可以使用(例如,使用
成员
):

Guild Guild=event.getGuild();
Member Member=event.getNitenedMembers().get(0)//TODO检查是否存在
guild.ban(成员,0,“ban命令”).queue();
这将使用
ban命令
从公会中禁止
成员
,而不删除任何消息

如果第二个参数不是
0
,discord将删除用户在过去n天内发送的所有消息(其中n是参数)

该消息是可选的,您也可以使用
用户
或id代替成员

集成在代码中,它可能如下所示:

String[]args=event.getMessage().getContentRaw().split(\\s+”)//从mod获取消息并拆分每个空格。
if(args[0].equalsIgnoreCase(Main.prefix+“ban”)){
如果(args.length==1){//没有参数
//错误消息
}
否则,如果(event.getNikedMembers().isEmpty()){//未提及成员,请尝试使用参数作为ID
event.getGuild().ban(args[1],0,“ban命令”).queue();
}其他{//提到的成员
event.getGuild().ban(event.getNitenedMembers().get(0),0,“ban命令”).queue();
}
}

由于您正在尝试使用(或不使用)ID,此答案可能会有所帮助

if(args[0].equalsIgnoreCase(Main.prefix+“ban”)&&!event.getAuthor().isBot(){
试一试{
成员目标=event.getMessage().getNitenedMembers().get(0);
如果(!event.getMember().canInteract(target)| |!event.getMember().hasPermission(Permission.BAN|u MEMBERS)){
event.getChannel().sendMessage(“您没有禁止此成员所需的权限!”).queue();
返回;
}
最终成员selfMember=event.getGuild().getSelfMember();
if(!selfMember.canInteract(target)| |!selfMember.hasPermission(Permission.BAN_MEMBERS)){
event.getChannel().sendMessage(“我没有踢这个成员所需的权限!”).queue();
返回;
}
event.getGuild().ban(目标,0,“原因”).queue();
event.getChannel().sendMessage(target.getUser().getName()+“已成功禁用”).queue();
}捕获(阵列索引边界外异常){
试一试{
User target=Main.jda.getUserById(args[1]);
如果(!event.getMember().canInteract(event.getGuild().getMember(target))| |!event.getMember().hasPermission(Permission.BAN_MEMBERS)){
event.getChannel().sendMessage(“您没有禁止此成员所需的权限!”).queue();
返回;
}
最终成员selfMember=event.getGuild().getSelfMember();
if(!selfMember.canInteract(event.getGuild().getMember(target))| |!selfMember.hasPermission(Permission.BAN_MEMBERS)){
event.getChannel().sendMessage(“我没有踢这个成员所需的权限!”).queue();
返回;
}
event.getGuild().ban(目标,0,“原因”).queue();
event.getChannel().sendMessage(“用户已成功被禁止”).queue();
}捕获(异常ex2){
event.getChannel().sendMessage(“用户不在服务器中,或ID无效”).queue();
}   
}
}
它首先检查是否有提及,如果没有,它实际上会导致异常,因此
try
&
catch
会有所帮助,如果失败,机器人会检查ID,如果没有,它会发送原因。 注意:ID区域中的
target
变量以
Main.jda
开头,其中
Main
是bot所在的主类(令牌、状态),
jda
是您的
jda
变量


如果您有任何问题,请留下评论。

您能给我一个基于编辑的代码吗?像这样?请注意,这只是一种可能性。它不起作用。你需要说什么不起作用。请注意,bot需要具有
BAN_成员
权限,并且bot的最高角色需要高于要禁止的用户的最高角色。我已授予bot admin权限。这就是在discord中使用ban命令时出现的情况:指定的ID不是有效的雪花()。需要一个有效的长值!