我的Discord-Bot停止执行其命令

时间:2020-10-27 15:04:40

标签: java discord bots

直到今天,我才意识到我的机器人在新用户加入后并没有做任何事情,即使他应该像以前一样自动分配角色。快速检查后,即使昨天一切正常,他也不再响应任何命令。

我的机器人仍然连接到服务器,并且仍然可以识别对主要功能的更改(例如,更改其在线状态oder活动),但是EventListeners似乎没有反应,因此没有命令被执行。

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

我已经尝试过的方法不起作用:

  • 让机器人重新加入
  • 刷新机器人并尝试刷新令牌
  • 更新Java
  • 再次分配管理员权限
  • 使用create()命令而不是JDABuilder也许我做错了

另外,我必须指出,其他Bot,例如我们服务器上的Rythm-Bot,可以完全正常运行。

以下是一些屏幕截图,可以提供您所需的信息(代码段和不一致示例)

https://imgur.com/a/r9U0ZBZ

我对编码“还不是很陌生”,所以即使您不得不批评显示的一些代码片段,我也将很乐意实现升级或更简洁的代码,但是主要的优先任务是让此bot重新运行。希望您能提供帮助!

编辑:代码段为文本

    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();
        }
    }

1 个答案:

答案 0 :(得分:0)

JDABuilder构造函数new JDABuilder(..)自6月以来已被弃用。您应该改用JDABuilder.createDefault(token)。要使用onGuildMemberJoin,文档还告诉您GatewayIntent.GUILD_MEMBERS是必需的。通过JDABuilderenableIntents上启用此功能。