Java 我的Discord机器人停止执行其命令

Java 我的Discord机器人停止执行其命令,java,discord,bots,Java,Discord,Bots,就在今天,我意识到我的机器人在一个新用户加入后没有做任何事情,尽管他应该像以前一样自动分配角色。经过一次快速检查,他对任何命令都不再做出反应,即使昨天一切正常 我的Bot仍然连接到服务器,对主功能的更改仍然会被识别(例如更改其联机状态或活动),但是EventListeners似乎没有反应,因此没有执行任何命令 Bot是用Java编码的,使用jdk 13,使用的库是net.dv8tion库JDA-4.2.0-175-withDependencies.jar 我已经尝试过但不起作用的事情: 让机器

就在今天,我意识到我的机器人在一个新用户加入后没有做任何事情,尽管他应该像以前一样自动分配角色。经过一次快速检查,他对任何命令都不再做出反应,即使昨天一切正常

我的Bot仍然连接到服务器,对主功能的更改仍然会被识别(例如更改其联机状态或活动),但是
EventListeners
似乎没有反应,因此没有执行任何命令

Bot是用Java编码的,使用jdk 13,使用的库是net.dv8tion库JDA-4.2.0-175-withDependencies.jar

我已经尝试过但不起作用的事情:

  • 让机器人重新加入
  • 刷新bot并尝试刷新令牌
  • 更新Java
  • 分配管理员权限(再次)
  • 使用
    create()
    -命令代替
    JDABuilder
    (可能是我做错了)
另外,我必须指出,其他机器人,例如我们服务器上的Rythm机器人,运行完全正常

下面是一些屏幕截图,可以提供您需要的信息(代码片段和discord示例)

我对编码“相当陌生”,所以即使你不得不批评一些代码片段,我也很乐意实现升级或更干净的代码,但最重要的是让这个机器人再次运行。我希望你能帮忙

编辑:代码段作为文本

    public class Main {
    public static JDA jda;
    public static String prefix = "rev";
    public static String adminPrefix = "toolkit";


    public static void main(String[] args) throws LoginException {
        jda = new JDABuilder(AccountType.BOT).setToken("my bot token").build();
        jda.getPresence().setStatus(OnlineStatus.IDLE);
        jda.getPresence().setActivity(Activity.playing("mit nem Butterfly"));
        jda.addEventListener(new commands());
        jda.addEventListener(new serverJoin());
        jda.addEventListener(new adminCommands());
        jda.addEventListener(new selfRoles());
        jda.addEventListener(new chatlog());
        jda.addEventListener(new selfRoleRemove());
    }
}
示例类:加入服务器

public class serverJoin extends ListenerAdapter {


    public void onGuildMemberJoin(GuildMemberJoinEvent event) {
        Guild guild = event.getGuild();
        Role role = guild.getRoleById(736342426632847381L); //initialisiert die oben eingegebe Rolle
        Member member = event.getMember(); //sucht, wer gejoined ist
        assert role != null;
        guild.addRoleToMember(member, role).complete(); //vergibt die Rolle
        String[] nachrichten = {
                "[member] hat sich auf diesen Discord verirrt, warmen Empfang bitte!",
                "Macht gefälligst Platz für [member]!",
                "Willkommen bei Reveries, [member]",
                "Hey [member], schönen Aufenthalt!",
                "Räumt gefälligst auf, wir wollen keinen schlechten Eindruck gegenüber [member] machen!",
        };
        Random zufallsZahlMacher = new Random();
        int zufallsZahl = zufallsZahlMacher.nextInt(nachrichten.length); //zufällige Textlinie von String[] nachrichten

        EmbedBuilder information = new EmbedBuilder();
        information.setColor(0x00ffff);
        information.setDescription(nachrichten[zufallsZahl].replace("[member]", member.getAsMention()));
        information.setFooter("Willkommen! " + event.getMember().getUser().getName(), event.getMember().getUser().getAvatarUrl());
        event.getGuild().getTextChannelById(753546835347374171L).sendMessage(information.build()).queue();

        event.getUser().openPrivateChannel().flatMap(privateChannel -> privateChannel.sendMessage("**Willkommen auf dem Revery-Discord!** \n Damit du einen guten Start auf dem Server hast, bitten wir dich, die Regeln zu lesen und eine kurze Vorstellung in den #vorstellrunde-Channel zu schreiben. \n Nachdem du deine Vorstellung geschrieben hast (*welche mind. Name, Alter, Hobbies, Musikrichtung und Lieblingsspiel beeinhaltet*), wird dich zeitnah ein Serverteam-Mitglied freischalten und du kriegst Zugang zu unserem Server. \n Damit ein guter Start gewährleistet ist, bitten wir dich, den Command revhelp in den #bot-commands-Channel zu schreiben. \n \n \uD835\uDC16\uD835\uDC22\uD835\uDC2B \uD835\uDC1F\uD835\uDC2B\uD835\uDC1E\uD835\uDC2E\uD835\uDC1E\uD835\uDC27 \uD835\uDC2E\uD835\uDC27\uD835\uDC2C \uD835\uDC1A\uD835\uDC2E\uD835\uDC1F \uD835\uDC1D\uD835\uDC22\uD835\uDC1C\uD835\uDC21!")).queue();
        }
    }

JDABuilder构造函数
新的JDABuilder(..)
自6月份以来一直被弃用。您应该改用
JDABuilder.createDefault(令牌)
。要使用
onGuildMemberJoin
,文档还告诉您需要
GatewayIntent.GUILD\u成员。使用
enableentents
在您的
JDABuilder上启用此功能自6月份以来,JDABuilder构造函数
新的JDABuilder(…)
已被弃用。您应该改用
JDABuilder.createDefault(令牌)
。要使用
onGuildMemberJoin
,文档还告诉您需要
GatewayIntent.GUILD\u成员。在您的
JDABuilder
上使用
enableIntents

启用此功能。您应该将bot发布到github或将相关代码作为文本包含在内,是否有任何在启动时引发的异常需要查找?它只显示SLF4J:未能加载类“org.SLF4J.impl.StaticLoggerBinder”。&加载类“org.slf4j.impl.StaticMDCBinder”失败,但我以前也遇到过这个错误,它没有干扰。它还发出了一个警告,
JDABuilder
已被弃用,以前也没有干扰。直到这个问题发生之前,我没有对代码进行任何更改,所以我没有发布所有代码,因为到目前为止它编译正确,工作正常。不过我发布了serverJoin类,它应该相应地执行,但它根本就不执行。好吧,如果您的日志记录设置失败,它是否可能稍后尝试记录错误,但由于日志记录不起作用而失败?将SLF4J workSLF4J默认设置为NOP实现,即使我尝试手动实现它。我的问题已经解决了,但我想知道“错误日志记录”的缺点,如果您有时间做一个简短的解释:)。您应该将bot发布到github或将相关代码作为文本包含在内,是否在启动时抛出任何异常,您需要查找?它只说SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。&未能加载类“org.slf4j.impl.StaticMDCBinder”“,但是我以前也犯过这个错误,它没有干扰。它还发出了一个警告,
JDABuilder
已被弃用,以前也没有干扰。直到这个问题发生之前,我没有对代码进行任何更改,所以我没有发布所有代码,因为到目前为止它编译正确,工作正常。不过我发布了serverJoin类,它应该相应地执行,但它根本就不执行。好吧,如果您的日志记录设置失败,它是否可能稍后尝试记录错误,但由于日志记录不起作用而失败?将SLF4J workSLF4J默认设置为NOP实现,即使我尝试手动实现它。我的问题已经解决了,但是如果您有时间做一个简短的解释,我想知道“错误日志”的缺点:)。非常感谢!这+在他的角色中给机器人手动权限(因为它错误地更新了开发者门户中的权限)能够修复我的问题!非常感谢你!这+在他的角色中给机器人手动权限(因为它错误地更新了开发者门户中的权限)能够修复我的问题!