v3.3 push 6 (added ticket claiming)
This commit is contained in:
@@ -15,6 +15,13 @@ const bs = discord.ButtonStyle
|
||||
|
||||
|
||||
exports.firstmsgRowNormal = new arb()
|
||||
.addComponents(
|
||||
new button()
|
||||
.setCustomId("OTclaimTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(bs.Success)
|
||||
.setLabel("Claim Ticket")
|
||||
)
|
||||
.addComponents(
|
||||
new button()
|
||||
.setCustomId("OTcloseTicket")
|
||||
@@ -33,6 +40,63 @@ exports.firstmsgRowNormal = new arb()
|
||||
)
|
||||
|
||||
exports.firstmsgRowDisabled = new arb()
|
||||
.addComponents(
|
||||
new button()
|
||||
.setCustomId("OTclaimTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(bs.Success)
|
||||
.setLabel("Claim Ticket")
|
||||
)
|
||||
.addComponents(
|
||||
new button()
|
||||
.setCustomId("OTcloseTicket")
|
||||
.setDisabled(true)
|
||||
.setStyle(bs.Secondary)
|
||||
.setLabel(l.buttons.close)
|
||||
.setEmoji("🔒")
|
||||
)
|
||||
.addComponents(
|
||||
new button()
|
||||
.setCustomId("OTdeleteTicket")
|
||||
.setDisabled(true)
|
||||
.setStyle(bs.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
|
||||
exports.firstmsgRowNormalNoClaim = new arb()
|
||||
.addComponents(
|
||||
new button()
|
||||
.setCustomId("OTclaimTicket")
|
||||
.setDisabled(true)
|
||||
.setStyle(bs.Secondary)
|
||||
.setLabel("Claim Ticket")
|
||||
)
|
||||
.addComponents(
|
||||
new button()
|
||||
.setCustomId("OTcloseTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(bs.Secondary)
|
||||
.setLabel(l.buttons.close)
|
||||
.setEmoji("🔒")
|
||||
)
|
||||
.addComponents(
|
||||
new button()
|
||||
.setCustomId("OTdeleteTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(bs.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
|
||||
exports.firstmsgRowDisabledNoClaim = new arb()
|
||||
.addComponents(
|
||||
new button()
|
||||
.setCustomId("OTclaimTicket")
|
||||
.setDisabled(true)
|
||||
.setStyle(bs.Secondary)
|
||||
.setLabel("Claim Ticket")
|
||||
)
|
||||
.addComponents(
|
||||
new button()
|
||||
.setCustomId("OTcloseTicket")
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
const discord = require('discord.js')
|
||||
const bot = require('../../../../index')
|
||||
const client = bot.client
|
||||
const config = bot.config
|
||||
const l = bot.language
|
||||
const log = bot.errorLog.log
|
||||
|
||||
const permissionChecker = require("../../../utils/permisssionChecker")
|
||||
const storage = bot.storage
|
||||
const hiddendata = bot.hiddenData
|
||||
const embed = discord.EmbedBuilder
|
||||
const mc = config.color
|
||||
|
||||
const button = discord.ButtonBuilder
|
||||
const arb = discord.ActionRowBuilder
|
||||
const bs = discord.ButtonStyle
|
||||
|
||||
module.exports = () => {
|
||||
//CLAIM
|
||||
client.on("interactionCreate",async interaction => {
|
||||
if (!interaction.isButton()) return
|
||||
if (interaction.customId != "OTclaimTicket") return
|
||||
|
||||
try {
|
||||
interaction.deferUpdate()
|
||||
}catch{}
|
||||
|
||||
interaction.channel.messages.fetchPinned().then(msglist => {
|
||||
/**@type {discord.Message} */
|
||||
var firstmsg = msglist.last()
|
||||
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
|
||||
const hdraw = bot.hiddenData.removeHiddenData(firstmsg.embeds[0].description)
|
||||
const hiddendata = hdraw.hiddenData
|
||||
const ticketId = hiddendata.data.find(d => d.key == "type").value
|
||||
|
||||
hiddendata.data.push({key:"claimedby",value:interaction.user.id})
|
||||
storage.set("claimData",interaction.channel.id,interaction.user.id)
|
||||
|
||||
const newEmbed = new embed(firstmsg.embeds[0].data)
|
||||
.setFooter({text:"claimed by: "+interaction.user.tag,iconURL:interaction.user.displayAvatarURL()})
|
||||
.setDescription(hdraw.description+bot.hiddenData.writeHiddenData(hiddendata.type,hiddendata.data))
|
||||
|
||||
if (!firstmsg.components[0].components[1].disabled){
|
||||
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowNormalNoClaim],embeds:[newEmbed]})
|
||||
|
||||
}else if (firstmsg.components[0].components[1].disabled){
|
||||
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -41,8 +41,18 @@ module.exports = () => {
|
||||
return
|
||||
}
|
||||
}
|
||||
if (interaction.message.pinned && interaction.message.author.id == client.user.id){
|
||||
const claimdata = storage.get("claimData",interaction.channel.id)
|
||||
console.log(claimdata)
|
||||
if (claimdata && claimdata != "false"){
|
||||
interaction.message.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim]})
|
||||
}else{
|
||||
interaction.message.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabled]})
|
||||
}
|
||||
}else{
|
||||
interaction.message.edit({components:[bot.buttons.close.openRowDisabled]})
|
||||
}
|
||||
|
||||
interaction.message.edit({components:[bot.buttons.close.openRowDisabled]})
|
||||
|
||||
/**
|
||||
* @type {String}
|
||||
|
||||
@@ -7,4 +7,5 @@ module.exports = () => {
|
||||
require("./accepted/reopening")()
|
||||
require("./accepted/deleting")()
|
||||
require("./accepted/closingReason")()
|
||||
require("./accepted/claiming")()
|
||||
}
|
||||
@@ -16,6 +16,7 @@ const showFlags = async (chalk) => {
|
||||
if (process.argv.some((v) => v == "--debug")) console.log(chalk.blue("[FLAGS] => enabled DEBUG mode")); isFlag = true
|
||||
if (process.argv.some((v) => v == "--noslash")) console.log(chalk.blue("[FLAGS] => slash commands disabled")); isFlag = true
|
||||
if (process.argv.some((v) => v == "--localstatus")) console.log(chalk.blue("[FLAGS] => using local livestatus.json")); isFlag = true
|
||||
if (process.argv.some((v) => v == "--noerrorupload")) console.log(chalk.blue("[FLAGS] => not uploading errors to liveStatus")); isFlag = true
|
||||
|
||||
if (!isFlag) console.log(chalk.blue("no flags!"))
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode,reason,nomessage) =>
|
||||
const ticketOpenerChannelName = channelname.split(prefix)[1]
|
||||
|
||||
//get user that opened the ticket
|
||||
var getuserID = storage.get("userTicketStorage",channel.id)
|
||||
var getuserID = storage.get("userFromChannel",channel.id)
|
||||
try {
|
||||
var ticketOpener = client.users.cache.find(u => u.id === getuserID)
|
||||
var isDatabaseError = false
|
||||
@@ -66,7 +66,9 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode,reason,nomessage) =>
|
||||
log("system","deleted a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}])
|
||||
pendingDelete.push(channel.id)
|
||||
|
||||
if (!isDatabaseError) storage.set("ticketStorage",getuserID,Number(storage.get("ticketStorage",getuserID)) - 1)
|
||||
if (!isDatabaseError) storage.set("amountOfUserTickets",getuserID,Number(storage.get("amountOfUserTickets",getuserID)) - 1)
|
||||
storage.delete("userFromChannel",channel.id)
|
||||
storage.delete("claimData",channel.id)
|
||||
|
||||
//getID & send DM & send api event
|
||||
await channel.messages.fetchPinned().then(async msglist => {
|
||||
@@ -191,30 +193,12 @@ exports.NEWcloseTicket = async (member,channel,prefix,mode,reason,nomessage) =>
|
||||
channel.permissionOverwrites.set(permissionArray)
|
||||
|
||||
if (!nomessage){
|
||||
//message
|
||||
var closeButtonRow = new discord.ActionRowBuilder()
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("OTdeleteTicket1")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Danger)
|
||||
.setLabel(l.buttons.delete)
|
||||
.setEmoji("✖️")
|
||||
)
|
||||
.addComponents(
|
||||
new discord.ButtonBuilder()
|
||||
.setCustomId("OTreopenTicket")
|
||||
.setDisabled(false)
|
||||
.setStyle(discord.ButtonStyle.Success)
|
||||
.setLabel(l.buttons.reopen)
|
||||
.setEmoji("✔")
|
||||
)
|
||||
|
||||
//message
|
||||
const embed = new discord.EmbedBuilder()
|
||||
.setColor(config.color)
|
||||
.setTitle(":lock: "+l.commands.closeTitle+" :lock:")
|
||||
.setDescription(l.messages.closedDescription)
|
||||
channel.send({embeds:[embed],components:[closeButtonRow]})
|
||||
channel.send({embeds:[embed],components:[bot.buttons.close.closeCommandRow]})
|
||||
}
|
||||
|
||||
log("system","closed a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}])
|
||||
|
||||
@@ -63,10 +63,10 @@ module.exports = () => {
|
||||
} catch{}
|
||||
}
|
||||
|
||||
if (storage.get("ticketStorage",interaction.member.id) == null || storage.get("ticketStorage",interaction.member.id) == "false"|| Number(storage.get("ticketStorage",interaction.member.id)) < config.system.maxAmountOfTickets){
|
||||
if (storage.get("amountOfUserTickets",interaction.member.id) == null || storage.get("amountOfUserTickets",interaction.member.id) == "false"|| Number(storage.get("amountOfUserTickets",interaction.member.id)) < config.system.maxAmountOfTickets){
|
||||
|
||||
//update storage
|
||||
storage.set("ticketStorage",interaction.member.id,Number(storage.get("ticketStorage",interaction.member.id))+1)
|
||||
storage.set("amountOfUserTickets",interaction.member.id,Number(storage.get("amountOfUserTickets",interaction.member.id))+1)
|
||||
var ticketNumber = interaction.member.user.username
|
||||
|
||||
//set ticketName
|
||||
@@ -162,7 +162,7 @@ module.exports = () => {
|
||||
permissionOverwrites:permissionsArray
|
||||
|
||||
}).then((ticketChannel) => {
|
||||
storage.set("userTicketStorage",ticketChannel.id,interaction.member.id)
|
||||
storage.set("userFromChannel",ticketChannel.id,interaction.member.id)
|
||||
|
||||
const hiddendata = bot.hiddenData.writeHiddenData("ticketdata",[{key:"type",value:currentTicketOptions.id},{key:"openerid",value:interaction.user.id},{key:"createdms",value:new Date().getTime()}])
|
||||
|
||||
@@ -198,7 +198,7 @@ module.exports = () => {
|
||||
.setStyle(discord.ButtonStyle.Link)
|
||||
.setDisabled(false)
|
||||
.setEmoji("🎫")
|
||||
.setLabel("go to ticket")
|
||||
.setLabel(l.commands.goToTicket)
|
||||
.setURL(ticketChannel.url)
|
||||
])
|
||||
|
||||
|
||||
+36
-33
@@ -139,6 +139,7 @@ exports.run = async (pluginData) => {
|
||||
/**@param {OTLiveStatusError} options @returns {Promise<Boolean>} */
|
||||
const uploadLiveStatus = (options) => {
|
||||
return new Promise((resolve,reject) => {
|
||||
if (process.argv.some((v) => v == "--noerrorupload")) return resolve(true)
|
||||
try {
|
||||
var data = encodeURIComponent(JSON.stringify(options))
|
||||
axios.get("https://livestatus.dj-dj.be/openticket?auth=openticketLIVESTATUS1234&data="+data).then((res) => {
|
||||
@@ -154,40 +155,42 @@ const uploadLiveStatus = (options) => {
|
||||
/**@param {String} err @returns {Promise<Boolean>}*/
|
||||
exports.liveStatusUploadManager = async (err) => {
|
||||
return new Promise(async (resolve) => {
|
||||
//use globalPluginData for (some) plugin details
|
||||
|
||||
if (process.argv.some((v) => v == "--noerrorupload")) return resolve(true)
|
||||
else{
|
||||
var tsenabled = (bot.tsconfig.sendTranscripts.enableChannel || bot.tsconfig.sendTranscripts.enableDM)
|
||||
var tsmode = bot.tsconfig.sendTranscripts.useHTMLtranscripts ? "html" : "text"
|
||||
const transcriptMode = tsenabled ? tsmode : false
|
||||
const slashMode = getSlashEnabled()
|
||||
|
||||
var tsenabled = (bot.tsconfig.sendTranscripts.enableChannel || bot.tsconfig.sendTranscripts.enableDM)
|
||||
var tsmode = bot.tsconfig.sendTranscripts.useHTMLtranscripts ? "html" : "text"
|
||||
const transcriptMode = tsenabled ? tsmode : false
|
||||
const slashMode = getSlashEnabled()
|
||||
|
||||
try {
|
||||
resolve(await uploadLiveStatus({
|
||||
bot:{
|
||||
id:client.user.id,
|
||||
name:client.user.tag,
|
||||
pfp:client.user.displayAvatarURL()
|
||||
},
|
||||
error:err,
|
||||
openticket:{
|
||||
config:{
|
||||
messages:config.messages,
|
||||
options:config.options,
|
||||
transcripts:bot.tsconfig,
|
||||
system:config.system
|
||||
try {
|
||||
resolve(await uploadLiveStatus({
|
||||
bot:{
|
||||
id:client.user.id,
|
||||
name:client.user.tag,
|
||||
pfp:client.user.displayAvatarURL()
|
||||
},
|
||||
language:config.languageFile,
|
||||
version:require("../../package.json").version,
|
||||
slashcmds:slashMode,
|
||||
transcripts:transcriptMode,
|
||||
plugins:fs.readdirSync("./plugins"),
|
||||
pluginload:globalPluginData
|
||||
},
|
||||
details:{
|
||||
errortime:new Date().getTime(),
|
||||
actions:this.actionRecorder
|
||||
}
|
||||
}))
|
||||
}catch{resolve(false)}
|
||||
error:err,
|
||||
openticket:{
|
||||
config:{
|
||||
messages:config.messages,
|
||||
options:config.options,
|
||||
transcripts:bot.tsconfig,
|
||||
system:config.system
|
||||
},
|
||||
language:config.languageFile,
|
||||
version:require("../../package.json").version,
|
||||
slashcmds:slashMode,
|
||||
transcripts:transcriptMode,
|
||||
plugins:fs.readdirSync("./plugins"),
|
||||
pluginload:globalPluginData
|
||||
},
|
||||
details:{
|
||||
errortime:new Date().getTime(),
|
||||
actions:this.actionRecorder
|
||||
}
|
||||
}))
|
||||
}catch{resolve(false)}
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user