我如何使用 JDA 禁止不和谐的人?我尝试了很多次但不起作用。 我正在尝试在 Java JDA 中创建一个机器人,并且我想实现一个命令,管理员可以在其中禁止用户使用该机器人。
这是我的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
}
答案 0 :(得分:1)
您可以使用 Guild#ban
(例如使用 Member
):
Guild guild=event.getGuild();
Member member=event.getMentionedMembers().get(0);//TODO check if exists
guild.ban(member,0,"ban command").queue();
这会以 Member
为由禁止 ban command
加入公会,但不会删除任何消息。
如果第二个参数不是 0
,discord 将删除用户在过去 n 天内发送的所有消息(其中 n 是参数)
该消息是可选的,您也可以使用 User
或 ID 代替成员。
集成到您的代码中,它可能如下所示:
String[] args = event.getMessage().getContentRaw().split("\\s+"); // gets message from mod and splits every whitespace.
if (args[0].equalsIgnoreCase(Main.prefix + "ban")) {
if(args.length==1){//no argument
//error message
}
else if(event.getMentionedMembers().isEmpty()){//no mentioned members, try to use argument as ID
event.getGuild().ban(args[1],0,"ban command").queue();
}else{//mentioned members
event.getGuild().ban(event.getMentionedMembers().get(0),0,"ban command").queue();
}
}
答案 1 :(得分:0)
由于您尝试使用(和不使用)ID,此答案可能会有所帮助。
if(args[0].equalsIgnoreCase(Main.prefix+"ban") && !event.getAuthor().isBot()) {
try {
Member target = event.getMessage().getMentionedMembers().get(0);
if (!event.getMember().canInteract(target) || !event.getMember().hasPermission(Permission.BAN_MEMBERS)) {
event.getChannel().sendMessage("You don't have the required permission to ban this member!").queue();
return;
}
final Member selfMember = event.getGuild().getSelfMember();
if (!selfMember.canInteract(target) || !selfMember.hasPermission(Permission.BAN_MEMBERS)) {
event.getChannel().sendMessage("I don't have the required permission to kick this member!").queue();
return;
}
event.getGuild().ban(target, 0, "REASON").queue();
event.getChannel().sendMessage(target.getUser().getName()+" has been banned successfully.").queue();
}catch(ArrayIndexOutOfBoundsException ex) {
try {
User target = Main.jda.getUserById(args[1]);
if (!event.getMember().canInteract(event.getGuild().getMember(target)) || !event.getMember().hasPermission(Permission.BAN_MEMBERS)) {
event.getChannel().sendMessage("You don't have the required permission to ban this member!").queue();
return;
}
final Member selfMember = event.getGuild().getSelfMember();
if (!selfMember.canInteract(event.getGuild().getMember(target)) || !selfMember.hasPermission(Permission.BAN_MEMBERS)) {
event.getChannel().sendMessage("I don't have the required permission to kick this member!").queue();
return;
}
event.getGuild().ban(target, 0, "REASON").queue();
event.getChannel().sendMessage("User has been banned successfully.").queue();
}catch(Exception ex2) {
event.getChannel().sendMessage("The user is not in the server, Or Invalid ID").queue();
}
}
}
它首先检查提及是否存在,如果没有,它实际上会导致异常,所以 try
& catch
会有所帮助,如果失败,机器人将检查 ID,如果它不存在,它会发送一个原因。
注意:ID区域中的target
变量以Main.jda
开头,其中Main
是你的bot所在的主类(Token,Status),jda
是你的{{ 1}} 变量。
如果您有任何问题,请发表评论。