361 lines
10 KiB
JavaScript
361 lines
10 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 storage = bot.storage
|
|
|
|
|
|
//EVENT API:
|
|
const ticketOpenListeners = []
|
|
const ticketCloseListeners = []
|
|
const ticketDeleteListeners = []
|
|
const ticketReopenListeners = []
|
|
|
|
const ticketAddListeners = []
|
|
const ticketRemoveListeners = []
|
|
|
|
|
|
const transcriptCreationListeners = []
|
|
const commandListeners = []
|
|
const reactionRoleListeners = []
|
|
const errorListeners = []
|
|
|
|
/**
|
|
*
|
|
* @param {discord.User} user
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
|
*/
|
|
exports.onTicketOpen = (user,channel,guild,date,ticketdata) => {
|
|
//system
|
|
bot.errorLog.log("api","new ticket created",[{key:"userid",value:user.id},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id},{key:"ticketdata",value:JSON.stringify(ticketdata)}])
|
|
|
|
ticketOpenListeners.forEach((func) => {
|
|
try {
|
|
func(user,channel,guild,date,ticketdata)
|
|
}catch{}
|
|
})
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {discord.User} user
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
|
* @param {String} reason
|
|
*/
|
|
exports.onTicketClose = (user,channel,guild,date,ticketdata,reason) => {
|
|
//system
|
|
bot.errorLog.log("api","ticket closed",[{key:"userid",value:user.id},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id},{key:"ticketdata",value:JSON.stringify(ticketdata)},{key:"reason",value:reason}])
|
|
|
|
ticketCloseListeners.forEach((func) => {
|
|
try {
|
|
func(user,channel,guild,date,ticketdata,reason)
|
|
}catch{}
|
|
})
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {discord.User} user
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
|
*/
|
|
exports.onTicketDelete = (user,channel,guild,date,ticketdata) => {
|
|
//system
|
|
bot.errorLog.log("api","ticket deleted",[{key:"userid",value:user.id},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id},{key:"ticketdata",value:JSON.stringify(ticketdata)}])
|
|
|
|
ticketDeleteListeners.forEach((func) => {
|
|
try {
|
|
func(user,channel,guild,date,ticketdata)
|
|
}catch{}
|
|
})
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {discord.User} user
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
|
*/
|
|
exports.onTicketReopen = (user,channel,guild,date,ticketdata) => {
|
|
//system
|
|
bot.errorLog.log("api","ticket reopened",[{key:"userid",value:user.id},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id},{key:"ticketdata",value:JSON.stringify(ticketdata)}])
|
|
|
|
ticketReopenListeners.forEach((func) => {
|
|
try {
|
|
func(user,channel,guild,date,ticketdata)
|
|
}catch{}
|
|
})
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {discord.User} user
|
|
* @param {discord.User} editeduser
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
|
*/
|
|
exports.onTicketAdd = (user,editeduser,channel,guild,date,ticketdata) => {
|
|
//system
|
|
bot.errorLog.log("api","user added to ticket",[{key:"userid",value:user.id},{key:"editeduser",value:editeduser.id},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id},{key:"ticketdata",value:JSON.stringify(ticketdata)}])
|
|
|
|
ticketAddListeners.forEach((func) => {
|
|
try {
|
|
func(user,editeduser,channel,guild,date,ticketdata)
|
|
}catch{}
|
|
})
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {discord.User} user
|
|
* @param {discord.User} editeduser
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
|
*/
|
|
exports.onTicketRemove = (user,editeduser,channel,guild,date,ticketdata) => {
|
|
//system
|
|
bot.errorLog.log("api","user removed from ticket",[{key:"userid",value:user.id},{key:"editeduser",value:editeduser.id},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id},{key:"ticketdata",value:JSON.stringify(ticketdata)}])
|
|
|
|
ticketRemoveListeners.forEach((func) => {
|
|
try {
|
|
func(user,editeduser,channel,guild,date,ticketdata)
|
|
}catch{}
|
|
})
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {discord.Message[]} messages
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
*/
|
|
exports.onTranscriptCreation = (messages,channel,guild,date) => {
|
|
//system
|
|
bot.errorLog.log("api","transcript created",[{key:"messages",value:JSON.stringify(messages)},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id}])
|
|
|
|
transcriptCreationListeners.forEach((func) => {
|
|
try {
|
|
func(messages,channel,guild,date)
|
|
}catch{}
|
|
})
|
|
|
|
}
|
|
|
|
/**@typedef {"help"|"message"|"close"|"delete"|"reopen"|"rename"|"add"|"remove"} OTCommandType */
|
|
|
|
/**
|
|
*
|
|
* @param {OTCommandType} type
|
|
* @param {Boolean} hasPerms
|
|
* @param {discord.User} user
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
*/
|
|
exports.onCommand = (type,hasPerms,user,channel,guild,date) => {
|
|
|
|
const newguild = guild ? guild : false
|
|
//system
|
|
bot.errorLog.log("api","someone used a command",[{key:"type",value:type},{key:"hasPerms",value:hasPerms},{key:"userid",value:user},{key:"channelid",value:channel.id},{key:"guildid",value:newguild.id}])
|
|
|
|
commandListeners.forEach((func) => {
|
|
try {
|
|
func(type,hasPerms,user,channel,newguild,date)
|
|
}catch{}
|
|
})
|
|
}
|
|
|
|
/**@typedef {"add"|"remove"|"add&remove"} OTReactionRoleType */
|
|
/**@typedef {"add"|"remove"} OTReactionRoleMode */
|
|
|
|
/**
|
|
* @param {OTReactionRoleMode} mode
|
|
* @param {OTReactionRoleType} type
|
|
* @param {discord.Role} role
|
|
* @param {discord.User} user
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
*/
|
|
exports.onReactionRole = (mode,type,role,user,channel,guild,date) => {
|
|
//system
|
|
bot.errorLog.log("api","someone used a reaction role",[{key:"mode",value:mode},{key:"type",value:type},{key:"roleid",value:role.id},{key:"userid",value:user},{key:"channelid",value:channel.id},{key:"guildid",value:guild.id}])
|
|
|
|
reactionRoleListeners.forEach((func) => {
|
|
try {
|
|
func(mode,type,role,user,channel,guild,date)
|
|
}catch{}
|
|
})
|
|
|
|
}
|
|
|
|
/**
|
|
* @param {String} err
|
|
* @param {Date} date
|
|
*/
|
|
exports.onError = (err,date) => {
|
|
//system
|
|
bot.errorLog.log("api","there is an error",[{key:"error",value:err}])
|
|
|
|
errorListeners.forEach((func) => {
|
|
try {
|
|
func(err,date)
|
|
}catch{}
|
|
})
|
|
|
|
}
|
|
|
|
|
|
//EVENT CALLBACKS:
|
|
|
|
/**
|
|
* @callback TicketActionEvent
|
|
* @param {discord.User} user
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
|
*/
|
|
|
|
/**
|
|
* @callback TicketCloseEvent
|
|
* @param {discord.User} user
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
|
* @param {String} reason
|
|
*/
|
|
|
|
/**
|
|
* @callback TranscriptCreationEvent
|
|
* @param {discord.Message[]} messages
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
*/
|
|
|
|
/**
|
|
* @callback TicketUserChangeEvent
|
|
* @param {discord.User} user
|
|
* @param {discord.User} editeduser
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
|
*/
|
|
|
|
/**
|
|
* @callback CommandEvent
|
|
* @param {OTCommandType} type
|
|
* @param {Boolean} hasPerms
|
|
* @param {discord.User} user
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild|false} guild
|
|
* @param {Date} date
|
|
*/
|
|
|
|
/**
|
|
* @callback ReactionRoleEvent
|
|
* @param {OTReactionRoleMode} mode
|
|
* @param {OTReactionRoleType} type
|
|
* @param {discord.Role} role
|
|
* @param {discord.User} user
|
|
* @param {discord.TextChannel} channel
|
|
* @param {discord.Guild} guild
|
|
* @param {Date} date
|
|
*/
|
|
|
|
/**
|
|
* @callback ErrorEvent
|
|
* @param {String} error
|
|
* @param {Date} date
|
|
*/
|
|
|
|
//EVENT EXPORT:
|
|
|
|
/**@param {TicketActionEvent} callback */
|
|
const onTicketOpen = (callback) => {
|
|
ticketOpenListeners.push(callback)
|
|
}
|
|
|
|
/**@param {TicketCloseEvent} callback */
|
|
const onTicketClose = (callback) => {
|
|
ticketCloseListeners.push(callback)
|
|
}
|
|
|
|
/**@param {TicketActionEvent} callback */
|
|
const onTicketDelete = (callback) => {
|
|
ticketDeleteListeners.push(callback)
|
|
}
|
|
|
|
/**@param {TicketActionEvent} callback */
|
|
const onTicketReopen = (callback) => {
|
|
ticketReopenListeners.push(callback)
|
|
}
|
|
|
|
/**@param {TicketUserChangeEvent} callback */
|
|
const onTicketAdd = (callback) => {
|
|
ticketAddListeners.push(callback)
|
|
}
|
|
|
|
/**@param {TicketUserChangeEvent} callback */
|
|
const onTicketRemove = (callback) => {
|
|
ticketRemoveListeners.push(callback)
|
|
}
|
|
|
|
/**@param {TranscriptCreationEvent} callback */
|
|
const onTranscriptCreation = (callback) => {
|
|
transcriptCreationListeners.push(callback)
|
|
}
|
|
|
|
/**@param {CommandEvent} callback */
|
|
const onCommand = (callback) => {
|
|
commandListeners.push(callback)
|
|
}
|
|
|
|
/**@param {ReactionRoleEvent} callback */
|
|
const onReactionRole = (callback) => {
|
|
commandListeners.push(callback)
|
|
}
|
|
|
|
/**@param {ErrorEvent} callback */
|
|
const onError = (callback) => {
|
|
errorListeners.push(callback)
|
|
}
|
|
|
|
exports.events = {
|
|
onTicketOpen,
|
|
onTicketClose,
|
|
onTicketDelete,
|
|
onTicketReopen,
|
|
onTicketAdd,
|
|
onTicketRemove,
|
|
onTranscriptCreation,
|
|
onCommand,
|
|
onReactionRole,
|
|
onError
|
|
} |