JDA getMembers() 只返回自机器人启动以来在聊天中写过的用户?
Posted
技术标签:
【中文标题】JDA getMembers() 只返回自机器人启动以来在聊天中写过的用户?【英文标题】:JDA getMembers() only returns users who wrote in the chat since the bot's startup? 【发布时间】:2021-03-04 02:15:46 【问题描述】:我目前正在使用 JDA 在 Java 中开发我的 discord 机器人。直到两周前它都运作良好。由于这次 JDA 似乎不再能够通过 event.getGuild().getMembers() 获取所有用户,因此它只会返回自机器人启动以来在聊天中写过文章的成员。使用 event.getGuild().getMemberCount() 方法,JDA 将提供正确数量的用户,但如果我使用 event.getGuild().getMembers().length 检查列表的长度,它只会给出数量用户,这在之前的聊天中写道。我做错了什么?
我的代码应该得到所有成员的列表:
String msg = "`" + guild.getMembers().get(0).getUser().getAsTag() + "`";
List<Member> members = guild.getMembers();
for (int i = 1; i < guild.getMemberCount(); i++)
msg = msg + ", `" + members.get(i).get.getUser().getAsTag() + "`" + event.getGuild().getMemberCount();
【问题讨论】:
这能回答你的问题吗? Discord JDA - Invalid Member List 【参考方案1】:您使用的方法仅返回缓存的成员,以获取您需要使用Guild#loadMembers()
的所有成员。
在此处了解更多信息:https://ci.dv8tion.net/job/JDA/javadoc/net/dv8tion/jda/api/entities/Guild.html#loadMembers()
【讨论】:
以上是关于JDA getMembers() 只返回自机器人启动以来在聊天中写过的用户?的主要内容,如果未能解决你的问题,请参考以下文章
JDA 事件获取器返回 null 并让所有成员在一个角色中只返回机器人本身
Discord JDA 在 GuildJoin 上添加自定义表情