const { SlashCommandBuilder } = require('@discordjs/builders') const { MessageEmbed, Util } = require('discord.js') const { parse } = require('twemoji-parser') module.exports = { data: new SlashCommandBuilder() .setName('add') .setDescription('Add an external emoji to the server.') .addSubcommand(subcommand => subcommand .setName('emoji') .setDescription(`Add an external emoji to the server.`) .addStringOption(option => option.setName('emoji').setDescription("The emoji to be added.").setRequired(true)) .addStringOption(option => option.setName('name').setDescription('Name of the emoji for the server.'))), async execute(interaction, client) { await interaction.deferReply({ ephemeral: true}) let embedErrorPerms = new MessageEmbed() .setDescription(`<:smike_x_mark:1009474223657463888> You don't have permission to execute this command!`) .setColor('#ff0000') let embedErrorBotPerms = new MessageEmbed() .setDescription(`<:smike_x_mark:1009474223657463888> I don't have permission to execute this command!`) .setColor('#ff0000') let embed1 = new MessageEmbed() .setDescription(`<:smike_warning:1011578358808727592> The server has reached it's emoji limit!`) .setColor('#ff0000') let embed2 = new MessageEmbed() .setDescription(`<:smike_x_mark:1009474223657463888> Please provide a valid emoji!`) .setColor('#ff0000') let embed3 = new MessageEmbed() .setDescription(`<:smike_x_mark:1009474223657463888> This is a default emoji, it can be used without adding to the server!`) .setColor("YELLOW") if (!interaction.member.permissions.has("MANAGE_EMOJIS_AND_STICKERS")){ return interaction.followUp({ embeds: [embedErrorPerms]}) } if (!interaction.guild.me.permissions.has("MANAGE_EMOJIS_AND_STICKERS")) {return interaction.followUp({ embeds: [embedErrorBotPerms]}) } const emoji = interaction.options.getString('emoji') let customEmoji = Util.parseEmoji(emoji) if (customEmoji.id) { const emojiLink = `https://cdn.discordapp.com/emojis/${customEmoji.id}.${customEmoji.animated ? "gif" : "png" }` let emojiName = interaction.options.getString('name') if (!emojiName) emojiName = customEmoji.name emojiName = emojiName.replace(/\s+/g, '_') interaction.guild.emojis.create ( `${emojiLink}`, `${emojiName}` ).then(em => { const added = new MessageEmbed() .setTitle('Done!') .setDescription(`Successfully added ${em.toString()} to the server!`) .setColor('#00ff00') return interaction.followUp({ embeds: [added]}).catch(error => { return interaction.followUp({ embeds: [embed1]}) }) }) } else { let CheckEmoji = parse(emoji, { assetType: "png" }) if (!CheckEmoji[0]) return interaction.followUp({ embeds: [embed2] }) return interaction.followUp({ embeds: [embed3]}) } }