Как я могу обновить голосовой канал, когда пользователь входит в гильдию с 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 ответа
Чтобы переименовать 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
Если идентификатор канала неправильный, он бросит NPE на channel.getManager()
так как getTextChannelById
вернет ноль. я использовал getMemberCache()
вместо getMembers()
потому что это более эффективно для такого рода кода. Размер доступен непосредственно в экземпляре представления кэша и не требует копирования всего кэша в список, что эффективно getMembers()
делает.