Как я могу обновить голосовой канал, когда пользователь входит в гильдию с JDA - PullRequest
0 голосов
/ 26 мая 2019

Я в основном хотел преобразовать этот код в 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 голосов
/ 31 мая 2019

Чтобы изменить сущность в 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().

0 голосов
/ 28 мая 2019

Чтобы переименовать TextChannel, вы должны использовать менеджер. Например это:

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

Проверьте Channel # getManager () для получения дополнительной информации.

...