JDA进入公会后如何更新语音通道

How can I update the voice channel when a user enters the guild with JDA

我基本上是想将此代码转换为 JDA

Java脚本

bot.channels.get(serverStats.totalUserID).setName(`Total Users: ${member.guild.memberCount}`);

Java(错误)

public void onGuildJoin(GuildJoinEvent event) {
     event.getGuild().getTextChannelById(573629024102776853L).setName("Total Users:" + event.getGuild().getMembers().size()); //<---- Error
}

要重命名 TextChannel,您必须使用管理器。 例如:

  event.getGuild().getTextChannelById(573629024102776853L).getManager().setName("Total Users:" + event.getGuild().getMembers().size());

查看 Channel#getManager() 了解更多信息。

要修改 JDA 中的实体,您通常必须使用管理器。您几乎可以在每个实体上通过 getManager() 获取管理器实例。

TextChannel channel = guild.getTextChannelById(573629024102776853L);
channel.getManager()
       .setName("Total Users:" + guild.getMemberCache().size())
       .queue(); // this is needed, otherwise the request won't be made to discord

如果频道的 ID 不正确,它将在 channel.getManager() 上抛出 NPE,因为 getTextChannelById 将 return 为空。 我使用 getMemberCache() 而不是 getMembers() 因为它对这种代码更有效率。该大小直接在 cache-view 实例上可用,不需要将整个缓存复制到列表中,这实际上是 getMembers() 所做的。