Вы можете использовать addPermissionOverride на ChannelAction
, который возвращается createCopyOfChannel
.
EnumSet<Permission> permissions = EnumSet.of(Permission.VIEW_CHANNEL);
Role role = event.getGuild().getRoleById(582333645948452874L);
VoiceChannel channel = event.getGuild().getVoiceChannelById(583088218145292298L);
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
) и запрещаете доступ к ней из нее.