【问题标题】:Discord JDA GatewayIntent.GUILD_MEMBERS usage?不和谐 JDA GatewayIntent.GUILD_MEMBERS 用法?
【发布时间】:2020-10-22 19:57:43
【问题描述】:

我正在尝试添加 GUILD_MEMBERS GatewayIntent 以使用 onGuildMemberJoin 侦听器,但是当我执行此操作时程序“以退出代码 0 结束”:

private static void login(String token) {
    try {
        JDABuilder
                .create(token, GatewayIntent.GUILD_MESSAGES, GatewayIntent.GUILD_MEMBERS)
                .addEventListeners(new Listener())
                .build();
    }
    catch(Exception e) {
        e.printStackTrace();
    }

如果我删除 GUILD_MEMBERS,机器人会启动并正常运行。

我的监听器类只是打印一个值来测试它们是否正在触发:

public class Listener extends ListenerAdapter {

    @Override
    public void onReady(@Nonnull ReadyEvent event) {
        System.out.println("Bot is now running!");
    }

    @Override
    public void onGuildMessageReceived(@Nonnull GuildMessageReceivedEvent event) {
        System.out.println("message received");
    }

    @Override
    public void onGuildMemberJoin(@Nonnull GuildMemberJoinEvent event) {
        System.out.println("user joined");
    }
}

有什么想法吗?没有抛出异常,我在谷歌上找不到解决方案。

【问题讨论】:

    标签: java discord


    【解决方案1】:

    原来这是一个简单的修复。在关于 Gateway Intents 的 JDA Github 页面上,他们指定您必须:

    由于 GUILD_MEMBERS 是特权意图,您还必须启用它 在您的开发者仪表板中:

    1. 打开应用程序仪表板
    2. 选择您的机器人应用程序
    3. 打开机器人标签
    4. 在 Privileged Gateway Intents 部分下,启用 SERVERMEMBERS 意图。

    【讨论】:

    • 我建议您设置一个适当的 slf4j 实现,因为它确实会记录异常。我推荐 logback-classic。你可能有 slf4j-nop 你应该删除它。
    猜你喜欢
    • 2021-12-28
    • 2021-01-13
    • 2020-08-20
    • 2021-08-06
    • 2021-08-05
    • 2021-07-10
    • 2020-12-07
    • 2019-12-12
    • 2021-06-25
    相关资源
    最近更新 更多