v2.4.0 push 4
This commit is contained in:
@@ -1,56 +0,0 @@
|
||||
# OT-API Documentation
|
||||
Extend open ticket with your own features!
|
||||
|
||||
The api is made for EXTENDING open ticket, not replacing! So with this api you are not able to replace existing features! You can only add your own features!
|
||||
|
||||
### DISCLAIMER:
|
||||
Only edit or extend the code when you know what you are doing!
|
||||
|
||||
If open ticket crashes while you change the code, then we can't help you!
|
||||
|
||||
**DO IT ON YOUR OWN RISK!**
|
||||
|
||||
## Events:
|
||||
Everything in the `events.js` file!
|
||||
|
||||
### onTicketOpen(...)
|
||||
This function is executed when a new ticket is created. It happens after everything else is done, so the channel is already created!
|
||||
|
||||
Parameters:
|
||||
- user: `discord.User`
|
||||
- channel: `discord.TextChannel`
|
||||
- guild: `discord.Guild`
|
||||
- date: `Date`
|
||||
- ticketdata: `OT TicketData` or `false` (more info further down this document)
|
||||
|
||||
### onTicketClose(...)
|
||||
This function is executed when a ticket gets closed, it can happen multiple times with one ticket (because of reopen).
|
||||
|
||||
Parameters:
|
||||
- user: `discord.User`
|
||||
- channel: `discord.TextChannel`
|
||||
- guild: `discord.Guild`
|
||||
- date: `Date`
|
||||
- ticketdata: `OT TicketData` or `false` (more info further down this document)
|
||||
|
||||
### onTicketDelete(...)
|
||||
This function is executed when a ticket gets deleted, it can happen only 1 time.
|
||||
|
||||
Parameters:
|
||||
- user: `discord.User`
|
||||
- channel: `discord.TextChannel`
|
||||
- guild: `discord.Guild`
|
||||
- date: `Date`
|
||||
- ticketdata: `OT TicketData` or `false` (more info further down this document)
|
||||
|
||||
### onTicketReopen(...)
|
||||
...
|
||||
|
||||
### onTranscriptCreation(...)
|
||||
...
|
||||
|
||||
### onCommand(...)
|
||||
...
|
||||
|
||||
### onReactionRole(...)
|
||||
...
|
||||
+44
-1
@@ -1,3 +1,46 @@
|
||||
{
|
||||
"version":"1.0.0"
|
||||
"version":"1.0.0",
|
||||
|
||||
|
||||
"disclaimer":"DISABLE doesn't work yet! Below this message!",
|
||||
"disable":{
|
||||
"messages":{
|
||||
"ticketCreated":false,
|
||||
"ticketClosed":false,
|
||||
"ticketDeleted":false,
|
||||
"ticketReopened":false
|
||||
},
|
||||
"transcripts":{
|
||||
"server":false,
|
||||
"dm":false
|
||||
},
|
||||
"commands":{
|
||||
"text":{
|
||||
"help":false,
|
||||
"msg":false,
|
||||
"close":false,
|
||||
"delete":false,
|
||||
"reopen":false,
|
||||
"new":false,
|
||||
"add":false,
|
||||
"remove":false,
|
||||
"rename":false
|
||||
},
|
||||
"slash":{
|
||||
"help":false,
|
||||
"msg":false,
|
||||
"close":false,
|
||||
"delete":false,
|
||||
"reopen":false,
|
||||
"new":false,
|
||||
"add":false,
|
||||
"remove":false,
|
||||
"rename":false
|
||||
}
|
||||
},
|
||||
"checkerjs":{
|
||||
"token":false,
|
||||
"all":false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,11 @@ const storage = bot.storage
|
||||
const ticketOpenListeners = []
|
||||
const ticketCloseListeners = []
|
||||
const ticketDeleteListeners = []
|
||||
const ticketReopenListeners = []
|
||||
|
||||
const transcriptCreationListeners = []
|
||||
const commandListeners = []
|
||||
const reactionRoleListeners = []
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -72,6 +77,51 @@ exports.onTicketDelete = (user,channel,guild,date,ticketdata) => {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @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.Message[]} messages
|
||||
* @param {discord.TextChannel} channel
|
||||
* @param {discord.Guild} guild
|
||||
* @param {Date} date
|
||||
*/
|
||||
exports.transcriptCreation = (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{}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
//onTicketAdd
|
||||
//onTicketRemove
|
||||
//command
|
||||
//reactionrole
|
||||
//error
|
||||
|
||||
//EVENT CALLBACKS:
|
||||
|
||||
/**
|
||||
@@ -83,6 +133,14 @@ exports.onTicketDelete = (user,channel,guild,date,ticketdata) => {
|
||||
* @param {{name:String,status:"open"|"closed"|"deleted"|"reopened",ticketOptions:Object|false}} ticketdata
|
||||
*/
|
||||
|
||||
/**
|
||||
* @callback TranscriptCreationEvent
|
||||
* @param {discord.Message[]} messages
|
||||
* @param {discord.TextChannel} channel
|
||||
* @param {discord.Guild} guild
|
||||
* @param {Date} date
|
||||
*/
|
||||
|
||||
//EVENT EXPORT:
|
||||
|
||||
/**@param {TicketActionEvent} callback */
|
||||
@@ -100,8 +158,20 @@ const onTicketDelete = (callback) => {
|
||||
ticketDeleteListeners.push(callback)
|
||||
}
|
||||
|
||||
/**@param {TicketActionEvent} callback */
|
||||
const onTicketReopen = (callback) => {
|
||||
ticketReopenListeners.push(callback)
|
||||
}
|
||||
|
||||
/**@param {TranscriptCreationEvent} callback */
|
||||
const onTranscriptCreation = (callback) => {
|
||||
transcriptCreationListeners.push(callback)
|
||||
}
|
||||
|
||||
exports.events = {
|
||||
onTicketOpen:onTicketOpen,
|
||||
onTicketClose:onTicketClose,
|
||||
onTicketDelete:onTicketDelete
|
||||
onTicketOpen,
|
||||
onTicketClose,
|
||||
onTicketDelete,
|
||||
onTicketReopen,
|
||||
onTranscriptCreation
|
||||
}
|
||||
+23
-1
@@ -41,7 +41,7 @@ exports.checker = async () => {
|
||||
}
|
||||
/**@param {String} value */
|
||||
const checkToken = (value) => {
|
||||
if (value.includes(" ") || value.length < 40 || value.length > 70){
|
||||
if (value.includes(" ") || value.length < 40 || value.length > 90){
|
||||
createError("'auth_token' | your token is invalid")
|
||||
}
|
||||
}
|
||||
@@ -310,6 +310,28 @@ exports.checker = async () => {
|
||||
checkOption(option,"options/"+index)
|
||||
})
|
||||
|
||||
|
||||
//discord check
|
||||
/**
|
||||
const discord = require("discord.js")
|
||||
const {GatewayIntentBits,Partials} = discord
|
||||
const client = new discord.Client({
|
||||
intents:[
|
||||
GatewayIntentBits.DirectMessages,
|
||||
GatewayIntentBits.GuildInvites,
|
||||
GatewayIntentBits.GuildMembers,
|
||||
GatewayIntentBits.GuildMessages,
|
||||
GatewayIntentBits.Guilds,
|
||||
GatewayIntentBits.MessageContent
|
||||
],
|
||||
partials:[Partials.Channel,Partials.Message]
|
||||
})
|
||||
await client.guilds.fetch()
|
||||
if (!client.guilds.cache.find(g => g.id == config.server_id)){
|
||||
createError("'server_id' | i'm not in a server with this id!")
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
//the end
|
||||
|
||||
@@ -75,6 +75,7 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode) => {
|
||||
if (!guild) return
|
||||
if (!permsChecker.command(user.id,guild.id)){
|
||||
permsChecker.sendUserNoPerms(user)
|
||||
return
|
||||
}
|
||||
|
||||
//start delete proccess
|
||||
@@ -115,6 +116,7 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode) => {
|
||||
if (!guild) return
|
||||
if (!permsChecker.command(user.id,guild.id)){
|
||||
permsChecker.sendUserNoPerms(user)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,6 +204,7 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode) => {
|
||||
if (!guild) return
|
||||
if (!permsChecker.command(user.id,guild.id)){
|
||||
permsChecker.sendUserNoPerms(user)
|
||||
return
|
||||
}
|
||||
|
||||
//start delete proccess
|
||||
|
||||
@@ -33,11 +33,16 @@ exports.createEmbed = (id) => {
|
||||
//-----------------------------------
|
||||
//create the embed
|
||||
const embed = new discord.EmbedBuilder()
|
||||
.setColor(data.color)
|
||||
.setTitle(data.name)
|
||||
if (data.enableFooter) embed.setFooter({text:data.footer})
|
||||
if (data.enableThumbnail) embed.setThumbnail(data.thumbnail)
|
||||
|
||||
if (data.enableCustomColor){
|
||||
embed.setColor(data.color)
|
||||
}else{
|
||||
embed.setColor(config.main_color)
|
||||
}
|
||||
|
||||
var description = data.description
|
||||
if (data.enableTicketExplaination){
|
||||
description = description+"\n\n__"+l.messages.chooseCategory+"__\n"
|
||||
|
||||
+47
-124
@@ -92,6 +92,51 @@ module.exports = () => {
|
||||
.setEmoji("🔓")
|
||||
)
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {discord.Guild} guild
|
||||
* @param {discord.TextBasedChannel} channel
|
||||
* @param {discord.User} user
|
||||
* @returns
|
||||
*/
|
||||
const reopenTicket = (guild,channel,user) => {
|
||||
log("system","re-opened a ticket",[{key:"ticket",value:channel.name},{key:"user",value:user.tag}])
|
||||
|
||||
var permissionsArray = []
|
||||
|
||||
//set everyone allowed
|
||||
if (config.system['has@everyoneaccess']){
|
||||
var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
var everyoneDenyPerms = []
|
||||
}else{
|
||||
var everyoneAllowPerms = []
|
||||
var everyoneDenyPerms = [pfb.ViewChannel]
|
||||
}
|
||||
permissionsArray.push({
|
||||
id:guild.roles.everyone,
|
||||
type:"role",
|
||||
allow:everyoneAllowPerms,
|
||||
deny:everyoneDenyPerms
|
||||
})
|
||||
|
||||
channel.permissionOverwrites.cache.forEach((p) => {
|
||||
if (p.type == "member"){
|
||||
permissionsArray.push({
|
||||
id:p.id,
|
||||
type:"member",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel],
|
||||
deny:[]
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
channel.permissionOverwrites.set(permissionsArray)
|
||||
|
||||
require("./api/modules/events").onTicketReopen(user,channel,guild,new Date(),{name:channel.name,status:"reopened",ticketOptions:false})
|
||||
}
|
||||
|
||||
|
||||
|
||||
//NORMAL WAY
|
||||
client.on("interactionCreate",(interaction) => {
|
||||
if (!interaction.isButton()) return
|
||||
@@ -126,38 +171,7 @@ module.exports = () => {
|
||||
|
||||
interaction.message.edit({embeds:[embed],components:[closeRowNormal]})
|
||||
|
||||
log("system","re-opened a ticket",[{key:"ticket",value:interaction.channel.name},{key:"user",value:interaction.user.tag}])
|
||||
|
||||
|
||||
var permissionsArray = []
|
||||
|
||||
//set everyone allowed
|
||||
if (config.system['has@everyoneaccess']){
|
||||
var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
var everyoneDenyPerms = []
|
||||
}else{
|
||||
var everyoneAllowPerms = []
|
||||
var everyoneDenyPerms = [pfb.ViewChannel]
|
||||
}
|
||||
permissionsArray.push({
|
||||
id:interaction.guild.roles.everyone,
|
||||
type:"role",
|
||||
allow:everyoneAllowPerms,
|
||||
deny:everyoneDenyPerms
|
||||
})
|
||||
|
||||
interaction.channel.permissionOverwrites.cache.forEach((p) => {
|
||||
if (p.type == "member"){
|
||||
permissionsArray.push({
|
||||
id:p.id,
|
||||
type:"member",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel],
|
||||
deny:[]
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
interaction.channel.permissionOverwrites.set(permissionsArray)
|
||||
reopenTicket(interaction.guild,interaction.channel,interaction.user)
|
||||
})
|
||||
|
||||
|
||||
@@ -193,97 +207,6 @@ module.exports = () => {
|
||||
|
||||
interaction.message.edit({content:null,embeds:[embed],components:[closeRowNormal]})
|
||||
|
||||
log("system","re-opened a ticket",[{key:"ticket",value:interaction.channel.name},{key:"user",value:interaction.user.tag}])
|
||||
|
||||
|
||||
var permissionsArray = []
|
||||
|
||||
//set everyone allowed
|
||||
if (config.system['has@everyoneaccess']){
|
||||
var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
var everyoneDenyPerms = []
|
||||
}else{
|
||||
var everyoneAllowPerms = []
|
||||
var everyoneDenyPerms = [pfb.ViewChannel]
|
||||
}
|
||||
permissionsArray.push({
|
||||
id:interaction.guild.roles.everyone,
|
||||
type:"role",
|
||||
allow:everyoneAllowPerms,
|
||||
deny:everyoneDenyPerms
|
||||
})
|
||||
|
||||
interaction.channel.permissionOverwrites.cache.forEach((p) => {
|
||||
if (p.type == "member"){
|
||||
permissionsArray.push({
|
||||
id:p.id,
|
||||
type:"member",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel],
|
||||
deny:[]
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
interaction.channel.permissionOverwrites.set(permissionsArray)
|
||||
|
||||
//getID & send DM
|
||||
interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
var firstmsg = msglist.last()
|
||||
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
|
||||
|
||||
const id = firstmsg.embeds[0].author.name
|
||||
|
||||
if (!id) return false
|
||||
|
||||
try{
|
||||
if (config.system.enable_DM_Messages){
|
||||
interaction.member.send({embeds:[bot.errorLog.custom(l.messages.reopenTicketDmTitle,l.messages.reopenTicketDmDescription,":ticket:",config.main_color)]})
|
||||
}
|
||||
}
|
||||
catch{log("system","can't send DM to member, member doesn't allow dm's")}
|
||||
})
|
||||
reopenTicket(interaction.guild,interaction.channel,interaction.user)
|
||||
})
|
||||
|
||||
//DASHBOARD (comming soon!)
|
||||
/**
|
||||
*
|
||||
* @param {discord.Guild} guild
|
||||
* @param {discord.TextBasedChannel} channel
|
||||
* @param {discord.User} user
|
||||
* @returns
|
||||
*/
|
||||
const reopenTicket = (guild,channel,user) => {
|
||||
log("system","re-opened a ticket",[{key:"ticket",value:channel.name},{key:"user",value:user.tag}])
|
||||
|
||||
var permissionsArray = []
|
||||
|
||||
//set everyone allowed
|
||||
if (config.system['has@everyoneaccess']){
|
||||
var everyoneAllowPerms = [pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
|
||||
var everyoneDenyPerms = []
|
||||
}else{
|
||||
var everyoneAllowPerms = []
|
||||
var everyoneDenyPerms = [pfb.ViewChannel]
|
||||
}
|
||||
permissionsArray.push({
|
||||
id:guild.roles.everyone,
|
||||
type:"role",
|
||||
allow:everyoneAllowPerms,
|
||||
deny:everyoneDenyPerms
|
||||
})
|
||||
|
||||
channel.permissionOverwrites.cache.forEach((p) => {
|
||||
if (p.type == "member"){
|
||||
permissionsArray.push({
|
||||
id:p.id,
|
||||
type:"member",
|
||||
allow:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel],
|
||||
deny:[]
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
channel.permissionOverwrites.set(permissionsArray)
|
||||
}
|
||||
}
|
||||
+4
-2
@@ -44,6 +44,8 @@ const getUserInfo = (channel) => {
|
||||
|
||||
exports.createTranscript = async (messagecollection,channel) => {
|
||||
const ticketuserdata = await getUserInfo(channel)
|
||||
|
||||
require("./api/modules/events").transcriptCreation(messagecollection,channel,channel.guild,new Date())
|
||||
try {
|
||||
const cd = new Date()
|
||||
const months = ["January","February","March","April","May","June","July","August","September","October","November","December"]
|
||||
@@ -57,8 +59,8 @@ exports.createTranscript = async (messagecollection,channel) => {
|
||||
|
||||
if (msg.content){var content = msg.content}else{var content = "*empty message*"}
|
||||
|
||||
const msgstats = "files: "+msg.attachments.size+" | embeds: "+msg.embeds.length+" | isbot: "+msg.author.bot
|
||||
filearray.push("["+timestamp.getDate()+"/"+timestamp.getMonth()+"/"+timestamp.getFullYear()+" | "+timestamp.getHours()+":"+timestamp.getMinutes()+":"+timestamp.getSeconds()+" | "+msg.author.tag+" ] ["+msgstats+"]\n"+content+"\n")
|
||||
const msgstats = "files: "+msg.attachments.size+", embeds: "+msg.embeds.length
|
||||
filearray.push("["+timestamp.getDate()+"/"+timestamp.getMonth()+"/"+timestamp.getFullYear()+", "+timestamp.getHours()+":"+timestamp.getMinutes()+":"+timestamp.getSeconds()+"|"+msg.author.tag+"] ["+msgstats+"]\n"+content+"\n")
|
||||
})
|
||||
|
||||
if (filearray.length < 2) filearray.push("transcript is empty")
|
||||
|
||||
Reference in New Issue
Block a user