【问题标题】:How to retrieve a specific Member from a Discord Guild using Java JDA如何使用 Java JDA 从 Discord Guild 中检索特定成员
【发布时间】:2021-05-07 21:26:08
【问题描述】:

我正在尝试使用以下方法从公会中获取特定的成员对象: event.getGuild().getMember(user) 在这里,user 是我想要从中获取 Member 对象的用户的 User 对象。我也尝试过使用 .getMemberById,而改用 userID。但是,在这两种情况下,我都会遇到空指针异常。

我确信我的用户对象和用户 ID 都是正确的,因为添加断点时它确实显示了这些,但它不检索成员,这保持为空。我是不是搞错了?

我还尝试将以下内容放入我启动机器人的主文件中:

JDABuilder builder = JDABuilder.createDefault(BOT_TOKEN);
builder.enableIntents(GatewayIntent.GUILD_MEMBERS);

在 Discord 开发者门户上,我启用了“Privileged Gateway Intents”选项。

【问题讨论】:

  • 你能发布整个 NP 异常吗?

标签: java discord-jda


【解决方案1】:

documentation of Guild#getMember 告诉您另见 Guild#retrieveMember 可用于加载未缓存的成员。

如果您有一个带有getMember()retrieveMember() 方法的事件,则应该使用它。否则你可以这样做:

guild.retrieveMember(user).queue(member -> {
  ... use member here
});

JDA wiki 中概述了其他替代方案:Gateway Intents and Member Cache Policy

大多数这些检索方法不要需要特权意图 GUILD_MEMBERS。仅当您想通过 loadMembersfindMembers 等方法与服务器的整个成员列表进行交互时才需要它。

【讨论】:

    猜你喜欢
    • 2021-06-02
    • 2020-12-24
    • 2021-05-05
    • 2021-09-19
    • 2020-07-28
    • 2021-09-06
    • 2020-10-23
    相关资源
    最近更新 更多