JDA。公会会员加入/离开活动

时间:2020-06-08 17:04:38

标签: java bots discord-jda

我已经编写了以下方法,但它们都不起作用。有人知道为什么以及如何解决它吗?

PS:该机器人具有管理员权限。

std::string
public class GuildMemberJoin extends ListenerAdapter {
    public void onGuildMemberJoin(GuildMemberJoinEvent event) {
        EmbedBuilder join = new EmbedBuilder();

        join.setColor(Color.getHSBColor(227, 74, 64));
        join.setTitle("SERVER UPDATE");
        join.setDescription(event.getMember().getAsMention() + " has now joined The server!");
        event.getGuild().getDefaultChannel().sendMessage(join.build()).queue();
    }

默认频道设置

channel settings

1 个答案:

答案 0 :(得分:0)

引用JDA Wiki

有很多原因可能导致您的事件监听器无法执行,但这是最常见的问题:

  1. 您使用了错误的登录令牌?
    如果令牌用于无法访问所需公会的其他机器人,则事件侦听器代码无法运行。
  2. 您的机器人实际上不在行会中吗?
    确保您的漫游器处于在线状态并且可以访问您要与之交互的资源。
  3. 您从未注册过听众?
    jda.addEventListener(new MyListener())JDABuilder实例上使用JDA
  4. 您没有覆盖正确的方法?
    使用@Override看看是否失败。您的方法必须使用ListenerAdapter中定义的正确名称和参数列表。
  5. 您实际上并没有扩展EventListenerListenerAdapter
    您的课程应该使用或使用extends ListenerAdapterimplements EventListener
  6. 您错过了此活动的必填GatewayIntent
    请确保您在enableIntents(...)JDABuilder以允许接收事件。
  7. 该事件还有其他可能无法满足的要求,例如未启用缓存。
    请检查事件文档上的要求。

如果以上都不适用,那么您的侦听器代码可能有问题,此时应使用调试器。

为澄清起见:

您可以通过在GUILD_MEMBERS上执行builder.enableIntents(GatewayIntent.GUILD_MEMBERS)来启用JDABuilder意图。

例如:

JDABuilder builder = JDABuilder.createDefault(token);
builder.enableIntents(GatewayIntent.GUILD_MEMBERS);
builder.addEventListeners(myListener);
JDA jda = builder.build();