【发布时间】:2021-12-20 01:58:14
【问题描述】:
这就是我的代码的样子:
public void onGuildVoiceJoin(GuildVoiceJoinEvent event) {
String channelId = event.getChannelJoined().getId();
if (channelId.equals("904375329764814870")) {
Member member = event.getMember();
String memberName = event.getMember().getEffectiveName();
Category category = event.getGuild().getCategoryById("904364634507706468");
event.getGuild().createVoiceChannel("Coaching " + memberName).setParent(category).complete();
List<VoiceChannel> channelList = event.getGuild().getVoiceChannelsByName("Coaching " + memberName, true);
VoiceChannel channel = channelList.get(0);
event.getGuild().moveVoiceMember(member, channel).queue();
while (true){
event.getGuild().getTextChannelById("904364671467929610").sendMessage(
"Number of people currently on the channel : " + channel.getMembers().size()
).queue();
wait(3000);
}
我的目标是获取当前频道内的人数。
我认为 getMembers() 方法是个好方法,但它不起作用
我使用无限 while 来查看当我加入/离开频道时 channel.getMembers().size() 是否发生变化,但它仍然返回 0。
我该如何解决这个问题?并在频道内获得正确数量的人作为回报。
【问题讨论】:
-
你为什么在一段时间内发送垃圾邮件是真的?
-
当您发送这样的垃圾邮件时,您只需创建一个大型邮件队列,由于速率限制,这些邮件将延迟发送。如果该值实际更改,则该更改只会在该队列赶上时才会出现,这可能需要很长时间。相反,也许只使用 println?当您的侦听器继续运行时,getMembers 的缓存也不会更新,因为所有缓存都由在您返回之前无法触发的事件更新。
-
谢谢@Minn,我暂时使用了 3 秒的延迟,我忘了在这里粘贴。是否可以更新 getMembers 缓存?我的代码的最终目标是在他没有用户时删除频道。关于我如何做到这一点的任何想法?
-
您是否尝试过将每个成员存储在列表中?然后从列表中获取当前成员?例如:List
users = guild.getMemberCount();
标签: java discord discord-jda