【问题标题】:Discord Bot's "KICK" command is not working JDADiscord Bot 的“KICK”命令不起作用 JDA
【发布时间】:2020-08-07 11:52:54
【问题描述】:

今天刚开始使用 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()
                    );
        }

【问题讨论】:

    标签: java discord-jda


    【解决方案1】:

    看起来您的命令语法类似于!kick @member

    因此,您可能希望检查消息是否以 !kick 开头,而不是检查是否相等。或者最好检查第一个空格之前的子字符串是否等于!kick

    现在,如果您要使用正确的语法执行命令,则不会超过第一个条件,因为字符串将类似于 !kick @member。相反,如果您的 sn-p 中的第一个条件为真,则event.getMessage().getMentionedMembers() 为空并且您的方法返回。

    【讨论】:

    • 我花了这么长时间才考虑到这一点,现在我想起来了,我想:等一下,如果我做“m!kick ...”甚至不起作用,因为它不会' t 触发。
    猜你喜欢
    • 2021-01-05
    • 2018-03-04
    • 2021-07-18
    • 2021-03-01
    • 2019-07-31
    • 2021-02-28
    • 1970-01-01
    • 2020-08-16
    • 2021-01-02
    相关资源
    最近更新 更多