我正在尝试创建用户可以分配给自己的角色,然后创建仅该角色可以看到的隐藏语音聊天。到目前为止,我已经创建了一个角色,并使用下面的代码创建了隐藏的语音聊天。但是现在我不知道如何向新创建的角色添加权限以加入新创建的语音聊天。
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();
答案 0 :(得分:0)
您可以在ChannelAction
返回的createCopyOfChannel
上使用addPermissionOverride。
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
)并拒绝对其的视图访问。