Added unban command

This commit is contained in:
2023-11-30 15:44:04 +01:00
parent 4f96e0c534
commit c135c46101
2 changed files with 86 additions and 0 deletions

58
src/commands/unban.js Normal file
View File

@@ -0,0 +1,58 @@
const { SlashCommandBuilder, PermissionFlagsBits, userMention } = require("discord.js")
const { color } = require("../../config/options.json")
module.exports = {
name: "unban",
description: "Unban a user from the server",
type: "slash",
dev: true,
data: new SlashCommandBuilder()
.setName("unban")
.setDescription("Unban a user from the server")
.addStringOption(option =>
option
.setName("user")
.setDescription("The user to unban")
.setAutocomplete(true)
.setRequired(true)
)
.addStringOption(option =>
option
.setName("reason")
.setDescription("The reason for unbanning the user")
.setRequired(false)
),
/** @param { import("discord.js").ChatInputCommandInteraction } interaction */
async execute(interaction) {
await interaction.deferReply()
const userid = interaction.options.getString("user")
const reason = interaction.options.getString("reason") || "No reason provided"
const mod = interaction.user
const embedColor = Number(color.replace("#", "0x"))
const user = await interaction.client.users.fetch(userid)
await interaction.guild.members.unban(user.id, reason)
await interaction.editReply({
embeds: [{
title: "User unbanned",
description: "The user " + user.username + " has been unbanned.\n" +
"**Reason:** `" + reason + "`\n" +
"**Moderator:** " + userMention(mod.id),
color: embedColor,
thumbnail: {
url: user?.avatarURL({ dynamic: true }) || null
},
footer: {
text: "ID: " + user.id,
icon_url: interaction.guild.iconURL({ dynamic: true })
},
timestamp: new Date()
}]
})
}
}

View File

@@ -0,0 +1,28 @@
module.exports = {
name: "unban",
description: "Unban a user from the server",
type: "autocomplete",
/** @param { import("discord.js").AutocompleteInteraction } interaction */
async execute(interaction) {
if (!interaction.isAutocomplete()) return
if (interaction.commandName !== "unban") return
const focusedOption = interaction.options.getFocused(true)
if (focusedOption.name !== "user") return
console.log
const bannedUsers = await interaction.guild.bans.fetch()
const filteredUsers = bannedUsers.filter((user) =>
user.user.username.toLowerCase().includes(focusedOption.value.toLowerCase())
)
const results = filteredUsers.map((user) => ({
name: user.user.username,
value: user.user.id,
}))
await interaction.respond(results.slice(0, 25)).catch((err) => { console.log(err) })
}
}