2022-07-31 17:08:00 +05:00
const { InteractionType } = require ( "discord.js" ) ;
2022-08-04 21:02:45 +05:00
const BaseEvent = require ( "../base/BaseEvent" ) ;
2022-07-23 17:14:42 +05:00
class CommandHandler extends BaseEvent {
constructor ( ) {
super ( {
name : "interactionCreate" ,
2022-12-15 21:02:38 +05:00
once : false ,
2022-07-23 17:14:42 +05:00
} ) ;
}
/ * *
*
* @ param { import ( "../base/JaBa" ) } client
2023-06-27 21:19:55 +05:00
* @ param { import ( "discord.js" ) . BaseInteraction } interaction
2022-07-23 17:14:42 +05:00
* /
async execute ( client , interaction ) {
const command = client . commands . get ( interaction . commandName ) ;
const data = [ ] ;
2023-06-27 21:19:55 +05:00
const userData = await client . findOrCreateUser ( { id : interaction . user . id } ) ;
2022-07-23 17:14:42 +05:00
data . userData = userData ;
if ( interaction . inGuild ( ) ) {
2023-06-27 21:19:55 +05:00
const guildData = await client . findOrCreateGuild ( { id : interaction . guildId } ) ;
const memberData = await client . findOrCreateMember ( { id : interaction . member . id , guildId : interaction . guildId } ) ;
2022-07-23 17:14:42 +05:00
2023-06-29 14:00:08 +05:00
interaction . guild . data = data . guildData = guildData ;
2022-07-23 17:14:42 +05:00
data . memberData = memberData ;
}
2023-07-03 19:30:47 +05:00
if ( interaction . isAutocomplete ( ) ) return await command . autocompleteRun ( client , interaction ) ;
2023-03-24 00:09:26 +05:00
if ( interaction . type !== InteractionType . ApplicationCommand && ! interaction . isCommand ( ) ) return ;
2023-03-26 18:31:19 +05:00
if ( command . ownerOnly && interaction . user . id !== client . config . owner . id ) return interaction . error ( "misc:OWNER_ONLY" , null , { ephemeral : true } ) ;
2023-03-24 00:09:26 +05:00
2023-06-27 21:19:55 +05:00
if ( ! interaction . guildId === "1039187019957555252" ) return interaction . error ( { content : "IAT Only" , ephemeral : true } ) ;
if ( ! interaction . guildId === "600970971410857996" ) return interaction . error ( { content : "SC Only" , ephemeral : true } ) ;
2023-06-17 16:46:31 +05:00
2022-07-23 17:14:42 +05:00
if ( ! userData . achievements . firstCommand . achieved ) {
2023-05-25 22:49:27 +05:00
const args = {
2022-10-14 20:40:37 +05:00
content : interaction . user . toString ( ) ,
2022-07-23 17:14:42 +05:00
files : [ {
name : "achievement_unlocked2.png" ,
2022-12-15 21:02:38 +05:00
attachment : "./assets/img/achievements/achievement_unlocked2.png" ,
} ] ,
2023-05-25 22:49:27 +05:00
} ;
userData . achievements . firstCommand . progress . now = 1 ;
userData . achievements . firstCommand . achieved = true ;
userData . markModified ( "achievements.firstCommand" ) ;
await userData . save ( ) ;
2023-06-27 21:19:55 +05:00
interaction . user . send ( args ) ;
2022-07-23 17:14:42 +05:00
}
2023-07-03 14:25:25 +05:00
client . logger . log ( ` User ${ interaction . user . getUsername ( ) } used ${ command . command . name } in ${ interaction . guild ? interaction . guild . name : "DM" } with arguments: ${ interaction . options . data . length > 0 ? interaction . options . data . map ( arg => { return ` ${ arg . name } : ${ arg . value } ` ; } ).join(", ") : "no args"} ` , "cmd" ) ;
2022-11-16 14:37:16 +05:00
2022-07-23 17:14:42 +05:00
return command . execute ( client , interaction , data ) ;
}
}
module . exports = CommandHandler ;