Discord Bot 的 "KICK" 命令不起作用 JDA
Discord Bot's "KICK" command is not working JDA
今天刚开始使用 JDA v4.1。1_137。我在发出踢球命令时遇到了麻烦,而其他 YouTube 用户在使用它时却获得了成功。我不知道为什么它只发生在我身上。
我使用 event.getGuild().kick()
和 net.dv8tion.jda.api
。
变量如下:
String authorID = event.getAuthor().getId();
String messageID = event.getMessageId();
String message = event.getMessage().getContentRaw();
Member member = event.getMember();
Message msg = event.getMessage();
Member author = event.getMessage().getMember();
String channelID = event.getChannel().getId();
String authorFull = event.getAuthor().getAsTag();
String Channel = event.getChannel().getName();
这是踢球部分的代码:
if (message.toLowerCase().equals("m!kick")) {
if (event.getMessage().getMentionedMembers().isEmpty()){
return;
}
Member target = msg.getMentionedMembers().get(0);
if (!member.canInteract(target) || !member.hasPermission(Permission.KICK_MEMBERS)) {
event.getChannel().sendMessage("You are missing permission to kick this member").queue();
return;
}
final Member selfMember = event.getGuild().getSelfMember();
if (!selfMember.canInteract(target) || !selfMember.hasPermission(Permission.KICK_MEMBERS)) {
event.getChannel().sendMessage("I am missing permissions to kick that member").queue();
return;
}
event.getGuild()
.kick(target, "hi")
.reason("hi")
.queue(
(__) -> event.getChannel().sendMessage("Kick was successful").queue(),
(error) -> event.getChannel().sendMessageFormat("Could not kick %s", error.getMessage()).queue()
);
}
看起来您的命令语法类似于 !kick @member
。
因此您可能想要检查消息 是否以 !kick
开头,而不是检查是否相等。或者最好检查第一个空格 space 之前的子字符串是否等于 !kick
.
现在,如果您要使用正确的语法执行命令,您将无法通过第一个条件,因为字符串类似于 !kick @member
。相反,如果您的代码段中的第一个条件为真,则 event.getMessage().getMentionedMembers()
为空并且您的方法 returns.
今天刚开始使用 JDA v4.1。1_137。我在发出踢球命令时遇到了麻烦,而其他 YouTube 用户在使用它时却获得了成功。我不知道为什么它只发生在我身上。
我使用 event.getGuild().kick()
和 net.dv8tion.jda.api
。
变量如下:
String authorID = event.getAuthor().getId();
String messageID = event.getMessageId();
String message = event.getMessage().getContentRaw();
Member member = event.getMember();
Message msg = event.getMessage();
Member author = event.getMessage().getMember();
String channelID = event.getChannel().getId();
String authorFull = event.getAuthor().getAsTag();
String Channel = event.getChannel().getName();
这是踢球部分的代码:
if (message.toLowerCase().equals("m!kick")) {
if (event.getMessage().getMentionedMembers().isEmpty()){
return;
}
Member target = msg.getMentionedMembers().get(0);
if (!member.canInteract(target) || !member.hasPermission(Permission.KICK_MEMBERS)) {
event.getChannel().sendMessage("You are missing permission to kick this member").queue();
return;
}
final Member selfMember = event.getGuild().getSelfMember();
if (!selfMember.canInteract(target) || !selfMember.hasPermission(Permission.KICK_MEMBERS)) {
event.getChannel().sendMessage("I am missing permissions to kick that member").queue();
return;
}
event.getGuild()
.kick(target, "hi")
.reason("hi")
.queue(
(__) -> event.getChannel().sendMessage("Kick was successful").queue(),
(error) -> event.getChannel().sendMessageFormat("Could not kick %s", error.getMessage()).queue()
);
}
看起来您的命令语法类似于 !kick @member
。
因此您可能想要检查消息 是否以 !kick
开头,而不是检查是否相等。或者最好检查第一个空格 space 之前的子字符串是否等于 !kick
.
现在,如果您要使用正确的语法执行命令,您将无法通过第一个条件,因为字符串类似于 !kick @member
。相反,如果您的代码段中的第一个条件为真,则 event.getMessage().getMentionedMembers()
为空并且您的方法 returns.