用户使用JDA进入公会时如何更新语音通道
Posted
技术标签:
【中文标题】用户使用JDA进入公会时如何更新语音通道【英文标题】:How can I update the voice channel when a user enters the guild with JDA 【发布时间】:2019-10-12 09:34:42 【问题描述】:我基本上是想把这段代码转换成JDA
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
【问题讨论】:
你的问题是什么,用英语? 如果您能提供一些有关错误的信息,那就太好了。 【参考方案1】:要重命名 TextChannel,您必须使用管理器。 例如:
event.getGuild().getTextChannelById(573629024102776853L).getManager().setName("Total Users:" + event.getGuild().getMembers().size());
查看Channel#getManager()了解更多信息。
【讨论】:
后缀L
表示它是一个长文本。 ID 对于整数文字来说太大了,因此需要使用L
后缀,否则编译器会说它对于整数来说太大了。【参考方案2】:
要修改 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()
所做的。
【讨论】:
以上是关于用户使用JDA进入公会时如何更新语音通道的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JDA 在 Discord 服务器(不是用户/机器人 DM)中创建私人频道:Java Discord API