【问题标题】:Welcome Listener Does Not Work(Java Discord JDA)欢迎监听器不起作用(Java Discord JDA)
【发布时间】:2021-06-03 13:41:17
【问题描述】:

我试图让我的机器人在有人加入时欢迎某人,但我似乎无法让它工作。例如(顺便说一句,这会出现在嵌入中):

@Jason joined. You must construct additional pylons.

有人可以帮我编辑我的代码以使其正常工作吗?

这是我的主要代码:

import Events.*;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.Activity;

import javax.security.auth.login.LoginException;

public class Main {
    public static void main(String[] args) throws LoginException {
        JDABuilder jda = JDABuilder.createDefault("I imported key here");
        jda.setActivity(Activity.watching("baldness"));

        jda.addEventListeners(new Help());
        jda.addEventListeners(new PingPong());
        jda.addEventListeners(new Clear());
        jda.addEventListeners(new Welcome());

        jda.build();

    }
}

这是我的欢迎代码:

package Events;

import java.util.Random;

import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

public class Welcome extends ListenerAdapter {

    public class GuildMemberJoin extends ListenerAdapter {

        String[] messages = {
                "[member] joined. You must construct additional pylons.",
                "Never gonna give [member] up. Never let [member] down!",
                "Hey! Listen! [member] has joined!",
                "Ha! [member] has joined! You activated my trap card!",
                "We've been expecting you, [member].",
                "It's dangerous to go alone, take [member]!",
                "Swoooosh. [member] just landed.",
                "Brace yourselves. [member] just joined the server.",
                "A wild [member] appeared."
        };

        public void onGuildMemberJoin(GuildMemberJoinEvent event) {
            Random rand = new Random();
            int number = rand.nextInt(messages.length);

            EmbedBuilder join = new EmbedBuilder();
            join.setColor(0x66d8ff);
            join.setDescription(messages[number].replace("[member]", event.getMember().getAsMention()));

            event.getGuild().getDefaultChannel().sendMessage(join.build()).queue();
        }
    }
}

【问题讨论】:

    标签: java discord-jda


    【解决方案1】:

    documentation fo GuildMemberJoinEvent 明确指出:

    要求

    此事件需要启用 GUILD_MEMBERS 意图。 createDefault(String) 和 createLight(String) 默认禁用此功能!

    所以你必须启用意图。阅读更多维基指南Gateway Intents and Member Cache Policy

    此外,您有一个无缘无故的嵌套类,这意味着您将封闭类注册为侦听器,而不是实际实现它的嵌套类。

    更好:

    public class Welcome extends ListenerAdapter {
      @Override
      public void onGuildMemberJoin(GuildMemberJoinEvent event) {
        ...
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 2017-12-22
      • 2021-08-06
      • 2018-10-18
      • 2020-11-13
      • 2021-02-28
      • 2021-06-07
      • 2021-06-11
      • 2020-06-15
      相关资源
      最近更新 更多