103 lines
4.8 KiB
JavaScript
103 lines
4.8 KiB
JavaScript
const discord = require('discord.js')
|
|
const bot = require('../index')
|
|
const client = bot.client
|
|
const config = bot.config
|
|
const log = bot.errorLog.log
|
|
const l = bot.language
|
|
const permsChecker = require("../core/utils/permisssionChecker")
|
|
|
|
const APIEvents = require("../core/api/modules/events")
|
|
const DISABLE = require("../core/api/api.json").disable
|
|
|
|
module.exports = () => {
|
|
bot.errorLog.log("debug","COMMANDS: loaded stats.js")
|
|
|
|
if (!DISABLE.commands.text.stats) client.on("messageCreate",async (msg) => {
|
|
if (!msg.content.startsWith(config.prefix+"stats global") && !msg.content.startsWith(config.prefix+"stats ticket") && !msg.content.startsWith(config.prefix+"stats user")) return
|
|
if (!msg.guild) return
|
|
|
|
/**@type {"global"|"ticket"|"user"} */
|
|
const mode = msg.content.split(config.prefix+"stats ")[1]
|
|
|
|
if (mode == "global"){
|
|
//send global stats
|
|
msg.channel.send({embeds:[await bot.statsManager.createGlobalStatsEmbed()]})
|
|
|
|
}else if (mode == "user"){
|
|
//send user stats
|
|
const mention = msg.mentions.users.first()
|
|
if (mention){
|
|
//get user from mention
|
|
if (!bot.statsManager.existStats("user","TICKETS_CREATED",mention.id)){
|
|
msg.channel.send({embeds:[bot.errorLog.serverError(l.stats.errorUserNotFound)]})
|
|
return
|
|
}
|
|
msg.channel.send({embeds:[await bot.statsManager.createUserStatsEmbed(msg.guild,mention,msg.channel.id)]})
|
|
}else{
|
|
//use author as user
|
|
if (!bot.statsManager.existStats("user","TICKETS_CREATED",msg.author.id)){
|
|
msg.channel.send({embeds:[bot.errorLog.serverError(l.stats.errorUserNotFound)]})
|
|
return
|
|
}
|
|
msg.channel.send({embeds:[await bot.statsManager.createUserStatsEmbed(msg.guild,msg.author,msg.channel.id)]})
|
|
}
|
|
|
|
}else if (mode == "ticket"){
|
|
//send ticket stats
|
|
if (!bot.statsManager.existStats("ticket","STATUS",msg.channel.id)){
|
|
msg.channel.send({embeds:[bot.errorLog.notInATicket]})
|
|
return
|
|
}
|
|
msg.channel.send({embeds:[await bot.statsManager.createTicketStatsEmbed(msg.guild,msg.channel.id)]})
|
|
}
|
|
|
|
log("command","someone used the 'stats' command",[{key:"user",value:msg.author.username},{key:"mode",value:mode}])
|
|
APIEvents.onCommand("stats",true,msg.author,msg.channel,msg.guild,new Date())
|
|
})
|
|
|
|
if (!DISABLE.commands.slash.stats) client.on("interactionCreate",async (interaction) => {
|
|
if (!interaction.isChatInputCommand()) return
|
|
if (interaction.commandName != "stats") return
|
|
if (!interaction.guild) return
|
|
|
|
/**@type {"global"|"ticket"|"user"} */
|
|
const mode = interaction.options.getSubcommand(true)
|
|
|
|
await interaction.deferReply()
|
|
|
|
if (mode == "global"){
|
|
//send global stats
|
|
interaction.editReply({embeds:[await bot.statsManager.createGlobalStatsEmbed()]})
|
|
|
|
}else if (mode == "user"){
|
|
//send user stats
|
|
const mention = interaction.options.getUser("user",false)
|
|
if (mention){
|
|
//get user from mention
|
|
if (!bot.statsManager.existStats("user","TICKETS_CREATED",mention.id)){
|
|
interaction.editReply({embeds:[bot.errorLog.serverError(l.stats.errorUserNotFound)]})
|
|
return
|
|
}
|
|
interaction.editReply({embeds:[await bot.statsManager.createUserStatsEmbed(interaction.guild,mention,interaction.channel.id)]})
|
|
}else{
|
|
//use author as user
|
|
if (!bot.statsManager.existStats("user","TICKETS_CREATED",interaction.user.id)){
|
|
interaction.editReply({embeds:[bot.errorLog.serverError(l.stats.errorUserNotFound)]})
|
|
return
|
|
}
|
|
interaction.editReply({embeds:[await bot.statsManager.createUserStatsEmbed(interaction.guild,interaction.user,interaction.channel.id)]})
|
|
}
|
|
|
|
}else if (mode == "ticket"){
|
|
//send ticket stats
|
|
if (!bot.statsManager.existStats("ticket","STATUS",interaction.channel.id)){
|
|
interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
|
return
|
|
}
|
|
interaction.editReply({embeds:[await bot.statsManager.createTicketStatsEmbed(interaction.guild,interaction.channel.id)]})
|
|
}
|
|
|
|
log("command","someone used the 'stats' command",[{key:"user",value:interaction.user.username},{key:"mode",value:mode}])
|
|
APIEvents.onCommand("stats",true,interaction.user,interaction.channel,interaction.guild,new Date())
|
|
})
|
|
} |