Команда Discard Bot "KICK" не работает JDA - PullRequest
0 голосов
/ 24 апреля 2020

только что начал работу в JDA v4.1.1_137 сегодня. У меня были проблемы с выполнением команды удара, в то время как другие YouTubers добились успеха при ее использовании. Я не знаю, почему это происходит только со мной.

Я использую 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()
                    );
        }

1 Ответ

2 голосов
/ 24 апреля 2020

Похоже, что ваш командный синтаксис похож на !kick @member.

Так что вы, вероятно, захотите проверить, начинается ли сообщение с !kick вместо проверка на равенство. Или, предпочтительно, проверьте, равна ли подстрока перед первым пробелом !kick.

. Прямо сейчас, если бы вы выполнили команду с правильным синтаксисом, вы не смогли бы пройти через первое условие, потому что Строка будет что-то вроде !kick @member. И наоборот, если первое условие в вашем фрагменте истинно, event.getMessage().getMentionedMembers() пусто, и ваш метод возвращает.

...