intellij-idea onGuildMemberJoin不起作用/未被调用

jaql4c8m  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(207)

'公共类VerificationSystem扩展了ListenerAdapter {

@Override
public void onGuildMemberJoin(GuildMemberJoinEvent event) {
    System.out.println("WORKS!");
    String memberName = event.getMember().getEffectiveName();

    Member member = event.getMember();

    event.getGuild().addRoleToMember(member,event.getGuild().getRoleById("1034143551568752682")).queue();    //Grants the new member "Unverified" role

    TextChannel textChannel = event.getGuild().createTextChannel("Verification for: " + memberName).complete();  // Creates new verification channel
    textChannel.getManager().getChannel().upsertPermissionOverride(event.getMember()).setAllowed(Permission.VIEW_CHANNEL).queue();  // Grants the new member view permissions to the channel
    textChannel.getManager().getChannel().upsertPermissionOverride(event.getGuild().getRoleById("1034143551568752682")).setDenied(Permission.VIEW_CHANNEL).queue(); // Revokes the view permission for @everyone

}`

事件寄存器:

JDA jda = JDABuilder.createDefault(token)
                .setActivity(Activity.playing("Football Manager"))
                .addEventListeners(new VerificationSystem())
                .build().awaitReady();

由于某种原因,这个方法不工作。它是正确注册的,它不工作,每当有人加入服务器。请帮助,这是杀了我!!

yhxst69z

yhxst69z1#

自从Discord的一个更新增加了“Intents”这样的东西。现在所有的开发者都必须指定他们的机器人需要什么样的数据。要接受成员加入的事件,你需要使用intent“GUILD_MEMBERS”。注意这个intent是priveleged,这意味着你可以很容易地使用它,直到你的机器人达到100台服务器,然后你必须从Discord得到验证。

  • 要在bot中启用Intent,请访问Developers portal
  • 要在JDA中启用Intent,请使用构建器中的enableIntents方法。
JDA jda = JDABuilder.createDefault(token)
      .setActivity(Activity.playing("Football Manager"))
      .addEventListeners(new VerificationSystem())
 // Enables GUILD_MEMBERS intent
      .enableIntents(GatewayIntent.GUILD_MEMBERS)
      .build().awaitReady();

相关问题