我已经编写了以下方法,但它们都不起作用。有人知道为什么以及如何解决它吗?
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();
}
默认频道设置
答案 0 :(得分:0)
引用JDA Wiki:
有很多原因可能导致您的事件监听器无法执行,但这是最常见的问题:
- 您使用了错误的登录令牌?
如果令牌用于无法访问所需公会的其他机器人,则事件侦听器代码无法运行。- 您的机器人实际上不在行会中吗?
确保您的漫游器处于在线状态并且可以访问您要与之交互的资源。- 您从未注册过听众?
在jda.addEventListener(new MyListener())
或JDABuilder
实例上使用JDA
- 您没有覆盖正确的方法?
使用@Override
看看是否失败。您的方法必须使用ListenerAdapter
中定义的正确名称和参数列表。- 您实际上并没有扩展
EventListener
或ListenerAdapter
。
您的课程应该使用或使用extends ListenerAdapter
或implements EventListener
。- 您错过了此活动的必填
GatewayIntent
。
请确保您在enableIntents(...)
上JDABuilder
以允许接收事件。- 该事件还有其他可能无法满足的要求,例如未启用缓存。
请检查事件文档上的要求。如果以上都不适用,那么您的侦听器代码可能有问题,此时应使用调试器。
为澄清起见:
您可以通过在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();