text: const {
  	MessageEmbed,
  	Message
  } = require("discord.js");
  const config = require("../../botconfig/config.json");
  const ee = require("../../botconfig/embed.json");
  const settings = require("../../botconfig/settings.json");
  const {
  	check_if_dj
  } = require("../../handlers/functions")
  const FiltersSettings = require("../../botconfig/filters.json");
  module.exports = {
  	name: "custombassboost", //the command name for the Slash Command
  	description: "Sets a custom Bassboost with Gain!", //the command description for Slash Command Overview
  	cooldown: 5,
  	requiredroles: [], //Only allow specific Users with a Role to execute a Command [OPTIONAL]
  	alloweduserids: [], //Only allow specific Users to execute a Command [OPTIONAL]
  	options: [ //OPTIONAL OPTIONS, make the array empty / dont add this option if you don't need options!
  		//INFORMATIONS! You can add Options, but mind that the NAME MUST BE LOWERCASED! AND NO SPACES!!!, for the CHOCIES you need to add a array of arrays; [ ["",""] , ["",""] ] 
  		//{"Integer": { name: "volume", description: "What should be the Volume? It must be between 0 & 150", required: true }}, //to use in the code: interacton.getInteger("ping_amount")
  		//{"String": { name: "song", description: "Which Song do you want to play", required: true }}, //to use in the code: interacton.getString("title")
  		//{"User": { name: "ping_a_user", description: "To Ping a user lol", required: false }}, //to use in the code: interacton.getUser("ping_a_user")
  		//{"Channel": { name: "in_where", description: "In What Channel should I send it?", required: false }}, //to use in the code: interacton.getChannel("what_channel")
  		{
  			"Integer": {
  				name: "bass_gain",
  				description: "What Gain should the Bassboost have?",
  				required: true
  			}
  		}, //to use in the code: interacton.getInteger("ping_amount")
  		//{"Role": { name: "what_role", description: "To Ping a Role lol", required: false }}, //to use in the code: interacton.getRole("what_role")
  		//{"StringChoices": { name: "what_loop", description: "What Loop do you want to set?", required: true, choices: [["Disable", "0"], ["Song Loop", "1"],["Queue Loop", "2"]] }}, //here the second array input MUST BE A NUMBER // TO USE IN THE CODE: interacton.getInteger("what_ping")
  		//{"StringChoices": { name: "what_ping", description: "What Ping do you want to get?", required: true, choices: [["Bot", "botping"], ["Discord Api", "api"]] }}, //here the second array input MUST BE A STRING // TO USE IN THE CODE: interacton.getString("what_ping")
  	],
  	run: async (client, interaction) => {
  		try {
  			//things u can directly access in an interaction!
  			const {
  				member,
  				channelId,
  				guildId,
  				applicationId,
  				commandName,
  				deferred,
  				replied,
  				ephemeral,
  				options,
  				id,
  				createdTimestamp
  			} = interaction;
  			const {
  				guild
  			} = member;
  			const {
  				channel
  			} = member.voice;
  			if (!channel) return interaction.reply({
  				embeds: [
  					new MessageEmbed().setColor(ee.wrongcolor).setTitle(`${client.allEmojis.x} **Please join ${guild.me.voice.channel ? "__my__" : "a"} VoiceChannel First!**`)
  				],
  				ephemeral: true
  			})
  			if (channel.guild.me.voice.channel && channel.guild.me.voice.channel.id != channel.id) {
  				return interaction.reply({
  					embeds: [new MessageEmbed()
  						.setColor(ee.wrongcolor)
  						.setFooter(ee.footertext, ee.footericon)
  						.setTitle(`${client.allEmojis.x} Join __my__ Voice Channel!`)
  						.setDescription(`<#${guild.me.voice.channel.id}>`)
  					],
  					ephemeral: true
  				});
  			}
  			try {
  				let newQueue = client.distube.getQueue(guildId);
  				if (!newQueue || !newQueue.songs || newQueue.songs.length == 0) return interaction.reply({
  					embeds: [
  						new MessageEmbed().setColor(ee.wrongcolor).setTitle(`${client.allEmojis.x} **I am nothing Playing right now!**`)
  					],
  					ephemeral: true
  				})
  				if (check_if_dj(client, member, newQueue.songs[0])) {
  					return interaction.reply({
  						embeds: [new MessageEmbed()
  							.setColor(ee.wrongcolor)
  							.setFooter(ee.footertext, ee.footericon)
  							.setTitle(`${client.allEmojis.x}**You are not a DJ and not the Song Requester!**`)
  							.setDescription(`**DJ-ROLES:**\n> ${check_if_dj(client, member, newQueue.songs[0])}`)
  						],
  						ephemeral: true
  					});
  				}
  				let bass_gain = options.getInteger("bass_gain")
  
  				if (bass_gain > 20 || bass_gain < 0) {
  					return interaction.reply({
  						embeds: [
  							new MessageEmbed()
  							.setColor(ee.wrongcolor)
  							.setFooter(ee.footertext, ee.footericon)
  							.setTitle(`${client.allEmojis.x} **The Bassboost Gain must be between 0 and 20!**`)
  						],
  					})
  				}
  				FiltersSettings.custombassboost = `bass=g=${bass_gain},dynaudnorm=f=200`;
  				client.distube.filters = FiltersSettings;
  				//add old filters so that they get removed 	
  				//if it was enabled before then add it
  				if (newQueue.filters.includes("custombassboost")) {
  					await newQueue.setFilter(["custombassboost"]);
  				}
  				await newQueue.setFilter(["custombassboost"]);
  				interaction.reply({
  					content: `♨️ **Set a Bassboost to ${bass_gain}!**\n> 💢 **Action by**: \`${member.user.tag}\``
  				})
  			} catch (e) {
  				console.log(e.stack ? e.stack : e)
  				interaction.editReply({
  					content: `${client.allEmojis.x} | Error: `,
  					embeds: [
  						new MessageEmbed().setColor(ee.wrongcolor)
  						.setDescription(`\`\`\`${e}\`\`\``)
  					],
  					ephemeral: true
  				})
  			}
  		} catch (e) {
  			console.log(String(e.stack).bgRed)
  		}
  	}
  }