我最近一直在尝试执行“静音设置”命令,该命令会创建一个静音角色,但是当您将某人静音时,他们仍然可以通话。有帮助吗?
我的代码:
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();
}
}
答案 0 :(得分:0)
通过使用EMPTY_PERMISSIONS
创建角色,将所有角色的权限设置为DEFAULT,这意味着它将使用用户对该权限或@everyone
具有的其他角色的权限级别(遵循角色层次结构)角色,如果该角色不适用于其他角色,则只有在所有人角色均已禁用的情况下,它们才会禁用。
要使静音角色无法发送消息/通话,您需要在希望它们无法讲话的频道/类别中将消息发送许可/通话许可设置为拒绝,以使其拒绝:
category.createPermissionOverride(role).setDeny(Permission.MESSAGE_WRITE, Permission.VOICE_SPEAK).queue();
答案 1 :(得分:0)
首先,下次尝试格式化代码以使其清晰可见。
但是要回到您的问题上,您当然也必须调整新创建角色的权限(因为名称与权利无关)。原则上,您只需要拒绝讲话权限,这样Discord就能了解用户在您新创建的角色中的身份,无论他们是否允许讲话或是否可以写消息,等等。
创建角色后,只需在代码中添加以下内容,即可告诉Discord用户可以或不能使用您的角色(如上所述)
如果添加以下代码,则具有您角色的用户将无法再讲话,也无法发送更多消息:
category.createPermissionOverride(role).setDeny(Permission.VOICE_SPEAK, Permission.MESSAGE_WRITE).queue();
当然,您可以对所有其他权限执行相同的操作。 拒绝(否)的反面是授予(是)。最好通读本节以更好地了解Discord的权限系统:How do I set up Permissions?