【问题标题】:MuteSetup command doesn't setup a working Mute commandMuteSetup 命令未设置有效的静音命令
【发布时间】:2021-02-16 21:01:04
【问题描述】:

我最近一直在尝试制作静音设置命令,它会创建一个静音角色,但是当您将某人静音时,他们仍然可以说话。有什么帮助吗?

我的代码:

if (raw.replace("S!", "").equals("mutesetup")) {
if (event.getMember().hasPermission(Permission.MANAGE_PERMISSIONS, Permission.MANAGE_ROLES)) {
if (true) {
event.getChannel().sendMessage("Sorry but this command is currently being fixed...").queue();
return;
}
event.getChannel().sendMessage("Starting setup...").queue();
event.getGuild().createRole().setName("Muted").setPermissions(Permission.EMPTY_PERMISSIONS).queue();
    
event.getChannel().sendMessage("Mute role successfully created!").queue();
} else {
event.getChannel().sendMessage("Sorry but you must have the `Manage Permissions` and `Manage Roles` permissions to use this command").queue();
}
}

【问题讨论】:

  • discord API 文档描述了如果另一个角色(也是@everyone)拥有该权限,则授予该权限。您需要为此配置频道覆盖。

标签: java discord discord-jda


【解决方案1】:

通过使用EMPTY_PERMISSIONS 创建角色,将所有角色的权限设置为 DEFAULT,这意味着它将使用用户对所述权限或@everyone 角色拥有的其他角色的权限级别(遵循角色层次结构),如果非适用于其他角色,并且只有在所有人角色禁用它的情况下,他们才会这样做。

要使静音角色无法发送消息/交谈,您需要在您希望他们无法交谈的频道/类别中将消息发送权限/交谈权限设置为拒绝:

category.createPermissionOverride(role).setDeny(Permission.MESSAGE_WRITE, Permission.VOICE_SPEAK).queue();

【讨论】:

    【解决方案2】:

    首先,下次可能尝试格式化你的代码,以便清晰。

    但是要回到您的问题,您当然还必须调整新创建角色的权限(因为名称与权限无关)。原则上,您只需拒绝 Speak 权限,这样 Discord 也可以了解用户在您新创建的角色中拥有什么,是否允许他们说话或是否可以写消息等。

    您只需在创建角色后将以下内容添加到您的代码中,这样您就可以告诉 Discord 用户可以使用您的角色做什么或不能做什么(如上所述)

    如果您添加以下代码,具有您角色的用户将无法再说话,也不会发送更多消息:

    category.createPermissionOverride(role).setDeny(Permission.VOICE_SPEAK, Permission.MESSAGE_WRITE).queue();
    

    当然,您可以对所有其他权限执行相同操作。 Deny (NO) 的反义词是 Grant (Yes)。最好通读本节以更好地了解 Discord 的权限系统:How do I set up Permissions?

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多