我基本上想将此代码转换为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
}
答案 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()
所做的事情。