直到今天,我才意识到我的机器人在新用户加入后并没有做任何事情,即使他应该像以前一样自动分配角色。快速检查后,即使昨天一切正常,他也不再响应任何命令。
我的机器人仍然连接到服务器,并且仍然可以识别对主要功能的更改(例如,更改其在线状态oder活动),但是EventListeners
似乎没有反应,因此没有命令被执行。
Bot使用Java编码,并使用jdk 13,使用的库是net.dv8tion库JDA-4.2.0-175-withDependencies.jar
我已经尝试过的方法不起作用:
create()
命令而不是JDABuilder
(也许我做错了)另外,我必须指出,其他Bot,例如我们服务器上的Rythm-Bot,可以完全正常运行。
以下是一些屏幕截图,可以提供您所需的信息(代码段和不一致示例)
我对编码“还不是很陌生”,所以即使您不得不批评显示的一些代码片段,我也将很乐意实现升级或更简洁的代码,但是主要的优先任务是让此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();
}
}
答案 0 :(得分:0)
JDABuilder构造函数new JDABuilder(..)
自6月以来已被弃用。您应该改用JDABuilder.createDefault(token)
。要使用onGuildMemberJoin
,文档还告诉您GatewayIntent.GUILD_MEMBERS
是必需的。通过JDABuilder
在enableIntents
上启用此功能。