Files

81 lines
2.2 KiB
JavaScript

const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');
const { config, lang } = require('../../handlers/configLoader');
const { getTicketByChannel } = require('../../handlers/database');
module.exports = {
data: new SlashCommandBuilder()
.setName('remove')
.setDescription(lang.commands.remove.description)
.addUserOption((option) =>
option
.setName('utilisateur')
.setDescription("L'utilisateur à retirer du ticket")
.setRequired(true)
),
async execute(interaction) {
const member = interaction.member;
const staffRoles = (
Array.isArray(config.staffRoles)
? config.staffRoles
: [config.staffRole || config.staffRoles]
).filter((r) => r && r.trim() !== '');
if (!staffRoles.some((roleId) => member.roles.cache.has(roleId))) {
return interaction.reply({
content: lang.permissions.staff_only,
flags: 64,
});
}
const ticket = getTicketByChannel(interaction.channel.id);
if (!ticket) {
return interaction.reply({
content: lang.ticket.not_in_ticket,
flags: 64,
});
}
const userToRemove = interaction.options.getUser('utilisateur');
const existingOverwrite =
interaction.channel.permissionOverwrites.cache.get(userToRemove.id);
if (
!existingOverwrite ||
!existingOverwrite.allow.has(PermissionFlagsBits.ViewChannel)
) {
return interaction.reply({
content: lang.commands.remove.not_in_ticket.replace(
'{user}',
userToRemove
),
flags: 64,
});
}
try {
await interaction.channel.permissionOverwrites.edit(userToRemove.id, {
[PermissionFlagsBits.ViewChannel]: false,
[PermissionFlagsBits.SendMessages]: false,
[PermissionFlagsBits.ReadMessageHistory]: false,
});
await interaction.reply({
content: lang.commands.remove.success.replace('{user}', userToRemove),
flags: 64,
});
await interaction.channel.send(
lang.commands.remove.goodbye.replace('{user}', userToRemove)
);
} catch (err) {
console.error(err);
await interaction.reply({
content: lang.commands.remove.error,
flags: 64,
});
}
},
};