Команда MuteSetup не настраивает рабочую команду отключения звука

#java #discord #discord-jda

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

Комментарии:

1. В документах discord API описано, что разрешение предоставляется, если оно есть у другой роли (также @everyone ). Для этого необходимо настроить переопределения каналов.

Ответ №1:

Создавая роль EMPTY_PERMISSIONS , которая устанавливает все разрешения роли по УМОЛЧАНИЮ, что означает, что она будет использовать уровень разрешений других ролей (в соответствии с иерархией ролей), который пользователь имеет для указанного разрешения или @everyone роли, если оно неприменимо для других ролей, и только тогда, если у роли everyone оно отключено, так же будут ли они.

Чтобы сделать отключенную роль неспособной отправлять сообщения / разговаривать, вам нужно установить разрешение на отправку сообщений / разрешение на разговор, чтобы запретить в каналах / категориях, которые вы хотите, чтобы они не могли так разговаривать:

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

Ответ №2:

Прежде всего, попробуйте, возможно, отформатировать свой код в следующий раз, чтобы он был понятным.

Но чтобы вернуться к вашему вопросу, вы, конечно, должны также настроить разрешения вашей вновь созданной роли (поскольку имя не имеет значения с точки зрения прав). В принципе, вам нужно только запретить разрешения на разговор, чтобы Discord также понимал, что пользователи имеют в вашей недавно созданной роли, разрешено ли им говорить или нет, могут ли они писать сообщения и так далее.

Вам нужно только добавить следующее в свой код после создания роли, чтобы вы могли сообщить Discord, что пользователи могут или не могут делать с вашей ролью (как сказано выше)

Если вы добавите следующий код, пользователи с вашей ролью больше НЕ смогут разговаривать, и сообщения больше не отправляются:

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

Конечно, вы можете сделать то же самое со всеми другими разрешениями. Противоположностью Deny (НЕТ) будет Grant (Да). Лучше всего прочитать этот раздел, чтобы лучше понять систему разрешений Discord: как мне настроить разрешения?