【问题标题】:How to Set Permission for a Role to False如何将角色的权限设置为 False
【发布时间】:2021-08-16 04:05:04
【问题描述】:

如何将角色的权限设置为 false。例如,我想创建一个不能发送消息的静音角色。

我知道如何使用 Permission.MESSAGE_WRITE 创建一个角色,设置为 true 但不是 false:

e.getGuild().createRole().setName("Muted").setPermissions(Permission.MESSAGE_WRITE).queue();

【问题讨论】:

  • 每个人都拥有他们所有角色的所有权限(包括@everyone)。如果您想创建一个静音角色,您可能需要使用每个频道的权限覆盖,因为这些可能会被拒绝。
  • 哦,所以没有办法让一个角色关闭这个权限:image?
  • 您可以确保用户拥有没有角色的权限,或者明确拒绝每个频道上的静音角色。

标签: java discord-jda


【解决方案1】:

使用 TextChannelCreateEvent 确保在创建文本通道时静音角色没有发送消息的权限。

代码:

    @Override
    public void onTextChannelCreate(TextChannelCreateEvent e) {
        try {
            TextChannel channel = e.getChannel();
            Guild guild = e.getGuild();
            Role role = guild.getRolesByName("Muted", false).get(0);
            channel.createPermissionOverride(role).setDeny(Permission.MESSAGE_WRITE).queue();

        } catch (IndexOutOfBoundsException error) {
            e.getGuild().createRole().setName("Muted").queue();
        }
    }

主要归功于@dan1st。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2016-01-30
    • 2020-12-05
    • 1970-01-01
    • 2021-05-28
    • 2016-10-12
    • 2011-06-25
    相关资源
    最近更新 更多