2023-09-13 21:12:45 +02:00
import { EmbedBuilder , SlashCommandBuilder } from 'discord.js' ;
2023-09-13 21:26:16 +02:00
import config from '../../config.json' assert { type : 'json' } ;
2023-09-13 21:12:45 +02:00
const { sanctionChannelId } = config ;
2022-11-09 14:44:05 +01:00
2023-09-13 21:12:45 +02:00
export default {
2022-11-09 14:44:05 +01:00
data : new SlashCommandBuilder ( )
. setName ( 'mute' )
. setDefaultMemberPermissions ( 0x2 )
. addUserOption (
option =>
option
. setName ( 'user' )
. setDescription ( 'Membre à kick' )
. setRequired ( true )
)
. addIntegerOption (
option =>
option
. setName ( 'duration' )
. setDescription ( 'Durée du mute en minutes' )
. setMinValue ( 1 )
. setRequired ( true )
)
. addStringOption (
option =>
option
. setName ( 'reason' )
. setDescription ( 'Raison du mute' )
. setRequired ( true )
)
. setDescription ( 'Rendre un membre muet' ) ,
async execute ( interaction , client ) {
const duration = interaction . options . getInteger ( 'duration' ) ;
const member = interaction . options . getMember ( 'user' ) ;
const reason = interaction . options . getString ( 'reason' ) ;
if ( member ) {
const userRoleRawPos = member . roles . highest . rawPosition ;
const memberRoleRawPos = interaction . member . roles . highest . rawPosition ;
if ( member . user . id === interaction . user . id ) return interaction . reply ( { content : ` Vous ne pouvez pas vous mute vous-même vous-même! ! ` , ephemeral : true } ) ;
if ( userRoleRawPos >= memberRoleRawPos ) return interaction . reply ( { content : ` Vous ne pouvez pas mute cet utilisateur. ` , ephemeral : true } ) ;
if ( ! member . bannable ) return interaction . reply ( { content : ` Je ne peux pas mute cet utilisateur. Cela est dû au fait que l'utilisateur est modérateur/administrateur ou que son rôle est au dessus du rôle du bot... ` , ephemeral : true } ) ;
} else return interaction . reply ( { content : "Le membre sélectionné n'est pas présent sur le serveur !" , ephemeral : true } ) ;
await member . timeout ( duration * 60 * 1000 , { reason : reason + " - Mute par " + interaction . member . user . tag } ) ;
const muteEMBED = new EmbedBuilder ( )
. setColor ( ` #009500 ` )
. setThumbnail ( ` https://i.imgur.com/zcZsfNA.png ` )
. setTitle ( ` ➔ Art' Portal - Mute ` )
. addFields (
{
name : "・Utilisateur.trice・" ,
value : ` **Tag: ${ member . user . tag } \n ID: ${ member . user . id } ** ` ,
inline : true
} ,
{
name : "・Raison du mute" ,
value : ` ** ${ reason !== null ? ` ${ reason } ` : 'No reason specified' } ** ` ,
inline : true
} ,
{
name : ` ・Modérateur.trice・ ` ,
value : ` ** ${ interaction . member . user . tag } ** `
} ,
{
name : ` ・Date・ ` ,
value : ` <t: ${ Math . floor ( new Date ( ) . getTime ( ) / 1000 ) } :D> ` ,
inline : true
} ,
) ;
await interaction . reply ( { embeds : [ muteEMBED ] , ephemeral : true } ) ;
const channel = await interaction . guild . channels . cache . get ( sanctionChannelId ) ;
await channel . send ( {
embeds : [ muteEMBED ]
} ) ;
await client . database . modlog . create ( {
name : member . user . id ,
username : member . user . tag ,
type : "Mute" ,
reason : reason ,
timestamp : Math . floor ( new Date ( ) . getTime ( ) / 1000 ) ,
moderatorid : interaction . member . user . id
2023-09-30 08:29:50 +02:00
} ) ;
2022-11-09 14:44:05 +01:00
}
} ;