v2.4.0 push 2 (first working api)

This commit is contained in:
DJj123dj
2022-07-26 14:51:51 +02:00
parent 6b32fc9d5d
commit e7a331b969
9 changed files with 216 additions and 116 deletions
+13
View File
@@ -0,0 +1,13 @@
//base
const bot = require("../../index")
exports.client = bot.client
exports.config = bot.config
exports.utils = {
log:bot.errorLog.log(),
storage:bot.storage
}
//events
const events = require("./modules/events").events
exports.events = events
-9
View File
@@ -1,9 +0,0 @@
const discord = require("discord.js")
const client = require("../../../index").client
module.exports = () => {
//this code will run when the bot starts!
}
+55 -3
View File
@@ -6,6 +6,12 @@ const log = bot.errorLog.log
const l = bot.language const l = bot.language
const storage = bot.storage const storage = bot.storage
//EVENT API:
const ticketOpenListeners = []
const ticketCloseListeners = []
const ticketDeleteListeners = []
/** /**
* *
* @param {discord.User} user * @param {discord.User} user
@@ -18,7 +24,11 @@ exports.onTicketOpen = (user,channel,guild,date,ticketdata) => {
//system //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)}]) 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)}])
//custom code ticketOpenListeners.forEach((func) => {
try {
func(user,channel,guild,date,ticketdata)
}catch{}
})
} }
@@ -34,7 +44,11 @@ exports.onTicketClose = (user,channel,guild,date,ticketdata) => {
//system //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)}]) 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)}])
//custom code ticketCloseListeners.forEach((func) => {
try {
func(user,channel,guild,date,ticketdata)
}catch{}
})
} }
@@ -50,6 +64,44 @@ exports.onTicketDelete = (user,channel,guild,date,ticketdata) => {
//system //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)}]) 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)}])
//custom code ticketDeleteListeners.forEach((func) => {
try {
func(user,channel,guild,date,ticketdata)
}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
*/
//EVENT EXPORT:
/**@param {TicketActionEvent} callback */
const onTicketOpen = (callback) => {
ticketOpenListeners.push(callback)
}
/**@param {TicketActionEvent} callback */
const onTicketClose = (callback) => {
ticketCloseListeners.push(callback)
}
/**@param {TicketActionEvent} callback */
const onTicketDelete = (callback) => {
ticketDeleteListeners.push(callback)
}
exports.events = {
onTicketOpen:onTicketOpen,
onTicketClose:onTicketClose,
onTicketDelete:onTicketDelete
}
+26
View File
@@ -0,0 +1,26 @@
const fs = require("fs")
const bot = require("../../index")
const log = bot.errorLog.log
module.exports = () => {
const files = fs.readdirSync("./plugins")
var totalcount = 0
var successcount = 0
var failcount = 0
files.forEach((file) => {
if (file.endsWith(".plugin.js")){
try {
require("../../plugins/"+file)()
successcount++
totalcount++
}catch{
failcount++
totalcount++
}
}
})
log("info","loaded plugins",[{key:"success",value:successcount},{key:"error",value:failcount},{key:"total",value:totalcount}])
}
+4 -4
View File
@@ -167,7 +167,7 @@ module.exports = () => {
} }
}) })
await require("./ticketCloser").closeTicket(interaction,prefix,"close") await require("./ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"close")
closeTicketButtonChecker = false closeTicketButtonChecker = false
}) })
@@ -218,7 +218,7 @@ module.exports = () => {
} }
}) })
await require("./ticketCloser").closeTicket(interaction,prefix,"close") await require("./ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"close")
closeTicket1ButtonChecker = false closeTicket1ButtonChecker = false
}) })
@@ -270,7 +270,7 @@ module.exports = () => {
} }
}) })
await require("./ticketCloser").closeTicket(interaction,prefix,"delete") await require("./ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"delete")
deleteTicketButtonChecker = false deleteTicketButtonChecker = false
}) })
@@ -325,7 +325,7 @@ module.exports = () => {
} }
}) })
await require("./ticketCloser").closeTicket(interaction,prefix,"deletenotranscript") await require("./ticketCloser").NEWcloseTicket(interaction.member,interaction.channel,prefix,"deletenotranscript")
deleteTicket1ButtonChecker = false deleteTicket1ButtonChecker = false
}) })
} }
+8 -8
View File
@@ -92,8 +92,8 @@ const normalLog = (debugString) => {
* @param {String} message * @param {String} message
* @param {[{key:String,value:String}]} params * @param {[{key:String,value:String}]} params
*/ */
exports.log = async (ptype,message,params) => { exports.log = async (type,message,params) => {
var type = ptype var ptype = type
const chalk = await loadChalk() const chalk = await loadChalk()
var paramstring = "" var paramstring = ""
if (params){ if (params){
@@ -105,20 +105,20 @@ exports.log = async (ptype,message,params) => {
} }
const parameters = params ? "("+paramstring+")" : " " const parameters = params ? "("+paramstring+")" : " "
if (type == "command"){ if (ptype == "command"){
console.log(chalk.green("[command] ")+message+" "+chalk.yellow(parameters)) console.log(chalk.green("[command] ")+message+" "+chalk.yellow(parameters))
}else if (type == "info"){ }else if (ptype == "info"){
console.log(chalk.blue("[info] ")+message+" "+chalk.yellow(parameters)) console.log(chalk.blue("[info] ")+message+" "+chalk.yellow(parameters))
}else if (type == "system"){ }else if (ptype == "system"){
console.log(chalk.green("[system] ")+message+" "+chalk.yellow(parameters)) console.log(chalk.green("[system] ")+message+" "+chalk.yellow(parameters))
}else if (type == "api"){ }else if (ptype == "api"){
if (require("./api/modules/base").enableApiLogs == true){ if (require("./api/modules/base").enableApiLogs == true){
console.log(chalk.red("[api v"+require("./api/api.json").version+"] ")+message+" "+chalk.yellow(parameters)) console.log(chalk.red("[api v"+require("./api/api.json").version+"] ")+message+" "+chalk.yellow(parameters))
} }
type = "api v"+require("./api/api.json").version ptype = "api v"+require("./api/api.json").version
} }
const cd = new Date() const cd = new Date()
const months = ["January","February","March","April","May","June","July","August","September","October","November","December"] const months = ["January","February","March","April","May","June","July","August","September","October","November","December"]
normalLog("["+cd.getDate()+" "+months[cd.getMonth()-1]+" "+cd.getFullYear()+" - "+cd.getSeconds()+":"+cd.getMinutes()+":"+cd.getHours()+"] ["+type+"] "+message+" "+parameters) normalLog("["+cd.getDate()+" "+months[cd.getMonth()-1]+" "+cd.getFullYear()+" - "+cd.getSeconds()+":"+cd.getMinutes()+":"+cd.getHours()+"] ["+ptype+"] "+message+" "+parameters)
} }
+92 -92
View File
@@ -5,37 +5,63 @@ const config = bot.config
const log = bot.errorLog.log const log = bot.errorLog.log
const l = bot.language const l = bot.language
const storage = bot.storage const storage = bot.storage
const permsChecker = require("./utils/permisssionChecker")
exports.runThis = () => {
client.on("interactionCreate",async (interaction) => {
if (!interaction.isButton()) return
if (interaction.customId != "sendTranscript") return
interaction.deferUpdate()
const channelmessages = await interaction.channel.messages.fetch()
channelmessages.sweep((msgSweep) => {
return msgSweep.author.id == client.user.id
})
var fileattachment = await require("./transcript").createTranscript(channelmessages,interaction.channel)
if (fileattachment == false){
log("system","internal error: transcript is not created!")
interaction.channel.send({embeds:[bot.errorLog.serverError(l.errors.somethingWentWrongTranscript)]})
return
}
interaction.channel.send({content:"**"+l.messages.hereIsTheTranscript+"**",files:[fileattachment]})
})
}
/** /**
* *
* @param {discord.Interaction} interaction * @param {discord.GuildMember} member
* @param {discord.TextChannel} channel
* @param {String} prefix * @param {String} prefix
* @param {"delete"|"close"|"deletenotranscript"} mode * @param {"delete"|"close"|"deletenotranscript"} mode
*/ */
exports.closeTicket = async (interaction,prefix,mode) => { exports.NEWcloseTicket = async (member,channel,prefix,mode) => {
const guild = channel.guild
const user = member.user
const chalk = await (await import("chalk")).default const chalk = await (await import("chalk")).default
const channelmessages = await interaction.channel.messages.fetch() const channelmessages = await channel.messages.fetch()
const channel = interaction.channel
channelmessages.sweep((msgSweep) => { //start code
return msgSweep.author.id == client.user.id
})
/** //remove ot bot from transcript
* @type {String} ticketuserarray channelmessages.sweep((msgSweep) => {return msgSweep.author.id == client.user.id})
*/
const ticketuserarray = interaction.channel.name
const ticketusername = ticketuserarray.split(prefix)[1]
var getuserID = storage.get("userTicketStorage",interaction.channel.id) /**@type {String}*/
const channelname = channel.name
const ticketOpenerChannelName = channelname.split(prefix)[1]
//get user that opened the ticket
var getuserID = storage.get("userTicketStorage",channel.id)
try { try {
var getusernameStep1 = client.users.cache.find(u => u.id === getuserID) var ticketOpener = client.users.cache.find(u => u.id === getuserID)
var isDatabaseError = false var isDatabaseError = false
}catch{ }catch{var isDatabaseError = true}
var isDatabaseError = true
}
if (!getusernameStep1){ if (!ticketOpener){
console.log(chalk.red("[database error]"),"something went wrong when getting the data in the database.\nNo panic, this error fixes itself!") console.log(chalk.red("[database error]"),"something went wrong when getting the data in the database.\nNo panic, this error fixes itself!")
var isDatabaseError = true var isDatabaseError = true
} }
@@ -44,22 +70,22 @@ exports.closeTicket = async (interaction,prefix,mode) => {
var deleteRequired = false var deleteRequired = false
if (mode == "delete"){ if (mode == "delete"){
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id) //delete
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("ManageGuild")){ //check perms
try { if (!guild) return
return interaction.member.send({embeds:[bot.errorLog.noPermsMessage]}) if (!permsChecker.command(user.id,guild.id)){
}catch{ permsChecker.sendUserNoPerms(user)
return interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]}) }
}
} //start delete proccess
deleteRequired = true deleteRequired = true
await interaction.channel.send({content:"**"+l.messages.gettingdeleted+"**"}) await channel.send({content:"**"+l.messages.gettingdeleted+"**"})
log("system","deleted a ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name}]) log("system","deleted a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}])
if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1) if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1)
//getID & send DM //getID & send DM & send api event
await interaction.channel.messages.fetchPinned().then(msglist => { await channel.messages.fetchPinned().then(msglist => {
var firstmsg = msglist.last() var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
@@ -67,7 +93,7 @@ exports.closeTicket = async (interaction,prefix,mode) => {
const ticketId = firstmsg.embeds[0].footer.text.split("Ticket Type: ")[1] const ticketId = firstmsg.embeds[0].footer.text.split("Ticket Type: ")[1]
const ticketData = require("./getoptions").getOptionsById("newT"+ticketId) const ticketData = require("./getoptions").getOptionsById("newT"+ticketId)
require("./api/modules/events").onTicketDelete(interaction.user,interaction.channel,interaction.guild,new Date(),{name:interaction.channel.name,status:"deleted",ticketOptions:ticketData}) require("./api/modules/events").onTicketDelete(user,channel,guild,new Date(),{name:channel.name,status:"deleted",ticketOptions:ticketData})
if (!firstmsg.embeds[0].author) return false if (!firstmsg.embeds[0].author) return false
const id = firstmsg.embeds[0].author.name const id = firstmsg.embeds[0].author.name
@@ -76,42 +102,40 @@ exports.closeTicket = async (interaction,prefix,mode) => {
try{ try{
if (config.system.enable_DM_Messages){ if (config.system.enable_DM_Messages){
interaction.member.send({embeds:[bot.errorLog.custom(l.messages.deletedTicketDmTitle,l.messages.deletedTicketDmDescription,":ticket:",config.main_color)]}) member.send({embeds:[bot.errorLog.custom(l.messages.deletedTicketDmTitle,l.messages.deletedTicketDmDescription,":ticket:",config.main_color)]})
} }
} }
catch{log("system","can't send DM to member, member doesn't allow dm's")} catch{log("system","can't send DM to member, member doesn't allow dm's")}
}) })
}else if (mode == "close"){ }else if (mode == "close"){
//close
//check perms
if (config.system.closeMode == "adminonly"){ if (config.system.closeMode == "adminonly"){
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id) if (!guild) return
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("ManageGuild")){ if (!permsChecker.command(user.id,guild.id)){
try { permsChecker.sendUserNoPerms(user)
return interaction.member.send({embeds:[bot.errorLog.noPermsMessage]})
}catch{
return interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]})
}
} }
} }
//set new permissions
var permissionArray = [] var permissionArray = []
const pfb = discord.PermissionFlagsBits const pfb = discord.PermissionFlagsBits
if (!isDatabaseError) permissionArray.push({ if (!isDatabaseError) permissionArray.push({
id:getusernameStep1, id:ticketOpener,
type:"member", type:"member",
allow:[pfb.ViewChannel], allow:[pfb.ViewChannel],
deny:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages] deny:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages]
}) })
permissionArray.push({ permissionArray.push({
id:interaction.guild.roles.everyone, id:guild.roles.everyone,
type:"role", type:"role",
deny:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel] deny:[pfb.AddReactions,pfb.AttachFiles,pfb.EmbedLinks,pfb.SendMessages,pfb.ViewChannel]
}) })
interaction.channel.permissionOverwrites.set(permissionArray) channel.permissionOverwrites.set(permissionArray)
//message //message
var closeButtonRow = new discord.ActionRowBuilder() var closeButtonRow = new discord.ActionRowBuilder()
@@ -144,20 +168,20 @@ exports.closeTicket = async (interaction,prefix,mode) => {
.setColor(config.main_color) .setColor(config.main_color)
.setTitle(":lock: "+l.messages.closedTitle+" :lock:") .setTitle(":lock: "+l.messages.closedTitle+" :lock:")
.setDescription(l.messages.closedDescription) .setDescription(l.messages.closedDescription)
interaction.channel.send({embeds:[embed],components:[closeButtonRow]}) channel.send({embeds:[embed],components:[closeButtonRow]})
log("system","closed a ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name}]) log("system","closed a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}])
//getID & send DM //getID & send DM & send api event
await interaction.channel.messages.fetchPinned().then(msglist => { await channel.messages.fetchPinned().then(msglist => {
var firstmsg = msglist.last() var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
const ticketId = firstmsg.embeds[0].footer.text.split("Ticket Type: ")[1] const ticketId = firstmsg.embeds[0].footer.text.split("Ticket Type: ")[1]
const ticketData = require("./getoptions").getOptionsById("newT"+ticketId) const ticketData = require("./getoptions").getOptionsById("newT"+ticketId)
require("./api/modules/events").onTicketClose(interaction.user,interaction.channel,interaction.guild,new Date(),{name:interaction.channel.name,status:"closed",ticketOptions:ticketData}) require("./api/modules/events").onTicketClose(user,channel,guild,new Date(),{name:channel.name,status:"closed",ticketOptions:ticketData})
const id = firstmsg.embeds[0].author.name const id = firstmsg.embeds[0].author.name
@@ -165,7 +189,7 @@ exports.closeTicket = async (interaction,prefix,mode) => {
try{ try{
if (config.system.enable_DM_Messages){ if (config.system.enable_DM_Messages){
interaction.member.send({embeds:[bot.errorLog.custom(l.messages.closedTicketDmTitle,l.messages.closedTicketDmDescription,":ticket:",config.main_color)]}) member.send({embeds:[bot.errorLog.custom(l.messages.closedTicketDmTitle,l.messages.closedTicketDmDescription,":ticket:",config.main_color)]})
} }
} }
catch{log("system","can't send DM to member, member doesn't allow dm's")} catch{log("system","can't send DM to member, member doesn't allow dm's")}
@@ -173,22 +197,23 @@ exports.closeTicket = async (interaction,prefix,mode) => {
}else if (mode == "deletenotranscript"){ }else if (mode == "deletenotranscript"){
//delete with no transcript
//check perms
if (!guild) return
if (!permsChecker.command(user.id,guild.id)){
permsChecker.sendUserNoPerms(user)
}
const permsmember = client.guilds.cache.find(g => g.id == interaction.guild.id).members.cache.find(m => m.id == interaction.member.id) //start delete proccess
if (config.main_adminroles.some((item)=>{return permsmember.roles.cache.has(item)}) == false && !permsmember.permissions.has("Administrator") && !permsmember.permissions.has("ManageGuild")){
interaction.channel.send({embeds:[bot.errorLog.noPermsMessage]})
return
}
enableTranscript = false enableTranscript = false
deleteRequired = true deleteRequired = true
interaction.channel.send({content:"**"+l.messages.gettingdeleted+"**"}) channel.send({content:"**"+l.messages.gettingdeleted+"**"})
log("system","deleted a ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name}]) log("system","deleted a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}])
if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1) if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1)
//getID & send DM //getID & send DM & send api event
await interaction.channel.messages.fetchPinned().then(msglist => { await channel.messages.fetchPinned().then(msglist => {
var firstmsg = msglist.last() var firstmsg = msglist.last()
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false if (firstmsg == undefined || firstmsg.author.id != client.user.id) return false
@@ -196,7 +221,7 @@ exports.closeTicket = async (interaction,prefix,mode) => {
const ticketId = firstmsg.embeds[0].footer.text.split("Ticket Type: ")[1] const ticketId = firstmsg.embeds[0].footer.text.split("Ticket Type: ")[1]
const ticketData = require("./getoptions").getOptionsById("newT"+ticketId) const ticketData = require("./getoptions").getOptionsById("newT"+ticketId)
require("./api/modules/events").onTicketDelete(interaction.user,interaction.channel,interaction.guild,new Date(),{name:interaction.channel.name,status:"deleted",ticketOptions:ticketData}) require("./api/modules/events").onTicketDelete(user,channel,guild,new Date(),{name:channel.name,status:"deleted",ticketOptions:ticketData})
const id = firstmsg.embeds[0].author.name const id = firstmsg.embeds[0].author.name
@@ -204,7 +229,7 @@ exports.closeTicket = async (interaction,prefix,mode) => {
try{ try{
if (config.system.enable_DM_Messages){ if (config.system.enable_DM_Messages){
interaction.member.send({embeds:[bot.errorLog.custom(l.messages.deletedTicketDmTitle,l.messages.deletedTicketDmDescription,":ticket:",config.main_color)]}) member.send({embeds:[bot.errorLog.custom(l.messages.deletedTicketDmTitle,l.messages.deletedTicketDmDescription,":ticket:",config.main_color)]})
} }
} }
catch{log("system","can't send DM to member, member doesn't allow dm's")} catch{log("system","can't send DM to member, member doesn't allow dm's")}
@@ -224,11 +249,11 @@ exports.closeTicket = async (interaction,prefix,mode) => {
const transcriptEmbed = new discord.EmbedBuilder() const transcriptEmbed = new discord.EmbedBuilder()
.setColor(config.main_color) .setColor(config.main_color)
.setTitle(l.messages.newTranscriptTitle) .setTitle(l.messages.newTranscriptTitle)
.setAuthor({name:interaction.user.username,iconURL:interaction.user.displayAvatarURL({format:"png"})}) .setAuthor({name:user.username,iconURL:user.displayAvatarURL({format:"png"})})
.setDescription(l.messages.newTranscriptDescription) .setDescription(l.messages.newTranscriptDescription)
.setFooter({text:"ticket: "+ticketuserarray}) .setFooter({text:"ticket: "+channelname})
interaction.guild.channels.cache.find(c => c.id == config.system.transcript_channel).send({ guild.channels.cache.find(c => c.id == config.system.transcript_channel).send({
embeds:[transcriptEmbed], embeds:[transcriptEmbed],
files:[fileattachment] files:[fileattachment]
}) })
@@ -239,9 +264,9 @@ exports.closeTicket = async (interaction,prefix,mode) => {
.setColor(config.main_color) .setColor(config.main_color)
.setTitle(l.messages.newTranscriptTitle) .setTitle(l.messages.newTranscriptTitle)
.setDescription(l.messages.newTranscriptDescription) .setDescription(l.messages.newTranscriptDescription)
.setFooter({text:"ticket: "+ticketuserarray}) .setFooter({text:"ticket: "+channelname})
if (!isDatabaseError) getusernameStep1.send({ if (!isDatabaseError) ticketOpener.send({
embeds:[transcriptEmbed], embeds:[transcriptEmbed],
files:[fileattachment] files:[fileattachment]
}) })
@@ -253,31 +278,6 @@ exports.closeTicket = async (interaction,prefix,mode) => {
setTimeout(() => {resolve(true)},7000) setTimeout(() => {resolve(true)},7000)
})} })}
await timer() await timer()
await interaction.channel.delete() await channel.delete()
} }
} }
exports.runThis = () => {
client.on("interactionCreate",async (interaction) => {
if (!interaction.isButton()) return
if (interaction.customId != "sendTranscript") return
interaction.deferUpdate()
const channelmessages = await interaction.channel.messages.fetch()
channelmessages.sweep((msgSweep) => {
return msgSweep.author.id == client.user.id
})
var fileattachment = await require("./transcript").createTranscript(channelmessages,interaction.channel)
if (fileattachment == false){
log("system","internal error: transcript is not created!")
interaction.channel.send({embeds:[bot.errorLog.serverError(l.errors.somethingWentWrongTranscript)]})
return
}
interaction.channel.send({content:"**"+l.messages.hereIsTheTranscript+"**",files:[fileattachment]})
})
}
+3
View File
@@ -117,6 +117,9 @@ client.on('ready',async () => {
process.exit(1) process.exit(1)
} }
} }
//load plugins
require("./core/api/pluginlauncher")()
}) })
if (!isDev){ if (!isDev){
+15
View File
@@ -0,0 +1,15 @@
const discord = require("discord.js")
const api = require("../core/api/api.js")
module.exports = () => {
const {client,config,events,utils} = api
//this code will run when the bot starts!
events.onTicketOpen((user,channel,guild,date,ticketdata) => {
console.log("hello, someone opened a ticket!")
})
}