用户使用JDA进入行会时如何更新语音通道

时间:2019-05-26 16:29:54

标签: java discord-jda

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

JavaScript

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
}

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

要在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将返回null。 我使用getMemberCache()代替getMembers(),因为它对于这种代码更有效。该大小直接在缓存视图实例上可用,不需要将整个缓存复制到列表中,而列表实际上就是getMembers()所做的事情。