Как дать вновь созданной роли разрешения присоединиться к вновь созданному голосовому чату с библиотекой JDA?
Я пытаюсь создать роли, которые пользователи могут назначить себе, а затем создать скрытые голосовые чаты, которые может видеть только эта роль. Пока что я создал роль и создал скрытый голосовой чат с кодом ниже. Но сейчас я не знаю, как добавить разрешения для вновь созданной роли, чтобы присоединиться к недавно созданному голосовому чату.
event.getGuild().getController().createCopyOfRole(event.getGuild().getRoleById("582333645948452874")).setMentionable(true).setName(messageSent[1]).queue();
event.getGuild().getController().createCopyOfChannel(event.getGuild().getVoiceChannelById("583088218145292298")).setName(messageSent[1]).queue();
1 ответ
Вы можете использовать addPermissionOverride на ChannelAction
что возвращается createCopyOfChannel
,
EnumSet<Permission> permissions = EnumSet.of(Permission.VIEW_CHANNEL);
Role role = event.getGuild().getRoleById("582333645948452874");
VoiceChannel channel = event.getGuild().getVoiceChannelById("583088218145292298");
GuildController controller = event.getGuild().getController();
controller.createCopyOfRole(role)
.setMentionable(true)
.setName(messageSent[1])
.queue((r) -> {
controller.createCopyOfChannel(channel)
.setName(messageSent[1])
// allow the new role to view the channel
.addPermissionOverride(r, permissions, null)
// Don't allow the everyone role to view the channel
.addPermissionOverride(guild.getPublicRole(), null, permissions)
.queue();
});
Новая созданная роль доступна в обратном вызове очереди. В моем случае я назвал это r
, Затем вы можете использовать эту роль r
добавить переопределение прав доступа к каналу перед его созданием. Чтобы запретить доступ другим, вы просто используете публичную роль (@everyone
) и запретить просмотр доступа с него.