Advertisement
spiralvibes

Made By ZayDocs | Maverick Team

Oct 14th, 2024
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const { Guild, User } = require(`${process.cwd()}/src/database/blacklistSchema.js`);
  2. const pEmbed = require(`${process.cwd()}/src/functions/paginationEmbed.js`);
  3. const { EmbedBuilder, ApplicationCommandType, ApplicationCommandOptionType } = require('discord.js');
  4.  
  5. const ROYAL_BLUE = '#4169E1';
  6.  
  7. module.exports = {
  8.     name: "blacklist",
  9.     description: "Manage the blacklist for users and guilds.",
  10.     category: "moderation",
  11.     userPerms: ["MANAGE_GUILD"],
  12.     botPerms: ["MANAGE_GUILD"],
  13.     cooldown: 5,
  14.     guildOnly: false,
  15.     ownerOnly: false,
  16.     toggleOff: false,
  17.     nsfwOnly: false,
  18.     maintenance: false,
  19.     type: ApplicationCommandType.ChatInput,
  20.  
  21.     options: [
  22.         {
  23.             name: "user",
  24.             description: "Manage blacklisted users.",
  25.             type: ApplicationCommandOptionType.SubcommandGroup,
  26.             options: [
  27.                 {
  28.                     name: "add",
  29.                     description: "Add a user to the blacklist.",
  30.                     type: ApplicationCommandOptionType.Subcommand,
  31.                     options: [
  32.                         {
  33.                             name: "user_id",
  34.                             description: "The user ID to blacklist.",
  35.                             type: ApplicationCommandOptionType.String,
  36.                             required: true,
  37.                         },
  38.                         {
  39.                             name: "reason",
  40.                             description: "The reason for blacklisting.",
  41.                             type: ApplicationCommandOptionType.String,
  42.                             required: false,
  43.                         },
  44.                     ],
  45.                 },
  46.                 {
  47.                     name: "remove",
  48.                     description: "Remove a user from the blacklist.",
  49.                     type: ApplicationCommandOptionType.Subcommand,
  50.                     options: [
  51.                         {
  52.                             name: "user_id",
  53.                             description: "The user ID to unblacklist.",
  54.                             type: ApplicationCommandOptionType.String,
  55.                             required: true,
  56.                         },
  57.                     ],
  58.                 },
  59.                 {
  60.                     name: "view",
  61.                     description: "View all blacklisted users.",
  62.                     type: ApplicationCommandOptionType.Subcommand,
  63.                 },
  64.             ],
  65.         },
  66.         {
  67.             name: "guild",
  68.             description: "Manage blacklisted guilds.",
  69.             type: ApplicationCommandOptionType.SubcommandGroup,
  70.             options: [
  71.                 {
  72.                     name: "add",
  73.                     description: "Add a guild to the blacklist.",
  74.                     type: ApplicationCommandOptionType.Subcommand,
  75.                     options: [
  76.                         {
  77.                             name: "guild_id",
  78.                             description: "The guild ID to blacklist.",
  79.                             type: ApplicationCommandOptionType.String,
  80.                             required: true,
  81.                         },
  82.                         {
  83.                             name: "reason",
  84.                             description: "The reason for blacklisting.",
  85.                             type: ApplicationCommandOptionType.String,
  86.                             required: false,
  87.                         },
  88.                     ],
  89.                 },
  90.                 {
  91.                     name: "remove",
  92.                     description: "Remove a guild from the blacklist.",
  93.                     type: ApplicationCommandOptionType.Subcommand,
  94.                     options: [
  95.                         {
  96.                             name: "guild_id",
  97.                             description: "The guild ID to unblacklist.",
  98.                             type: ApplicationCommandOptionType.String,
  99.                             required: true,
  100.                         },
  101.                     ],
  102.                 },
  103.                 {
  104.                     name: "view",
  105.                     description: "View all blacklisted guilds.",
  106.                     type: ApplicationCommandOptionType.Subcommand,
  107.                 },
  108.             ],
  109.         },
  110.     ],
  111.  
  112.     run: async (client, interaction) => {
  113.         const subcommandGroup = interaction.options.getSubcommandGroup();
  114.         const subcommand = interaction.options.getSubcommand();
  115.  
  116.         try {
  117.             if (subcommandGroup === "user") {
  118.                 if (subcommand === "add") {
  119.                     const userId = interaction.options.getString("user_id");
  120.                     const reason = interaction.options.getString("reason") || "No reason provided.";
  121.  
  122.                     if (!/^\d+$/.test(userId)) {
  123.                         return await interaction.reply({ content: "Please provide a valid user ID.", ephemeral: true });
  124.                     }
  125.  
  126.                     const existingUser = await User.findOne({ userId });
  127.                     if (existingUser) {
  128.                         return await interaction.reply({ content: `User <@${userId}> is already blacklisted.`, ephemeral: true });
  129.                     }
  130.  
  131.                     await new User({ userId, reason }).save();
  132.                     return await interaction.reply({ content: `User <@${userId}> has been blacklisted. Reason: ${reason}`, ephemeral: true });
  133.                 }
  134.  
  135.                 if (subcommand === "remove") {
  136.                     const userId = interaction.options.getString("user_id");
  137.  
  138.                     if (!/^\d+$/.test(userId)) {
  139.                         return await interaction.reply({ content: "Please provide a valid user ID.", ephemeral: true });
  140.                     }
  141.  
  142.                     const existingUser = await User.findOneAndDelete({ userId });
  143.                     if (!existingUser) {
  144.                         return await interaction.reply({ content: `User <@${userId}> is not blacklisted.`, ephemeral: true });
  145.                     }
  146.  
  147.                     return await interaction.reply({ content: `User <@${userId}> has been removed from the blacklist.`, ephemeral: true });
  148.                 }
  149.  
  150.                 if (subcommand === "view") {
  151.                     const blacklistedUsers = await User.find({});
  152.                     if (blacklistedUsers.length === 0) {
  153.                         return await interaction.reply({ content: "There are no blacklisted users.", ephemeral: true });
  154.                     }
  155.  
  156.                     const embeds = blacklistedUsers.map(user =>
  157.                         new EmbedBuilder()
  158.                             .setColor(ROYAL_BLUE)
  159.                             .setAuthor({ name: `Blacklisted User: <@${user.userId}>`, iconURL: client.user.displayAvatarURL() })
  160.                             .addFields(
  161.                                 { name: 'User ID', value: user.userId, inline: true },
  162.                                 { name: 'Reason', value: user.reason || 'No reason provided', inline: true },
  163.                                 { name: 'Added On', value: new Date(user._id.getTimestamp()).toLocaleDateString(), inline: true }
  164.                             )
  165.                             .setTimestamp()
  166.                             .setFooter({ text: client.embed.footertext, iconURL: client.embed.footericon })
  167.                     );
  168.  
  169.                     pEmbed(client, interaction, embeds, "60s", false);
  170.                 }
  171.             }
  172.  
  173.             if (subcommandGroup === "guild") {
  174.                 if (subcommand === "add") {
  175.                     const guildId = interaction.options.getString("guild_id");
  176.                     const reason = interaction.options.getString("reason") || "No reason provided.";
  177.  
  178.                     if (!/^\d+$/.test(guildId)) {
  179.                         return await interaction.reply({ content: "Please provide a valid guild ID.", ephemeral: true });
  180.                     }
  181.  
  182.                     const existingGuild = await Guild.findOne({ guildId });
  183.                     if (existingGuild) {
  184.                         return await interaction.reply({ content: `Guild with ID \`${guildId}\` is already blacklisted.`, ephemeral: true });
  185.                     }
  186.  
  187.                     await new Guild({ guildId, reason }).save();
  188.                     return await interaction.reply({ content: `Guild with ID \`${guildId}\` has been blacklisted. Reason: ${reason}`, ephemeral: true });
  189.                 }
  190.  
  191.                 if (subcommand === "remove") {
  192.                     const guildId = interaction.options.getString("guild_id");
  193.  
  194.                     if (!/^\d+$/.test(guildId)) {
  195.                         return await interaction.reply({ content: "Please provide a valid guild ID.", ephemeral: true });
  196.                     }
  197.  
  198.                     const existingGuild = await Guild.findOneAndDelete({ guildId });
  199.                     if (!existingGuild) {
  200.                         return await interaction.reply({ content: `Guild with ID \`${guildId}\` is not blacklisted.`, ephemeral: true });
  201.                     }
  202.  
  203.                     return await interaction.reply({ content: `Guild with ID \`${guildId}\` has been removed from the blacklist.`, ephemeral: true });
  204.                 }
  205.  
  206.                 if (subcommand === "view") {
  207.                     const blacklistedGuilds = await Guild.find({});
  208.                     if (blacklistedGuilds.length === 0) {
  209.                         return await interaction.reply({ content: "There are no blacklisted guilds.", ephemeral: true });
  210.                     }
  211.  
  212.                     const embeds = blacklistedGuilds.map(guild =>
  213.                         new EmbedBuilder()
  214.                             .setColor(ROYAL_BLUE)
  215.                             .setAuthor({ name: `Blacklisted Guild: ${guild.guildId}`, iconURL: client.user.displayAvatarURL() })
  216.                             .addFields(
  217.                                 { name: 'Guild ID', value: guild.guildId, inline: true },
  218.                                 { name: 'Reason', value: guild.reason || 'No reason provided', inline: true },
  219.                                 { name: 'Added On', value: new Date(guild._id.getTimestamp()).toLocaleDateString(), inline: true }
  220.                             )
  221.                             .setTimestamp()
  222.                             .setFooter({ text: client.embed.footertext, iconURL: client.embed.footericon })
  223.                     );
  224.  
  225.                     pEmbed(client, interaction, embeds, "60s", false);
  226.                 }
  227.             }
  228.         } catch (error) {
  229.             console.error("Error in blacklist command:", error);
  230.             await interaction.reply({ content: "An error occurred while managing the blacklist. Please try again later.", ephemeral: true });
  231.         }
  232.     }
  233. };
  234.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement