如何在使用 JDA 制作 Discord Bot 时将用户转换为成员? (Java)

How to cast User to Member during making Discord Bot with JDA? (Java)

我在使用 JDA 制作 Discord Bot 期间创建成员变量时遇到问题。我想创建一个具有具体用户 ID 的成员变量,但我遇到了一个问题,即并非我的 Discord 服务器的所有用户都对 bot 可见。

这是仅显示 1 个用户而不是 3 个用户的代码。(仅打印机器人名称)

jda.getUsers().stream()
            .map(User::getName)
            .forEach(System.out::println);

这是导致错误的代码。

Member member = event.getGuild().getMemberById("*************");
System.out.println(member.getNickname());

例如,此代码可以正常工作(打印必要的用户名)

User user = event.getJDA().retrieveUserById("*************").complete();
System.out.println(user.getName)

Here's the error shown by IDE

(我需要 Member 变量来使用仅适用于 Member 变量的 .modifyNickname 更改用户名)

您有什么想法可以使用 userID 创建成员变量吗?或者也许我可以以某种方式将用户转换为成员?感谢您的帮助。

看看GatewayIntent。目前,成员未兑现。 根据您的用例,只需检索类似于您对用户所做的那样的成员就足够了。

event.getGuild().retrieveMemberById(id).queue()

请注意,不建议使用 .complete()。坚持使用 .queue(),因为它是异步的,不会阻塞您的线程。