NoaLeGeek68

code

Aug 5th, 2021
785
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package fr.noalegeek.pepite_dor_bot.commands.moderation;
  2.  
  3. import com.jagrosh.jdautilities.command.Command;
  4. import com.jagrosh.jdautilities.command.CommandEvent;
  5. import fr.noalegeek.pepite_dor_bot.Main;
  6. import fr.noalegeek.pepite_dor_bot.enums.CommandCategories;
  7. import fr.noalegeek.pepite_dor_bot.utils.helpers.MessageHelper;
  8. import net.dv8tion.jda.api.Permission;
  9. import net.dv8tion.jda.api.entities.*;
  10.  
  11. public class MuteCommand extends Command {
  12.     public MuteCommand() {
  13.         this.category = CommandCategories.STAFF.category;
  14.         this.aliases = new String[]{"m", "mu", "mut"};
  15.         this.name = "mute";
  16.         this.arguments = "<identifiant/mention du membre> [raison]";
  17.         this.help = "Mute définitivement un membre avec une raison ou non. Unmute si la personne est déjà mute.";
  18.         this.cooldown = 5;
  19.         this.example = "@NoaLeGeek spam";
  20.         this.userPermissions = new Permission[]{Permission.MESSAGE_MANAGE};
  21.         this.botPermissions = new Permission[]{Permission.MESSAGE_MANAGE};
  22.         this.guildOnly = true;
  23.     }
  24.  
  25.     @Override
  26.     protected void execute(CommandEvent event) {
  27.         User author = event.getAuthor();
  28.         if (author.isBot()) return;
  29.         String[] args = event.getArgs().split("\\s+");
  30.         if (args.length > 2) {
  31.             event.replyError(MessageHelper.syntaxError(author, this) + "Mettre une raison n'est pas obligatoire.");
  32.             return;
  33.         }
  34.         String targetID = args[0].replaceAll("\\D+", "");
  35.         Guild guild = event.getGuild();
  36.         String mutedRoleID = Main.getServerConfig().mutedRole.get(guild.getId());
  37.         Main.getJda().retrieveUserById(targetID).queue(user -> {
  38.             guild.retrieveMember(user).queue(member -> {
  39.                 if (!event.getSelfMember().canInteract(member)) {
  40.                     event.replyError(MessageHelper.formattedMention(author) + "Le bot n'a pas les permissions de faire cela.");
  41.                     return;
  42.                 }
  43.                 if (!event.getMember().canInteract(member)) {
  44.                     event.replyError(MessageHelper.formattedMention(author) + "Vous n'avez pas la permission de mute ce membre.");
  45.                     return;
  46.                 }
  47.                 if (Main.getServerConfig().mutedRole.containsValue(event.getGuild().getId()) && event.getGuild().getRoleById(Main.getServerConfig().mutedRole.get(event.getGuild().getId())) != null) {
  48.                 if (args.length == 1) {
  49.                     mute(event, member, null);
  50.                 } else {
  51.                     mute(event, member, args[1]);
  52.                 }
  53.             } else {
  54.                 RestAction.allOf(
  55.                                 event.getGuild().createRole().setName("Muted Role").setColor(0x010101).map(mutedRole -> Main.getServerConfig().mutedRole.put(event.getGuild().getId(), mutedRole.getId())))
  56.                         .queue(unused -> {
  57.                             List<RestAction<?>> restActionList = new ArrayList<>();
  58.                             for (GuildChannel guildChannel : event.getGuild().getChannels()) {
  59.                                 restActionList.add(guildChannel.putPermissionOverride(event.getGuild().getRoleById(Main.getServerConfig().mutedRole.get(event.getGuild().getId()))).setDeny(Permission.MESSAGE_WRITE));
  60.                             }
  61.                             RestAction.allOf(restActionList).queue(unused1 -> {
  62.                                         if (args.length == 1) {
  63.                                             mute(event, member, null);
  64.                                         } else {
  65.                                             mute(event, member, args[1]);
  66.                                         }
  67.                                     }
  68.                             );
  69.                         });
  70.                 try {
  71.                     Listener.saveConfigs();
  72.                 } catch (IOException e) {
  73.                     e.printStackTrace();
  74.                 }
  75.                 event.replyWarning(MessageHelper.formattedMention(event.getAuthor()) + ":warning: Le rôle configuré par défaut n'est pas présent donc j'ai créé un nouveau rôle nommé \"Muted Role\".");
  76.             }
  77.                
  78.             }, memberNull -> event.replyError(MessageHelper.formattedMention(author) + "Vous devez spécifié une personne présente sur le serveur."));
  79.         }, userNull -> event.replyError(MessageHelper.formattedMention(author) + "Vous devez spécifié une personne existante."));
  80.     }
  81.  
  82.     public static void mute(CommandEvent event, Member targetMember, String reason) {
  83.         Guild guild = event.getGuild();
  84.         User author = event.getAuthor();
  85.         String mutedRoleID = Main.getServerConfig().mutedRole.get(guild.getId());
  86.         if (targetMember.getRoles().contains(guild.getRoleById(mutedRoleID))) { // Unmute the target
  87.             targetMember.getRoles().remove(guild.getRoleById(mutedRoleID));
  88.             if (reason != null) {
  89.                 event.replySuccess(MessageHelper.formattedMention(author) + targetMember.getEffectiveName() + " a bien été démuter pour la raison " + reason + ".");
  90.                 return;
  91.             }
  92.             event.replySuccess(MessageHelper.formattedMention(author) + targetMember.getEffectiveName() + " a bien été démuter.");
  93.         } else { // Mute the target
  94.             guild.addRoleToMember(targetMember, guild.getRoleById(mutedRoleID)).queue();
  95.             if (reason != null) {
  96.                 event.replySuccess(MessageHelper.formattedMention(author) + targetMember.getEffectiveName() + " a bien été muter pour la raison " + reason + ".");
  97.                 return;
  98.             }
  99.             event.replySuccess(MessageHelper.formattedMention(author) + targetMember.getEffectiveName() + " a bien été muter.");
  100.         }
  101.     }
  102. }
  103.  
RAW Paste Data