繁体   English   中英

JDA#getGuilds() 方法返回一个空列表

[英]The JDA#getGuilds() method is returning an empty list

所以我正在体验 discord JDA api 的事情。 我试图获取我的机器人的服务器,但它根本不起作用。

public static void main(String[] args) {
        JDABuilder jdab = JDABuilder.create("token",GatewayIntent.DIRECT_MESSAGES);
        JDA jda = null;
        try { jda = jdab.build();
        } catch (LoginException e) { e.printStackTrace(); }
        assert jda != null;
        System.out.println(jda.getGuilds().size());
        for(Guild g : jda.getGuilds()) {
            System.out.println(g.getName());
        }
   }

但实际上它只显示 0,这意味着 getGuilds() 方法的列表是空的。

任何帮助将不胜感激,并感谢您的任何回答

JDABuilder#build的文档指出:

登录进程在不同的线程中运行,所以虽然这会立即返回,但 JDA 还没有完成加载,因此许多 JDA 方法有机会返回不正确的信息。 例如,对于任意用户 ID, JDA.getGuilds() 可能会返回一个空列表,或者 JDA.getUserById(long) 可能会返回 null。

如果您希望确定 JDA 信息是正确的,请使用 JDA.awaitReady() 或注册一个 EventListener 来监听 ReadyEvent。

所以你要做的就是调用awaitReady()来阻塞主线程,直到 JDA 准备好。 只有这样,您才能可靠地访问 JDA 缓存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM