MuteSetup命令无法设置有效的Mute命令

时间:2020-11-04 07:02:02

标签: java discord discord-jda

我最近一直在尝试执行“静音设置”命令,该命令会创建一个静音角色,但是当您将某人静音时,他们仍然可以通话。有帮助吗?

我的代码:

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();
}
}

2 个答案:

答案 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?