Как я могу обновить голосовой канал, когда пользователь входит в гильдию с 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() делает.

Другие вопросы по тегам