禁止命令无法正常使用JDA,请帮助调试所有内容

时间:2020-10-30 21:47:50

标签: discord-jda

你好,所以我在JDA中制作了一个机器人,我刚刚做了一个ban命令,但是它并不禁止任何代码 我提到了用户,还提出了一个理由,并给出了用户ID,仍然没有任何作用

localDateTime.atZone(ZoneId.of("Europe/Paris")).toOffsetDateTime();

请帮助我已经坚持了一段时间。

1 个答案:

答案 0 :(得分:0)

就像Minn提到的那样,您没有正确地从ListenerAdapter重写该方法。名称和参数列表必须匹配。

此外,您正在检查整个消息是否等于{PREFIX}ban,但您的ban命令的结构类似于{PREFIX}ban (user),因此您的代码始终在此行停止:

    if(msg.equalsIgnoreCase(Bot.PREFIX + "ban"))

因为正确使用命令永远都不是。

这应该可以工作(我将msg检查更改为从equals开始,我已将方法名称更改为具有正确参数的方法ListenerAdapter,然后我保留了您的用法通过拆分msg字符串并将其放入列表来确定args:

public class Ban extends ListenerAdapter {

    @Override
    public void onGuildMessageReceived(GuildMessageReceivedEvent e) {
        String msg = e.getMessage().getContentRaw();
        if (msg.startsWith(Bot.PREFIX + "ban")) {
            TextChannel channel = e.getChannel();
            Member member = e.getMember();
            List<Member> mentionedMembers = e.getMessage().getMentionedMembers();

            List<String> args = Arrays.asList(msg.split(" "));
            if (mentionedMembers.isEmpty() || args.size() < 2) {
                channel.sendMessage("Missing Arguments").queue();
                return;
            }

            Member target = mentionedMembers.get(0);
            String reason = String.join(" ", args.subList(1, args.size()));

            if (!member.hasPermission(Permission.BAN_MEMBERS) && !member.canInteract(target)) {
                channel.sendMessage("You dont have pmerission to run this command").queue();
                return;
            }

            target.ban(1)
                    .reason(String.format("Ban by: %#s, with reason: %s", e.getAuthor(), reason)).queue();
        }
    }
}