首页 > 解决方案 > Discord API (JDA) 从特定公会获取用户

问题描述

try {
    final JDABuilder jdaBuilder = JDABuilder.createDefault(TOKEN_ID);
    jdaBuilder.addEventListeners(new DiscordListener());
    _jdaBuild = jdaBuilder.build();
} catch(final LoginException e) {

}

我尝试使用

_jdaBuild.getUserById(userId);

但它总是返回null。我还尝试对所有 Guild 然后对所有文本通道然后对所有成员执行一个 for,但在日志中它只显示来自所有文本通道的 Bot 的 ID。不是其他用户。

我如何从公会获取基于他的 ID 或名称的用户群并向他发送私人信息?

标签: java

解决方案


您需要使用JDA#retrieveUserById​(long),因为JDA#getUserById(long)仅当用户被缓存时才有效:

try {
    final JDABuilder jdaBuilder = JDABuilder.createDefault(TOKEN_ID);
    jdaBuilder.addEventListeners(new DiscordListener());
    _jdaBuild = jdaBuilder.build();
} catch(final LoginException e) {
    //...
}
//...
User user = _jdaBuild.retrieveUserById("...").complete();

推荐阅读