2023-09-13 21:12:45 +02:00
import { EmbedBuilder , SlashCommandBuilder } from 'discord.js' ;
import config from './config.json' assert { type : 'json' } ;
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 ( 'ban' )
. setDescription ( 'Bannir un utilisateur !' )
. setDefaultMemberPermissions ( 0x4 )
. addUserOption (
2022-12-14 11:52:28 +01:00
option =>
option
. setName ( 'user' )
. setDescription ( 'Membre à bannir / id si le membre n\'est pas sur le serveur' )
. setRequired ( true )
)
2022-11-09 14:44:05 +01:00
. addStringOption (
2022-12-14 11:52:28 +01:00
option =>
option
. setName ( 'reason' )
. setDescription ( 'Raison du bannissement' )
. setRequired ( true ) ) ,
2022-11-09 14:44:05 +01:00
async execute ( interaction , client ) {
const user = interaction . options . getUser ( 'user' ) ;
2022-12-14 11:52:28 +01:00
const member = interaction . options . getMember ( 'user' ) ;
2022-11-09 14:44:05 +01:00
const reason = interaction . options . getString ( 'reason' ) ;
2022-12-14 11:52:28 +01:00
if ( member ) {
const userRoleRawPos = member . roles . highest . rawPosition ;
const memberRoleRawPos = interaction . member . roles . highest . rawPosition ;
if ( user . id === interaction . user . id ) return interaction . reply ( { content : ` Vous ne pouvez pas vous bannir vous-même! ! ` , ephemeral : true } ) ;
if ( userRoleRawPos >= memberRoleRawPos ) return interaction . reply ( { content : ` Vous ne pouvez pas bannir cet utilisateur. ` , ephemeral : true } ) ;
if ( ! member . bannable ) return interaction . reply ( { content : ` Je ne peux pas bannir 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 } ) ;
}
2022-11-09 14:44:05 +01:00
2022-12-14 11:52:28 +01:00
await interaction . guild . bans . create ( user . id , { reason : reason + " - Banni.e par " + interaction . member . user . tag } ) ;
2022-11-09 14:44:05 +01:00
2022-12-14 11:52:28 +01:00
const banEMBED = new EmbedBuilder ( )
. setColor ( ` #009500 ` )
. setThumbnail ( ` https://i.imgur.com/zcZsfNA.png ` )
. setTitle ( ` ➔ Art' Portal - Bannissement ` )
. addFields (
{
name : "・Utilisateur.trice・" ,
value : ` **Tag: ${ user . tag } \n ID: ${ user . id } ** ` ,
inline : true
} ,
{
name : "・Raison du bannissement・" ,
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 : [ banEMBED ] , ephemeral : true } ) ;
const channel = await interaction . guild . channels . cache . get ( sanctionChannelId ) ;
await channel . send ( {
embeds : [ banEMBED ]
} ) ;
await client . database . modlog . create ( {
name : user . id ,
username : user . tag ,
type : "Ban" ,
reason : reason ,
timestamp : Math . floor ( new Date ( ) . getTime ( ) / 1000 ) ,
moderatorid : interaction . member . user . id
} )
2022-11-09 14:44:05 +01:00
}
2022-12-14 11:52:28 +01:00
} ;