Files
discord-bot/commands/admin/ban.js
2025-02-13 04:42:11 +01:00

92 lines
2.8 KiB
JavaScript

const Discord = require("discord.js");
module.exports = {
name: 'ban',
description: '[ 🚫 Ban ] Ban User',
options: [
{
name: "user",
description: "Select an user",
type: Discord.ApplicationCommandOptionType.User,
required: true
},
{
name: "reason",
description: "Ban Reason",
type: Discord.ApplicationCommandOptionType.String,
required: true
}
],
run: async(client, interaction) => {
let nopermission = new Discord.EmbedBuilder()
.setColor('Red')
.setTitle('Command Error!')
.setDescription(`
**Discord BOT**
🚫 Access Denied! 🚫
${interaction.user}`);
if (!interaction.member.permissions.has(Discord.PermissionsBitField.Flags.BanMembers)) {
interaction.reply({embeds: [nopermission], ephemeral: true})
} else {
let member = interaction.options.getUser("user");
let reason = interaction.options.getString("reason");
let staff = interaction.user.displayName
let userInv = new Discord.EmbedBuilder()
.setColor('Red')
.setTitle("Ban Failed")
.setDescription(`**Invalid User | Please insert a valid User.**`)
.setTimestamp(new Date());
if (!member)
return interaction.reply({ embeds: [userInv], ephemeral: true });
let banreply = new Discord.EmbedBuilder()
.setColor('Red')
.setTitle(`**New Ban**`)
.setDescription(`**${member} was banned successfully \n Reason: ${reason}**`)
.setFooter({ text: `Responsible: ${staff}`, iconURL: interaction.user.displayAvatarURL({ format: "png" }) })
.setTimestamp(new Date())
let errban = new Discord.EmbedBuilder()
.setColor('DarkRed')
.setTitle('Ban Failed')
.setDescription(`Error while banning ${member.user}`)
.setTimestamp(new Date());
try {
if(!member){
return;
} else {
if(member.bot){
interaction.guild.bans.create(member, {reason});
interaction.reply({ embeds: [banreply], ephemeral: true })
} else {
setTimeout(() => {
interaction.guild.bans.create(member, {reason});
interaction.reply({ embeds: [banreply], ephemeral: true })
}, 1000);
}
}
}
catch (err) {
if (err) {
interaction.reply({ embeds: [errban], ephemeral: true });
}
}
}
}
}