java - 如何授予新创建的角色加入新创建的 JDA 库语音聊天的权限?

标签 java permissions discord-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();

最佳答案

您可以使用addPermissionOverridecreateCopyOfChannel 返回的 ChannelAction 上。

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。然后,您可以在创建 channel 之前使用该角色 r 向 channel 添加权限覆盖。要拒绝其他人访问,您只需使用公共(public)角色 (@everyone) 并拒绝其查看访问即可。

关于java - 如何授予新创建的角色加入新创建的 JDA 库语音聊天的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56369369/

相关文章:

java - 从 Wildfly 11 升级到 Wildfly 15 时出现日期序列化问题

django-guardian 示例源代码

java - 如何将 List<String> 与 String 进行比较?

java - 如何使特定标签在 JList 中闪烁

java - 单击 ListItem 后如何更改 fragment 布局?

c# - 意外更改权限

复制程序: File Permission Denied

java - RichPresence 不再与 JDA 配合使用

java - Discord bot - Js 事件监听器发送多条消息

java - 如何避免我的 Android 应用程序显示在 "recent apps"列表中?