Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
213f532a3c | ||
|
|
45bd88e4d2 | ||
|
|
4eb8658459 | ||
|
|
b37118fee2 | ||
|
|
026caba68a | ||
|
|
2003f8801a | ||
|
|
473bacf13a | ||
|
|
8b3f2bc61a | ||
|
|
3aa373c33c | ||
|
|
9b6263e583 | ||
|
|
3e066d08ce | ||
|
|
aa48e28162 | ||
|
|
dc660ed94a | ||
|
|
e02ecf9553 | ||
|
|
23acc0926f | ||
|
|
3fc1cd18d5 | ||
|
|
ebe29b403e | ||
|
|
dcba3312dd | ||
|
|
7fddeeec37 | ||
|
|
b5341b023f | ||
|
|
bbb7443ef2 | ||
|
|
22df347bb9 | ||
|
|
9aed6b8f35 | ||
|
|
9e7ec9f1bd | ||
|
|
373f43eac5 | ||
|
|
6c91b2791a | ||
|
|
bde62a431f | ||
|
|
615a074540 | ||
|
|
09b335ac46 | ||
|
|
2701880c77 | ||
|
|
24c8f2fb38 | ||
|
|
c3ec158ac3 | ||
|
|
b3690222d0 | ||
|
|
4d7583785b |
No files matched your search
@@ -1,4 +1,4 @@
|
|||||||
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
|
# This workflow will do a clean installation of node dependencies, build the source code and run tests across different versions of node
|
||||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
|
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
|
||||||
|
|
||||||
name: Node.js CI
|
name: Node.js CI
|
||||||
|
|||||||
+5
-5
@@ -26,7 +26,7 @@ module.exports = new Command({
|
|||||||
permissions: ["SEND_MESSAGES"],
|
permissions: ["SEND_MESSAGES"],
|
||||||
|
|
||||||
async run(interaction) {
|
async run(interaction) {
|
||||||
const { getRole, getChannel, getCategory } = interaction.client;
|
const { getRole } = interaction.client;
|
||||||
let SupportStaff = await getRole(supportbot.Staff, interaction.guild);
|
let SupportStaff = await getRole(supportbot.Staff, interaction.guild);
|
||||||
let Admin = await getRole(supportbot.Admin, interaction.guild);
|
let Admin = await getRole(supportbot.Admin, interaction.guild);
|
||||||
if (!SupportStaff || !Admin)
|
if (!SupportStaff || !Admin)
|
||||||
@@ -51,12 +51,12 @@ module.exports = new Command({
|
|||||||
fs.readFileSync("./Data/TicketData.json", "utf8")
|
fs.readFileSync("./Data/TicketData.json", "utf8")
|
||||||
);
|
);
|
||||||
let ticket = await TicketData.tickets.findIndex(
|
let ticket = await TicketData.tickets.findIndex(
|
||||||
(t) => t.id == interaction.channel.id
|
(t) => t.id === interaction.channel.id
|
||||||
);
|
);
|
||||||
if (ticket == -1) {
|
if (ticket === -1) {
|
||||||
const Exists = new Discord.MessageEmbed()
|
const Exists = new Discord.MessageEmbed()
|
||||||
.setTitle("No Ticket Found!")
|
.setTitle("No Ticket Found!")
|
||||||
.setDescription(`${supportbot.NoValidTicket}`)
|
.setDescription(supportbot.NoValidTicket)
|
||||||
.setColor(supportbot.WarningColour);
|
.setColor(supportbot.WarningColour);
|
||||||
return interaction.reply({ embeds: [Exists] });
|
return interaction.reply({ embeds: [Exists] });
|
||||||
}
|
}
|
||||||
@@ -71,7 +71,7 @@ module.exports = new Command({
|
|||||||
|
|
||||||
if (!uMember) return interaction.reply({ embeds: [UserNotExist] });
|
if (!uMember) return interaction.reply({ embeds: [UserNotExist] });
|
||||||
|
|
||||||
interaction.channel.permissionOverwrites.edit(uMember.id, {
|
await interaction.channel.permissionOverwrites.edit(uMember.id, {
|
||||||
VIEW_CHANNEL: true,
|
VIEW_CHANNEL: true,
|
||||||
});
|
});
|
||||||
const Complete = new Discord.MessageEmbed()
|
const Complete = new Discord.MessageEmbed()
|
||||||
|
|||||||
+37
-20
@@ -25,7 +25,7 @@ module.exports = new Command({
|
|||||||
permissions: ["SEND_MESSAGES"],
|
permissions: ["SEND_MESSAGES"],
|
||||||
|
|
||||||
async run(interaction) {
|
async run(interaction) {
|
||||||
const { getRole, getChannel, getCategory } = interaction.client;
|
const { getRole, getChannel } = interaction.client;
|
||||||
if (supportbot.StaffOnly) {
|
if (supportbot.StaffOnly) {
|
||||||
let SupportStaff = await getRole(supportbot.Staff, interaction.guild);
|
let SupportStaff = await getRole(supportbot.Staff, interaction.guild);
|
||||||
let Admin = await getRole(supportbot.Admin, interaction.guild);
|
let Admin = await getRole(supportbot.Admin, interaction.guild);
|
||||||
@@ -49,18 +49,19 @@ module.exports = new Command({
|
|||||||
await interaction.deferReply();
|
await interaction.deferReply();
|
||||||
let tickets = await JSON.parse(
|
let tickets = await JSON.parse(
|
||||||
fs.readFileSync("./Data/TicketData.json", "utf8")
|
fs.readFileSync("./Data/TicketData.json", "utf8")
|
||||||
).tickets.find((t) => t.id === interaction.channel.id);
|
|
||||||
let TicketData = await tickets.tickets.findIndex(
|
|
||||||
(t) => t.id == ticketChannel.id
|
|
||||||
);
|
);
|
||||||
if (!TicketData) {
|
let TicketData = await tickets.tickets.findIndex(
|
||||||
|
(t) => t.id === interaction.channel.id
|
||||||
|
);
|
||||||
|
let ticket = tickets.tickets[TicketData];
|
||||||
|
if (TicketData === -1) {
|
||||||
const Exists = new Discord.MessageEmbed()
|
const Exists = new Discord.MessageEmbed()
|
||||||
.setTitle("No Ticket Found!")
|
.setTitle("No Ticket Found!")
|
||||||
.setDescription(`${supportbot.NoValidTicket}`)
|
.setDescription(supportbot.NoValidTicket)
|
||||||
.setColor(supportbot.WarningColour);
|
.setColor(supportbot.WarningColour);
|
||||||
return interaction.followUp({ embeds: [Exists] });
|
return interaction.followUp({ embeds: [Exists] });
|
||||||
}
|
}
|
||||||
let tUser = interaction.client.users.cache.get(TicketData.user);
|
let tUser = interaction.client.users.cache.get(ticket.user);
|
||||||
let transcriptChannel = await getChannel(
|
let transcriptChannel = await getChannel(
|
||||||
supportbot.TranscriptLog,
|
supportbot.TranscriptLog,
|
||||||
interaction.guild
|
interaction.guild
|
||||||
@@ -80,8 +81,8 @@ module.exports = new Command({
|
|||||||
.setColor(supportbot.EmbedColour);
|
.setColor(supportbot.EmbedColour);
|
||||||
await interaction.followUp({ embeds: [CloseTicketRequest] });
|
await interaction.followUp({ embeds: [CloseTicketRequest] });
|
||||||
let filter = (m) =>
|
let filter = (m) =>
|
||||||
m.content.toLowerCase() == supportbot.ClosingConfirmation_Word &&
|
m.content.toLowerCase() === supportbot.ClosingConfirmation_Word &&
|
||||||
m.author.id == interaction.user.id;
|
m.author.id === interaction.user.id;
|
||||||
await interaction.channel.awaitMessages({
|
await interaction.channel.awaitMessages({
|
||||||
filter,
|
filter,
|
||||||
max: 1,
|
max: 1,
|
||||||
@@ -102,32 +103,42 @@ module.exports = new Command({
|
|||||||
const transcriptEmbed = new Discord.MessageEmbed()
|
const transcriptEmbed = new Discord.MessageEmbed()
|
||||||
.setTitle(supportbot.TranscriptTitle)
|
.setTitle(supportbot.TranscriptTitle)
|
||||||
.setColor(supportbot.EmbedColour)
|
.setColor(supportbot.EmbedColour)
|
||||||
.setFooter(supportbot.EmbedFooter)
|
.setFooter({
|
||||||
|
text: supportbot.EmbedFooter,
|
||||||
|
iconURL: interaction.user.displayAvatarURL(),
|
||||||
|
})
|
||||||
.addField(
|
.addField(
|
||||||
"Ticket",
|
"Ticket",
|
||||||
`${interaction.channel.name} (${interaction.channel.id})`
|
`${interaction.channel.name} (${interaction.channel.id})`
|
||||||
)
|
)
|
||||||
.addField(
|
.addField(
|
||||||
"User",
|
"User",
|
||||||
`${tUser.username}#${tUser.discriminator} (${tUser.id})`
|
`${tUser?.username || "N/A"}#${tUser?.discriminator || "N/A"} (${
|
||||||
|
tUser?.id || ticket.user
|
||||||
|
})`
|
||||||
)
|
)
|
||||||
.addField("Closed By", interaction.user.tag)
|
.addField("Closed By", interaction.user.tag)
|
||||||
.addField("Reason", reason);
|
.addField("Reason", reason);
|
||||||
const logEmbed = new Discord.MessageEmbed()
|
const logEmbed = new Discord.MessageEmbed()
|
||||||
.setTitle(supportbot.TicketLog_Title)
|
.setTitle(supportbot.TicketLog_Title)
|
||||||
.setColor(supportbot.EmbedColour)
|
.setColor(supportbot.EmbedColour)
|
||||||
.setFooter(supportbot.EmbedFooter)
|
.setFooter({
|
||||||
|
text: supportbot.EmbedFooter,
|
||||||
|
iconURL: interaction.user.displayAvatarURL(),
|
||||||
|
})
|
||||||
.addField(
|
.addField(
|
||||||
"Ticket",
|
"Ticket",
|
||||||
`${interaction.channel.name} (${interaction.channel.id})`
|
`${interaction.channel.name} (${interaction.channel.id})`
|
||||||
)
|
)
|
||||||
.addField(
|
.addField(
|
||||||
"User",
|
"User",
|
||||||
`${tUser.username}#${tUser.discriminator} (${tUser.id})`
|
`${tUser?.username || "N/A"}#${tUser?.discriminator || "N/A"} (${
|
||||||
|
tUser?.id || ticket.user
|
||||||
|
})`
|
||||||
)
|
)
|
||||||
.addField("Closed By", interaction.user.tag)
|
.addField("Closed By", interaction.user.tag)
|
||||||
.addField("Reason", reason);
|
.addField("Reason", reason);
|
||||||
let msgs = await interaction.channel.messages.fetch();
|
let msgs = await interaction.channel.messages.fetch({ limit: 100 });
|
||||||
let html = "";
|
let html = "";
|
||||||
|
|
||||||
msgs = msgs.sort((a, b) => a.createdTimestamp - b.createdTimestamp);
|
msgs = msgs.sort((a, b) => a.createdTimestamp - b.createdTimestamp);
|
||||||
@@ -157,18 +168,24 @@ module.exports = new Command({
|
|||||||
.catch(async (err) => {
|
.catch(async (err) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
});
|
});
|
||||||
await tUser
|
|
||||||
.send({ embeds: [transcriptEmbed], files: [file] })
|
if (supportbot.DMTranscripts) {
|
||||||
|
|
||||||
|
await tUser
|
||||||
|
?.send({ embeds: [transcriptEmbed], files: [file] })
|
||||||
.catch(async (err) => {
|
.catch(async (err) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
});
|
});
|
||||||
if (TicketData.subUsers) {
|
if (ticket.subUsers) {
|
||||||
TicketData.subUsers.forEach(async (subUser) => {
|
ticket.subUsers.forEach(async (subUser) => {
|
||||||
interaction.client.users.cache
|
await interaction.client.users.cache
|
||||||
.get(subUser)
|
.get(subUser)
|
||||||
.send({ embeds: [transcriptEmbed], files: [file] });
|
?.send({ embeds: [transcriptEmbed], files: [file] });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
await interaction.channel.delete().catch(async (error) => {
|
await interaction.channel.delete().catch(async (error) => {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
if (error.code !== Discord.Constants.APIErrors.UNKNOWN_CHANNEL) {
|
if (error.code !== Discord.Constants.APIErrors.UNKNOWN_CHANNEL) {
|
||||||
|
|||||||
+48
-2
@@ -20,18 +20,55 @@ module.exports = new Command({
|
|||||||
name: "title",
|
name: "title",
|
||||||
description: "Embed Title",
|
description: "Embed Title",
|
||||||
type: "STRING",
|
type: "STRING",
|
||||||
|
required: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
name: "message",
|
name: "message",
|
||||||
description: "Embed Message",
|
description: "Embed Message",
|
||||||
type: "STRING",
|
type: "STRING",
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "color",
|
||||||
|
description: "Embed HEX Color",
|
||||||
|
type: "STRING",
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "fieldtitle",
|
||||||
|
description: "Add an additional Embed Field",
|
||||||
|
type: "STRING",
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "fieldcontent",
|
||||||
|
description: "Add an additional Embed Field",
|
||||||
|
type: "STRING",
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "thumbnail",
|
||||||
|
description: "Embed Thumbnail URL",
|
||||||
|
type: "STRING",
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "image",
|
||||||
|
description: "Embed Image URL",
|
||||||
|
type: "STRING",
|
||||||
|
required: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
permissions: ["SEND_MESSAGES"],
|
permissions: ["SEND_MESSAGES"],
|
||||||
|
|
||||||
async run(interaction) {
|
async run(interaction) {
|
||||||
const { getRole, getChannel, getCategory } = interaction.client;
|
const { getRole } = interaction.client;
|
||||||
let SupportStaff = await getRole(supportbot.Staff, interaction.guild);
|
let SupportStaff = await getRole(supportbot.Staff, interaction.guild);
|
||||||
let Admin = await getRole(supportbot.Admin, interaction.guild);
|
let Admin = await getRole(supportbot.Admin, interaction.guild);
|
||||||
|
|
||||||
@@ -52,10 +89,19 @@ module.exports = new Command({
|
|||||||
) {
|
) {
|
||||||
const EmbedTitle = interaction.options.getString("title");
|
const EmbedTitle = interaction.options.getString("title");
|
||||||
const EmbedSubject = interaction.options.getString("message");
|
const EmbedSubject = interaction.options.getString("message");
|
||||||
|
const EmbedColour = interaction.options.getString("color");
|
||||||
|
const EmbedThumbnail = interaction.options.getString("thumbnail");
|
||||||
|
const EmbedImage = interaction.options.getString("image");
|
||||||
|
const EmbedFieldContent = interaction.options.getString("fieldcontent");
|
||||||
|
const EmbedFieldTitle = interaction.options.getString("fieldtitle");
|
||||||
|
|
||||||
const EmbedMsg = new Discord.MessageEmbed()
|
const EmbedMsg = new Discord.MessageEmbed()
|
||||||
.setTitle(EmbedTitle)
|
.setTitle(EmbedTitle)
|
||||||
.setDescription(EmbedSubject);
|
.setDescription(EmbedSubject)
|
||||||
|
.addField(EmbedFieldTitle, EmbedFieldContent)
|
||||||
|
.setColor(EmbedColour)
|
||||||
|
.setThumbnail(EmbedThumbnail)
|
||||||
|
.setImage(EmbedImage);
|
||||||
|
|
||||||
interaction.reply({
|
interaction.reply({
|
||||||
embeds: [EmbedMsg],
|
embeds: [EmbedMsg],
|
||||||
|
|||||||
+6
-9
@@ -12,12 +12,6 @@ const cmdconfig = yaml.load(fs.readFileSync("./Configs/commands.yml", "utf8"));
|
|||||||
|
|
||||||
const Command = require("../Structures/Command.js");
|
const Command = require("../Structures/Command.js");
|
||||||
|
|
||||||
async function asyncForEach(array, callback) {
|
|
||||||
for (let index = 0; index < array.length; index++) {
|
|
||||||
await callback(array[index], index, array);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = new Command({
|
module.exports = new Command({
|
||||||
name: cmdconfig.HelpCommand,
|
name: cmdconfig.HelpCommand,
|
||||||
description: cmdconfig.HelpCommandDesc,
|
description: cmdconfig.HelpCommandDesc,
|
||||||
@@ -25,7 +19,7 @@ module.exports = new Command({
|
|||||||
permissions: ["SEND_MESSAGES"],
|
permissions: ["SEND_MESSAGES"],
|
||||||
|
|
||||||
async run(interaction) {
|
async run(interaction) {
|
||||||
const { getRole, getChannel, getCategory } = interaction.client;
|
const { getRole } = interaction.client;
|
||||||
let SupportStaff = await getRole(supportbot.Staff, interaction.guild);
|
let SupportStaff = await getRole(supportbot.Staff, interaction.guild);
|
||||||
let Admin = await getRole(supportbot.Admin, interaction.guild);
|
let Admin = await getRole(supportbot.Admin, interaction.guild);
|
||||||
if (!SupportStaff || !Admin)
|
if (!SupportStaff || !Admin)
|
||||||
@@ -64,7 +58,10 @@ module.exports = new Command({
|
|||||||
)
|
)
|
||||||
|
|
||||||
.setColor(supportbot.EmbedColour)
|
.setColor(supportbot.EmbedColour)
|
||||||
.setFooter(supportbot.EmbedFooter, interaction.user.displayAvatarURL());
|
.setFooter({
|
||||||
|
text: supportbot.EmbedFooter,
|
||||||
|
iconURL: interaction.user.displayAvatarURL(),
|
||||||
|
});
|
||||||
|
|
||||||
if (
|
if (
|
||||||
interaction.member.roles.cache.has(SupportStaff.id) ||
|
interaction.member.roles.cache.has(SupportStaff.id) ||
|
||||||
@@ -78,7 +75,7 @@ module.exports = new Command({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (supportbot.SendHelpPage === "dm") {
|
if (supportbot.SendHelpPage === "dm") {
|
||||||
interaction.user.reply({
|
interaction.user.send({
|
||||||
embeds: [HelpEmbed1],
|
embeds: [HelpEmbed1],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-12
@@ -12,12 +12,6 @@ const cmdconfig = yaml.load(fs.readFileSync("./Configs/commands.yml", "utf8"));
|
|||||||
|
|
||||||
const Command = require("../Structures/Command.js");
|
const Command = require("../Structures/Command.js");
|
||||||
|
|
||||||
async function asyncForEach(array, callback) {
|
|
||||||
for (let index = 0; index < array.length; index++) {
|
|
||||||
await callback(array[index], index, array);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = new Command({
|
module.exports = new Command({
|
||||||
name: cmdconfig.TicketRemove,
|
name: cmdconfig.TicketRemove,
|
||||||
description: cmdconfig.TicketRemoveDesc,
|
description: cmdconfig.TicketRemoveDesc,
|
||||||
@@ -32,7 +26,7 @@ module.exports = new Command({
|
|||||||
permissions: ["SEND_MESSAGES"],
|
permissions: ["SEND_MESSAGES"],
|
||||||
|
|
||||||
async run(interaction) {
|
async run(interaction) {
|
||||||
const { getRole, getChannel, getCategory } = interaction.client;
|
const { getRole } = interaction.client;
|
||||||
let Staff = await getRole(supportbot.Staff, interaction.guild);
|
let Staff = await getRole(supportbot.Staff, interaction.guild);
|
||||||
let Admin = await getRole(supportbot.Admin, interaction.guild);
|
let Admin = await getRole(supportbot.Admin, interaction.guild);
|
||||||
if (!Staff || !Admin)
|
if (!Staff || !Admin)
|
||||||
@@ -56,12 +50,12 @@ module.exports = new Command({
|
|||||||
fs.readFileSync("./Data/TicketData.json", "utf8")
|
fs.readFileSync("./Data/TicketData.json", "utf8")
|
||||||
);
|
);
|
||||||
let ticket = await TicketData.tickets.findIndex(
|
let ticket = await TicketData.tickets.findIndex(
|
||||||
(t) => t.id == interaction.channel.id
|
(t) => t.id === interaction.channel.id
|
||||||
);
|
);
|
||||||
if (ticket == -1) {
|
if (ticket === -1) {
|
||||||
const Exists = new Discord.MessageEmbed()
|
const Exists = new Discord.MessageEmbed()
|
||||||
.setTitle("No Ticket Found!")
|
.setTitle("No Ticket Found!")
|
||||||
.setDescription(`${supportbot.NoValidTicket}`)
|
.setDescription(supportbot.NoValidTicket)
|
||||||
.setColor(supportbot.WarningColour);
|
.setColor(supportbot.WarningColour);
|
||||||
return interaction.reply({ embeds: [Exists] });
|
return interaction.reply({ embeds: [Exists] });
|
||||||
}
|
}
|
||||||
@@ -76,7 +70,7 @@ module.exports = new Command({
|
|||||||
|
|
||||||
if (!uMember) return interaction.reply({ embeds: [UserNotExist] });
|
if (!uMember) return interaction.reply({ embeds: [UserNotExist] });
|
||||||
|
|
||||||
interaction.channel.permissionOverwrites.edit(uMember.id, {
|
await interaction.channel.permissionOverwrites.edit(uMember.id, {
|
||||||
VIEW_CHANNEL: false,
|
VIEW_CHANNEL: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -88,7 +82,7 @@ module.exports = new Command({
|
|||||||
interaction.reply({ embeds: [Complete] });
|
interaction.reply({ embeds: [Complete] });
|
||||||
TicketData.tickets[ticket].subUsers = TicketData.tickets[
|
TicketData.tickets[ticket].subUsers = TicketData.tickets[
|
||||||
ticket
|
ticket
|
||||||
].subUsers.filter((u) => u != uMember.id);
|
].subUsers.filter((u) => u !== uMember.id);
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
"./Data/TicketData.json",
|
"./Data/TicketData.json",
|
||||||
JSON.stringify(TicketData, null, 4),
|
JSON.stringify(TicketData, null, 4),
|
||||||
|
|||||||
+9
-5
@@ -20,12 +20,13 @@ module.exports = new Command({
|
|||||||
name: "suggestion",
|
name: "suggestion",
|
||||||
description: "Create a Suggestion",
|
description: "Create a Suggestion",
|
||||||
type: "STRING",
|
type: "STRING",
|
||||||
|
required: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
permissions: ["SEND_MESSAGES"],
|
permissions: ["SEND_MESSAGES"],
|
||||||
|
|
||||||
async run(interaction) {
|
async run(interaction) {
|
||||||
const { getRole, getChannel, getCategory } = interaction.client;
|
const { getChannel } = interaction.client;
|
||||||
const suggestChannel = await getChannel(
|
const suggestChannel = await getChannel(
|
||||||
supportbot.SuggestionChannel,
|
supportbot.SuggestionChannel,
|
||||||
interaction.guild
|
interaction.guild
|
||||||
@@ -33,7 +34,7 @@ module.exports = new Command({
|
|||||||
|
|
||||||
const NoChannel = new Discord.MessageEmbed()
|
const NoChannel = new Discord.MessageEmbed()
|
||||||
.setTitle("Missing Channel!")
|
.setTitle("Missing Channel!")
|
||||||
.setDescription(`${supportbot.InvalidChannel}`)
|
.setDescription(supportbot.InvalidChannel)
|
||||||
.setColor(supportbot.ErrorColour);
|
.setColor(supportbot.ErrorColour);
|
||||||
|
|
||||||
if (!suggestChannel) return interaction.reply({ embeds: [NoChannel] });
|
if (!suggestChannel) return interaction.reply({ embeds: [NoChannel] });
|
||||||
@@ -44,13 +45,16 @@ module.exports = new Command({
|
|||||||
.addField("Suggestion", suggestion, true)
|
.addField("Suggestion", suggestion, true)
|
||||||
.addField("From", `<@${interaction.user.id}>`)
|
.addField("From", `<@${interaction.user.id}>`)
|
||||||
.setThumbnail(interaction.user.displayAvatarURL())
|
.setThumbnail(interaction.user.displayAvatarURL())
|
||||||
.setFooter(supportbot.EmbedFooter, interaction.user.displayAvatarURL())
|
.setFooter({
|
||||||
|
text: supportbot.EmbedFooter,
|
||||||
|
iconURL: interaction.user.displayAvatarURL(),
|
||||||
|
})
|
||||||
.setColor(supportbot.EmbedColour);
|
.setColor(supportbot.EmbedColour);
|
||||||
|
|
||||||
const suggestionMsg = await suggestChannel.send({ embeds: [SuggestEmbed] });
|
const suggestionMsg = await suggestChannel.send({ embeds: [SuggestEmbed] });
|
||||||
if (supportbot.SuggestionUpvote && supportbot.SuggestionDownvote) {
|
if (supportbot.SuggestionUpvote && supportbot.SuggestionDownvote) {
|
||||||
suggestionMsg.react(supportbot.SuggestionUpvote);
|
await suggestionMsg.react(supportbot.SuggestionUpvote);
|
||||||
suggestionMsg.react(supportbot.SuggestionDownvote);
|
await suggestionMsg.react(supportbot.SuggestionDownvote);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Submitted = new Discord.MessageEmbed()
|
const Submitted = new Discord.MessageEmbed()
|
||||||
|
|||||||
+85
-78
@@ -31,15 +31,22 @@ module.exports = new Command({
|
|||||||
permissions: ["SEND_MESSAGES"],
|
permissions: ["SEND_MESSAGES"],
|
||||||
|
|
||||||
async run(interaction) {
|
async run(interaction) {
|
||||||
|
let disableCommand = true;
|
||||||
|
if (interaction.isCommand() && disableCommand)
|
||||||
|
return interaction.reply({
|
||||||
|
content: "This command is disabled",
|
||||||
|
ephemeral: true,
|
||||||
|
});
|
||||||
|
let department = interaction.customId?.split("-")[1] || null;
|
||||||
let TicketData = await JSON.parse(
|
let TicketData = await JSON.parse(
|
||||||
fs.readFileSync("./Data/TicketData.json", "utf8")
|
fs.readFileSync("./Data/TicketData.json", "utf8")
|
||||||
);
|
);
|
||||||
const { getRole, getChannel, getCategory } = interaction.client;
|
const { getRole, getCategory } = interaction.client;
|
||||||
let User = interaction.guild.members.cache.get(interaction.user.id);
|
let User = interaction.guild.members.cache.get(interaction.user.id);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
supportbot.MaxAllowedTickets &&
|
supportbot.MaxAllowedTickets &&
|
||||||
TicketData.tickets.filter((t) => t.user == interaction.user.id && t.open)
|
TicketData.tickets.filter((t) => t.user === interaction.user.id && t.open)
|
||||||
.length >= supportbot.MaxAllowedTickets
|
.length >= supportbot.MaxAllowedTickets
|
||||||
) {
|
) {
|
||||||
return interaction.reply({
|
return interaction.reply({
|
||||||
@@ -73,39 +80,29 @@ module.exports = new Command({
|
|||||||
|
|
||||||
const TicketExists = new MessageEmbed()
|
const TicketExists = new MessageEmbed()
|
||||||
.setTitle("Ticket Exists!")
|
.setTitle("Ticket Exists!")
|
||||||
.setDescription(`${supportbot.TicketExists}`)
|
.setDescription(supportbot.TicketExists);
|
||||||
.setColor(supportbot.WarningColour);
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
await interaction.guild.channels.cache.find((ticketChannel) => {
|
await interaction.guild.channels.cache.find(
|
||||||
ticketChannel.name === `${supportbot.TicketPrefix}${ticketNumberID}`;
|
(ticketChannel) =>
|
||||||
})
|
ticketChannel.name === `${supportbot.TicketPrefix}${ticketNumberID}`
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
return await interaction.reply({ embeds: [TicketExists] });
|
return await interaction.reply({
|
||||||
|
embeds: [TicketExists],
|
||||||
|
ephemeral: true,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
const Staff = await getRole(supportbot.Staff, interaction.guild);
|
const Staff = await getRole(supportbot.Staff, interaction.guild);
|
||||||
const Admin = await getRole(supportbot.Admin, interaction.guild);
|
const Admin = await getRole(supportbot.Admin, interaction.guild);
|
||||||
const DeptRole1 = await getRole(
|
if (!Staff || !Admin)
|
||||||
supportbot.DepartmentRole_1,
|
|
||||||
interaction.guild
|
|
||||||
);
|
|
||||||
const DeptRole2 = await getRole(
|
|
||||||
supportbot.DepartmentRole_2,
|
|
||||||
interaction.guild
|
|
||||||
);
|
|
||||||
const DeptRole3 = await getRole(
|
|
||||||
supportbot.DepartmentRole_3,
|
|
||||||
interaction.guild
|
|
||||||
);
|
|
||||||
if (!Staff || !Admin || !DeptRole1 || !DeptRole2 || !DeptRole3)
|
|
||||||
return interaction.reply({
|
return interaction.reply({
|
||||||
content:
|
content:
|
||||||
"Some roles seem to be missing!\nPlease check for errors when starting the bot.",
|
"Some roles seem to be missing!\nPlease check for errors when starting the bot.",
|
||||||
ephemeral: true,
|
ephemeral: true,
|
||||||
});
|
});
|
||||||
const Author = interaction.user;
|
|
||||||
let TicketCategory = await getCategory(
|
let TicketCategory = await getCategory(
|
||||||
supportbot.TicketCategory,
|
supportbot.Departments[department].category || supportbot.TicketCategory,
|
||||||
interaction.guild
|
interaction.guild
|
||||||
);
|
);
|
||||||
const ticketChannel = await interaction.guild.channels.create(
|
const ticketChannel = await interaction.guild.channels.create(
|
||||||
@@ -119,9 +116,8 @@ module.exports = new Command({
|
|||||||
allow: [Permissions.FLAGS.VIEW_CHANNEL],
|
allow: [Permissions.FLAGS.VIEW_CHANNEL],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: Author.id,
|
id: interaction.user.id,
|
||||||
allow: [Permissions.FLAGS.VIEW_CHANNEL],
|
allow: [Permissions.FLAGS.VIEW_CHANNEL],
|
||||||
deny: [Permissions.FLAGS.SEND_MESSAGES],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: interaction.guild.id,
|
id: interaction.guild.id,
|
||||||
@@ -130,15 +126,20 @@ module.exports = new Command({
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
if (supportbot.AllowStaff) {
|
if (supportbot.AllowAllStaff) {
|
||||||
ticketChannel.permissionOverwrites.edit(Staff.id, {
|
await ticketChannel.permissionOverwrites.edit(Staff.id, {
|
||||||
VIEW_CHANNEL: true,
|
VIEW_CHANNEL: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if (supportbot.TicketDepartments && !department) {
|
||||||
|
await ticketChannel.permissionOverwrites.edit(interaction.user.id, {
|
||||||
|
SEND_MESSAGES: false,
|
||||||
|
});
|
||||||
|
}
|
||||||
await TicketData.tickets.push({
|
await TicketData.tickets.push({
|
||||||
id: ticketChannel.id,
|
id: ticketChannel.id,
|
||||||
name: ticketChannel.name,
|
name: ticketChannel.name,
|
||||||
user: Author.id,
|
user: interaction.user.id,
|
||||||
number: ticketNumberID,
|
number: ticketNumberID,
|
||||||
reason: TicketSubject,
|
reason: TicketSubject,
|
||||||
open: true,
|
open: true,
|
||||||
@@ -182,23 +183,23 @@ module.exports = new Command({
|
|||||||
.setColor(supportbot.EmbedColour);
|
.setColor(supportbot.EmbedColour);
|
||||||
|
|
||||||
if (supportbot.TicketSubject === "embed") {
|
if (supportbot.TicketSubject === "embed") {
|
||||||
if (TicketSubject != "No Reason Provided.") {
|
if (TicketSubject !== "No Reason Provided.") {
|
||||||
TicketMessage.addFields({ name: "Reason", value: TicketSubject });
|
TicketMessage.addFields({ name: "Reason", value: TicketSubject });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (supportbot.TicketSubject === "description") {
|
if (supportbot.TicketSubject === "description") {
|
||||||
if (TicketSubject != "No Reason Provided.") {
|
if (TicketSubject !== "No Reason Provided.") {
|
||||||
await ticketChannel.setTopic(
|
await ticketChannel.setTopic(
|
||||||
`Reason: ${TicketSubject} - User ID: ${interaction.user.id} - Ticket: ${ticketChannel.name}`
|
`Reason: ${TicketSubject} - User ID: ${interaction.user.id} - Ticket: ${ticketChannel.name}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (supportbot.TicketDepartments) {
|
if (supportbot.TicketDepartments && !department) {
|
||||||
TicketMessage.addFields({
|
TicketMessage.addFields({
|
||||||
name: "Departments",
|
name: "Departments",
|
||||||
value: ` **${supportbot.DepartmentTitle_1}**\n **${supportbot.DepartmentTitle_2}**\n **${supportbot.DepartmentTitle_3}**`,
|
value: ` **${supportbot.Departments.map((X) => X.title).join("\n")}**`,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
const CloseButton = new MessageButton()
|
const CloseButton = new MessageButton()
|
||||||
@@ -214,41 +215,24 @@ module.exports = new Command({
|
|||||||
.setEmoji(supportbot.TicketLockEmoji);
|
.setEmoji(supportbot.TicketLockEmoji);
|
||||||
|
|
||||||
const row2 = new MessageActionRow().addComponents(CloseButton, LockButton);
|
const row2 = new MessageActionRow().addComponents(CloseButton, LockButton);
|
||||||
|
if (supportbot.TicketDepartments && !department) {
|
||||||
if (supportbot.TicketDepartments) {
|
|
||||||
try {
|
try {
|
||||||
const Department1Button = new MessageButton()
|
let buttons = await supportbot.Departments.map((x) =>
|
||||||
.setCustomId("Department1")
|
new MessageButton()
|
||||||
.setLabel(supportbot.DepartmentTitle_1)
|
.setCustomId("Department" + supportbot.Departments.indexOf(x))
|
||||||
.setStyle(supportbot.TicketDept1Colour)
|
.setLabel(x.title)
|
||||||
.setEmoji(supportbot.TicketDept1Emoji);
|
.setStyle(x.color)
|
||||||
|
.setEmoji(x.emoji)
|
||||||
const Department2Button = new MessageButton()
|
|
||||||
.setCustomId("Department2")
|
|
||||||
.setLabel(supportbot.DepartmentTitle_2)
|
|
||||||
.setStyle(supportbot.TicketDept2Colour)
|
|
||||||
.setEmoji(supportbot.TicketDept2Emoji);
|
|
||||||
|
|
||||||
const Department3Button = new MessageButton()
|
|
||||||
.setCustomId("Department3")
|
|
||||||
.setLabel(supportbot.DepartmentTitle_3)
|
|
||||||
.setStyle(supportbot.TicketDept3Colour)
|
|
||||||
.setEmoji(supportbot.TicketDept3Emoji);
|
|
||||||
|
|
||||||
const row = new MessageActionRow().addComponents(
|
|
||||||
Department1Button,
|
|
||||||
Department2Button,
|
|
||||||
Department3Button
|
|
||||||
);
|
);
|
||||||
|
const row = new MessageActionRow().addComponents(buttons);
|
||||||
const m = await ticketChannel.send({
|
const m = await ticketChannel.send({
|
||||||
embeds: [TicketMessage],
|
embeds: [TicketMessage],
|
||||||
components: [row],
|
components: [row],
|
||||||
});
|
});
|
||||||
|
|
||||||
const filter = (i) => i.user.id === interaction.user.id;
|
|
||||||
let collector;
|
let collector;
|
||||||
try {
|
try {
|
||||||
|
const filter = (i) => i.user.id === interaction.user.id;
|
||||||
collector = await m.awaitMessageComponent({
|
collector = await m.awaitMessageComponent({
|
||||||
filter,
|
filter,
|
||||||
max: 1,
|
max: 1,
|
||||||
@@ -256,10 +240,13 @@ module.exports = new Command({
|
|||||||
time: supportbot.Timeout * 60000,
|
time: supportbot.Timeout * 60000,
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e.code == "INTERACTION_COLLECTOR_ERROR")
|
if (e.code === "INTERACTION_COLLECTOR_ERROR") {
|
||||||
try {
|
try {
|
||||||
|
TicketData = await JSON.parse(
|
||||||
|
fs.readFileSync("./Data/TicketData.json", "utf8")
|
||||||
|
);
|
||||||
let ticket = await TicketData.tickets.findIndex(
|
let ticket = await TicketData.tickets.findIndex(
|
||||||
(t) => t.id == ticketChannel.id
|
(t) => t.id === ticketChannel.id
|
||||||
);
|
);
|
||||||
TicketData.tickets[ticket].open = false;
|
TicketData.tickets[ticket].open = false;
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
@@ -273,27 +260,17 @@ module.exports = new Command({
|
|||||||
"Your ticket has timed out. Please open a new one, and select a department."
|
"Your ticket has timed out. Please open a new one, and select a department."
|
||||||
);
|
);
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
return await ticketChannel.delete();
|
return await ticketChannel.delete();
|
||||||
}
|
}
|
||||||
let role;
|
|
||||||
let title;
|
|
||||||
if (collector.customId === "Department1") {
|
|
||||||
role = DeptRole1;
|
|
||||||
title = supportbot.DepartmentTitle_1;
|
|
||||||
}
|
|
||||||
if (collector.customId === "Department2") {
|
|
||||||
role = DeptRole2;
|
|
||||||
title = supportbot.DepartmentTitle_2;
|
|
||||||
}
|
|
||||||
if (collector.customId === "Department3") {
|
|
||||||
role = DeptRole3;
|
|
||||||
title = supportbot.DepartmentTitle_3;
|
|
||||||
}
|
}
|
||||||
|
let num = collector.customId.split("Department")[1];
|
||||||
|
let role = getRole(supportbot.Departments[num].role, interaction.guild);
|
||||||
|
let title = supportbot.Departments[num].title;
|
||||||
|
|
||||||
ticketChannel.permissionOverwrites.edit(role.id, {
|
await ticketChannel.permissionOverwrites.edit(role.id, {
|
||||||
VIEW_CHANNEL: true,
|
VIEW_CHANNEL: true,
|
||||||
});
|
});
|
||||||
ticketChannel.permissionOverwrites.edit(Author.id, {
|
await ticketChannel.permissionOverwrites.edit(interaction.user.id, {
|
||||||
SEND_MESSAGES: true,
|
SEND_MESSAGES: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -315,7 +292,37 @@ module.exports = new Command({
|
|||||||
});
|
});
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
} else {
|
} else {
|
||||||
await ticketChannel.send({ embeds: [TicketMessage], components: [row2] });
|
await ticketChannel.send({
|
||||||
|
embeds: [TicketMessage],
|
||||||
|
components: [row2],
|
||||||
|
});
|
||||||
|
if (department) {
|
||||||
|
let role = await getRole(
|
||||||
|
supportbot.Departments[department].role,
|
||||||
|
interaction.guild
|
||||||
|
);
|
||||||
|
let title = supportbot.Departments[department].title;
|
||||||
|
await ticketChannel.permissionOverwrites.edit(role.id, {
|
||||||
|
VIEW_CHANNEL: true,
|
||||||
|
});
|
||||||
|
let TicketCat = await getCategory(
|
||||||
|
supportbot.Departments[department].category ||
|
||||||
|
supportbot.TicketCategory,
|
||||||
|
interaction.guild
|
||||||
|
);
|
||||||
|
await ticketChannel.setParent(TicketCat.id, { lockPermissions: false });
|
||||||
|
await ticketChannel.send({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
description: `> Thank for reaching out to the **${title} Department**. Please provide us information regarding your query.`,
|
||||||
|
color: supportbot.EmbedColour,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (supportbot.AllowTicketMentions) {
|
||||||
|
await ticketChannel.send("@here");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
+26
-29
@@ -10,7 +10,7 @@
|
|||||||
# Discord Support: https://emeraldsrv.dev/discord
|
# Discord Support: https://emeraldsrv.dev/discord
|
||||||
# Community Resources: https://emeraldsrv.dev/resources
|
# Community Resources: https://emeraldsrv.dev/resources
|
||||||
|
|
||||||
SupportBot_Version: "7.4.0"
|
SupportBot_Version: "7.5"
|
||||||
|
|
||||||
# -------------------------
|
# -------------------------
|
||||||
# General Configuration
|
# General Configuration
|
||||||
@@ -18,8 +18,6 @@ SupportBot_Version: "7.4.0"
|
|||||||
|
|
||||||
Name: "SupportBot"
|
Name: "SupportBot"
|
||||||
Token: "BOT_TOKEN"
|
Token: "BOT_TOKEN"
|
||||||
# Guild ID Ex: 123456789123456789
|
|
||||||
Guild: ""
|
|
||||||
|
|
||||||
# -------------------------
|
# -------------------------
|
||||||
# Activity Configuration
|
# Activity Configuration
|
||||||
@@ -84,12 +82,13 @@ SuggestionDownvote: "❌"
|
|||||||
# Tickets Configuration
|
# Tickets Configuration
|
||||||
# -------------------------
|
# -------------------------
|
||||||
|
|
||||||
TicketCategory: "Tickets"
|
TicketCategory: "Tickets" # Only for tickets without a category
|
||||||
TicketPrefix: "ticket-" # The prefix for ticket channel names
|
TicketPrefix: "ticket-" # The prefix for ticket channel names
|
||||||
|
|
||||||
TicketLog: "logs"
|
TicketLog: "ticket-logs"
|
||||||
TranscriptLog: "transcripts"
|
TranscriptLog: "transcripts"
|
||||||
|
|
||||||
|
DMTranscripts: true
|
||||||
TranscriptTitle: "Ticket Transcript"
|
TranscriptTitle: "Ticket Transcript"
|
||||||
TicketLog_Title: "Ticket Closed"
|
TicketLog_Title: "Ticket Closed"
|
||||||
TicketBlackListMessage: "You are not allowed to open a ticket"
|
TicketBlackListMessage: "You are not allowed to open a ticket"
|
||||||
@@ -97,12 +96,12 @@ TicketBlackListMessage: "You are not allowed to open a ticket"
|
|||||||
MaxAllowedTickets: 2
|
MaxAllowedTickets: 2
|
||||||
|
|
||||||
TicketSubject: "description"
|
TicketSubject: "description"
|
||||||
# "description" will displays the ticket reason within the channel description
|
# "description" will display the ticket reason within the channel description
|
||||||
# "embed" will displays the ticket reason within the ticket embed
|
# "embed" will display the ticket reason within the ticket embed
|
||||||
|
|
||||||
AllowTicketMentions: true
|
AllowTicketMentions: true
|
||||||
# Set to true to allow the ticket to mention the author and the support team.
|
# Set to true to allow the ticket to mention the author and the support team.
|
||||||
# Set to false to dis-allow mentions within tickets.
|
# Set false to dis-allow mentions within tickets.
|
||||||
|
|
||||||
# --- Creation Config ---
|
# --- Creation Config ---
|
||||||
# --- Start ---
|
# --- Start ---
|
||||||
@@ -143,14 +142,6 @@ TicketCloseColour: "DANGER"
|
|||||||
TicketDeleteColour: "DANGER"
|
TicketDeleteColour: "DANGER"
|
||||||
TicketLockColour: "PRIMARY"
|
TicketLockColour: "PRIMARY"
|
||||||
|
|
||||||
TicketDept1Colour: "PRIMARY"
|
|
||||||
TicketDept2Colour: "PRIMARY"
|
|
||||||
TicketDept3Colour: "PRIMARY"
|
|
||||||
|
|
||||||
TicketDept1Emoji: "1️⃣"
|
|
||||||
TicketDept2Emoji: "2️⃣"
|
|
||||||
TicketDept3Emoji: "3️⃣"
|
|
||||||
|
|
||||||
TranscriptSavedMessage: "📝 **Transcript Saved!**"
|
TranscriptSavedMessage: "📝 **Transcript Saved!**"
|
||||||
TicketLockMessage: "❌ **Ticket Locked!**"
|
TicketLockMessage: "❌ **Ticket Locked!**"
|
||||||
TicketDeleteMessage: "⚠ **Ticket Deleting!**" # Tickets deleting after 5 seconds by default.
|
TicketDeleteMessage: "⚠ **Ticket Deleting!**" # Tickets deleting after 5 seconds by default.
|
||||||
@@ -161,22 +152,28 @@ TicketDeleteMessage: "⚠ **Ticket Deleting!**" # Tickets deleting after 5 secon
|
|||||||
TicketDepartments: true
|
TicketDepartments: true
|
||||||
# Delete the ticket if no department selected. TIME IN MINUTES
|
# Delete the ticket if no department selected. TIME IN MINUTES
|
||||||
Timeout: 5
|
Timeout: 5
|
||||||
AllowStaff: true
|
# Set to true to allow all staff to access the ticket
|
||||||
# If set to false users with the "Staff" role will not be able to view tickets
|
AllowAllStaff: false
|
||||||
# without a valid department role set below.
|
|
||||||
|
|
||||||
# Set to false to allow "Staff" to see tickets whether its a department for them or not.
|
|
||||||
|
|
||||||
DepartmentTitle_1: "General Support"
|
|
||||||
DepartmentTitle_2: "Billing Support"
|
|
||||||
DepartmentTitle_3: "Admin Team"
|
|
||||||
# Ticket department title, This is the title for a ticket department to help users know what is available.
|
|
||||||
|
|
||||||
DepartmentRole_1: "Support"
|
|
||||||
DepartmentRole_2: "Support"
|
|
||||||
DepartmentRole_3: "Admin"
|
|
||||||
# Ticket roles are the roles that will be able to gain access to tickets depending on what department has been chosen.
|
# Ticket roles are the roles that will be able to gain access to tickets depending on what department has been chosen.
|
||||||
|
|
||||||
|
Departments:
|
||||||
|
- title: "General Support"
|
||||||
|
role: "Support"
|
||||||
|
color: "PRIMARY"
|
||||||
|
emoji: "1️⃣"
|
||||||
|
category: "Tickets"
|
||||||
|
- title: "Billing Support"
|
||||||
|
role: "Support"
|
||||||
|
color: "PRIMARY"
|
||||||
|
emoji: "2️⃣"
|
||||||
|
category: "Billing"
|
||||||
|
- title: "Admin Team"
|
||||||
|
role: "Admin"
|
||||||
|
color: "PRIMARY"
|
||||||
|
emoji: "3️⃣"
|
||||||
|
category: "Tickets"
|
||||||
|
|
||||||
# --- Closing Config ---
|
# --- Closing Config ---
|
||||||
# --- Start ---
|
# --- Start ---
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ ButtonEmoji: "📩"
|
|||||||
ButtonLabel: "Open Ticket"
|
ButtonLabel: "Open Ticket"
|
||||||
ButtonColour: "SUCCESS"
|
ButtonColour: "SUCCESS"
|
||||||
# Colour Options:
|
# Colour Options:
|
||||||
# -> PRIMARY - Blurple
|
# -> PRIMARY - Purple
|
||||||
# -> SECONDARY - Grey
|
# -> SECONDARY - Grey
|
||||||
# -> SUCCESS - Green
|
# -> SUCCESS - Green
|
||||||
# -> DANGER - Red
|
# -> DANGER - Red
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
{
|
{
|
||||||
"id": 0,
|
|
||||||
"tickets": []
|
"tickets": []
|
||||||
}
|
}
|
||||||
@@ -1 +1 @@
|
|||||||
{"TicketPanelID":""}
|
{"id":0,"TicketPanelID":"947337678720999458"}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
const Event = require("../Structures/Event.js");
|
const Event = require("../Structures/Event.js");
|
||||||
module.exports = new Event("guildCreate", async (client, guild) => {
|
module.exports = new Event("guildCreate", async (client) => {
|
||||||
console.log(
|
console.log(
|
||||||
`\u001b[31m`,
|
`\u001b[31m`,
|
||||||
`${client.user.username} is not in the correct server set in your config. Please leave all other servers and restart the bot.`
|
`${client.user.username} is not in the correct server set in your config. Please leave all other servers and restart the bot.`
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
const Event = require("../Structures/Event.js");
|
const Event = require("../Structures/Event.js");
|
||||||
|
|
||||||
module.exports = new Event("guildDelete", async (client, guild) => {
|
module.exports = new Event("guildDelete", async (client) => {
|
||||||
console.log(
|
console.log(
|
||||||
`\u001b[31m`,
|
`\u001b[31m`,
|
||||||
`${client.user.username} is not in the correct server set in your config. Please join the server and restart the bot.`
|
`${client.user.username} is not in the correct server set in your config. Please join the server and restart the bot.`
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
|
||||||
|
const Discord = require('discord.js');
|
||||||
|
const fs = require("fs");
|
||||||
|
const Event = require("../Structures/Event.js");
|
||||||
|
const yaml = require("js-yaml");
|
||||||
|
const supportbot = yaml.load(
|
||||||
|
fs.readFileSync("./Configs/supportbot.yml", "utf8")
|
||||||
|
);
|
||||||
|
|
||||||
|
module.exports = new Event("guildMemberAdd", async (client, member, interaction, guild) => {
|
||||||
|
|
||||||
|
const WelcomeChannel = interaction.guild.channels.get(supportbot.WelcomeChannel)
|
||||||
|
|
||||||
|
const WelcomeEmbed = new Discord.MessageEmbed()
|
||||||
|
.setColor(supportbot.WelcomeColour)
|
||||||
|
.setTitle(supportbot.WelcomeTitle)
|
||||||
|
.setDescription(supportbot.WelcomeMessage.replace(/%joined_user%/g, member.user))
|
||||||
|
.setThumbnail(member.user.displayAvatarURL())
|
||||||
|
.setTimestamp();
|
||||||
|
|
||||||
|
member.guild.channels.cache.get(
|
||||||
|
supportbot.WelcomeChannel).send({
|
||||||
|
embeds: [WelcomeEmbed]
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const WelcomeMsg = await WelcomeChannel.send({
|
||||||
|
embeds: [WelcomeEmbed]
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
+18
-13
@@ -15,7 +15,7 @@ const Event = require("../Structures/Event.js");
|
|||||||
module.exports = new Event("interactionCreate", async (client, interaction) => {
|
module.exports = new Event("interactionCreate", async (client, interaction) => {
|
||||||
if (interaction.isCommand()) {
|
if (interaction.isCommand()) {
|
||||||
const command = client.commands.find(
|
const command = client.commands.find(
|
||||||
(cmd) => cmd.name.toLowerCase() == interaction.commandName
|
(cmd) => cmd.name.toLowerCase() === interaction.commandName
|
||||||
);
|
);
|
||||||
|
|
||||||
if (interaction.user.bot || !interaction.guild) return;
|
if (interaction.user.bot || !interaction.guild) return;
|
||||||
@@ -29,7 +29,7 @@ module.exports = new Event("interactionCreate", async (client, interaction) => {
|
|||||||
embeds: [NotValid],
|
embeds: [NotValid],
|
||||||
});
|
});
|
||||||
|
|
||||||
const permission = interaction.member.permissions.has(command.permission);
|
const permission = interaction.member.permissions.has(command.permissions);
|
||||||
|
|
||||||
const ValidPerms = new Discord.MessageEmbed()
|
const ValidPerms = new Discord.MessageEmbed()
|
||||||
.setDescription(
|
.setDescription(
|
||||||
@@ -41,11 +41,13 @@ module.exports = new Event("interactionCreate", async (client, interaction) => {
|
|||||||
return interaction.reply({
|
return interaction.reply({
|
||||||
embeds: [ValidPerms],
|
embeds: [ValidPerms],
|
||||||
});
|
});
|
||||||
interaction.user = interaction.user;
|
|
||||||
command.run(interaction);
|
command.run(interaction);
|
||||||
}
|
}
|
||||||
if (interaction.isButton()) {
|
if (interaction.isButton()) {
|
||||||
if (interaction.customId === "openticket") {
|
if (
|
||||||
|
interaction.customId === "openticket" ||
|
||||||
|
interaction.customId.includes("department-")
|
||||||
|
) {
|
||||||
try {
|
try {
|
||||||
const cmd = client.commands.get(cmdconfig.OpenTicket);
|
const cmd = client.commands.get(cmdconfig.OpenTicket);
|
||||||
if (!cmd) return;
|
if (!cmd) return;
|
||||||
@@ -65,7 +67,7 @@ module.exports = new Event("interactionCreate", async (client, interaction) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (interaction.customId === "ticketlock") {
|
if (interaction.customId === "ticketlock") {
|
||||||
if (interaction.channel.name.startsWith(`${supportbot.TicketPrefix}`)) {
|
if (interaction.channel.name.startsWith(supportbot.TicketPrefix)) {
|
||||||
interaction.message.fetch();
|
interaction.message.fetch();
|
||||||
let Admin =
|
let Admin =
|
||||||
interaction.guild.roles.cache.find(
|
interaction.guild.roles.cache.find(
|
||||||
@@ -84,25 +86,28 @@ module.exports = new Event("interactionCreate", async (client, interaction) => {
|
|||||||
|
|
||||||
let parent =
|
let parent =
|
||||||
interaction.guild.channels.cache.find(
|
interaction.guild.channels.cache.find(
|
||||||
(c) => c.name === `${supportbot.LockTicketCategory}`
|
(c) => c.name === supportbot.LockTicketCategory
|
||||||
) ||
|
) ||
|
||||||
interaction.guild.channels.cache.find(
|
interaction.guild.channels.cache.find(
|
||||||
(c) => c.id === `${supportbot.LockTicketCategory}`
|
(c) => c.id === supportbot.LockTicketCategory
|
||||||
);
|
);
|
||||||
if (parent) {
|
if (parent) {
|
||||||
interaction.channel.setParent(parent.id);
|
await interaction.channel.setParent(parent.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
all.forEach((perm) => {
|
all.forEach((perm) => {
|
||||||
interaction.channel.permissionOverwrites.delete(perm.id);
|
interaction.channel.permissionOverwrites.delete(perm.id);
|
||||||
});
|
});
|
||||||
interaction.channel.permissionOverwrites.create(Admin.id, {
|
await interaction.channel.permissionOverwrites.create(Admin.id, {
|
||||||
VIEW_CHANNEL: true,
|
VIEW_CHANNEL: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
interaction.channel.permissionOverwrites.create(interaction.guild.id, {
|
await interaction.channel.permissionOverwrites.create(
|
||||||
VIEW_CHANNEL: false,
|
interaction.guild.id,
|
||||||
});
|
{
|
||||||
|
VIEW_CHANNEL: false,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
const ticketDeleteButton = new Discord.MessageButton()
|
const ticketDeleteButton = new Discord.MessageButton()
|
||||||
.setCustomId("ticketclose")
|
.setCustomId("ticketclose")
|
||||||
@@ -116,7 +121,7 @@ module.exports = new Event("interactionCreate", async (client, interaction) => {
|
|||||||
const ArchiveEmbed = new Discord.MessageEmbed()
|
const ArchiveEmbed = new Discord.MessageEmbed()
|
||||||
.setTitle("Archived")
|
.setTitle("Archived")
|
||||||
.setDescription(`Archived ${interaction.channel.name}`)
|
.setDescription(`Archived ${interaction.channel.name}`)
|
||||||
.setColor(`${supportbot.SuccessColour}`);
|
.setColor(supportbot.SuccessColour);
|
||||||
|
|
||||||
interaction.reply({ embeds: [ArchiveEmbed] });
|
interaction.reply({ embeds: [ArchiveEmbed] });
|
||||||
interaction.message.edit({ components: [row] });
|
interaction.message.edit({ components: [row] });
|
||||||
|
|||||||
+43
-25
@@ -14,7 +14,7 @@ const panelconfig = yaml.load(
|
|||||||
|
|
||||||
const Event = require("../Structures/Event.js");
|
const Event = require("../Structures/Event.js");
|
||||||
|
|
||||||
module.exports = new Event("ready", async (client) => {
|
module.exports = new Event("ready", async (client, interaction) => {
|
||||||
const { getRole, getChannel, getCategory } = client;
|
const { getRole, getChannel, getCategory } = client;
|
||||||
client.user.setActivity(supportbot.BotActivity, {
|
client.user.setActivity(supportbot.BotActivity, {
|
||||||
type: supportbot.ActivityType,
|
type: supportbot.ActivityType,
|
||||||
@@ -38,6 +38,14 @@ module.exports = new Event("ready", async (client) => {
|
|||||||
`\u001b[36m`,
|
`\u001b[36m`,
|
||||||
`Connected to Discord`
|
`Connected to Discord`
|
||||||
);
|
);
|
||||||
|
console.log(
|
||||||
|
`\u001b[33m`,
|
||||||
|
`Invite to your server:`,
|
||||||
|
`\u001b[36m`,
|
||||||
|
`https://discord.com/api/oauth2/authorize?client_id=` +
|
||||||
|
client.user.id +
|
||||||
|
`&permissions=8&scope=bot%20applications.commands`
|
||||||
|
);
|
||||||
console.log(
|
console.log(
|
||||||
`\u001b[33m`,
|
`\u001b[33m`,
|
||||||
`Resources:`,
|
`Resources:`,
|
||||||
@@ -48,7 +56,7 @@ module.exports = new Event("ready", async (client) => {
|
|||||||
`\u001b[33m`,
|
`\u001b[33m`,
|
||||||
`Documentation:`,
|
`Documentation:`,
|
||||||
`\u001b[36m`,
|
`\u001b[36m`,
|
||||||
`https://supportbot.emeraldsrv.dev`
|
`https://emeraldsrv.dev/wiki/supportbot`
|
||||||
);
|
);
|
||||||
console.log(
|
console.log(
|
||||||
`\u001b[33m`,
|
`\u001b[33m`,
|
||||||
@@ -66,14 +74,10 @@ module.exports = new Event("ready", async (client) => {
|
|||||||
console.log(`\u001b[37m`, `SupportBot proudly created by Emerald Services`);
|
console.log(`\u001b[37m`, `SupportBot proudly created by Emerald Services`);
|
||||||
console.log(` `);
|
console.log(` `);
|
||||||
console.log(`\u001b[31m`, `――――――――――――――――――――――――――――――――――――――――――――`);
|
console.log(`\u001b[31m`, `――――――――――――――――――――――――――――――――――――――――――――`);
|
||||||
if (
|
if (client.guilds.cache.size !== 1) {
|
||||||
!supportbot.Guild ||
|
|
||||||
(await client.guilds.cache.size) !== 1 ||
|
|
||||||
(await client.guilds.cache.first().id) !== supportbot.Guild
|
|
||||||
) {
|
|
||||||
console.log(
|
console.log(
|
||||||
`\u001b[31m`,
|
`\u001b[31m`,
|
||||||
`${client.user.username} is not in the correct server set in your config. Please join the server and restart the bot.`
|
`${client.user.username} must be in only 1 server. Please join this server, leave any others, and restart the bot.`
|
||||||
);
|
);
|
||||||
console.log(`\u001b[31m`, `${client.user.username} will now exit.`);
|
console.log(`\u001b[31m`, `${client.user.username} will now exit.`);
|
||||||
return process.exit(1);
|
return process.exit(1);
|
||||||
@@ -82,10 +86,10 @@ module.exports = new Event("ready", async (client) => {
|
|||||||
supportbot.Admin,
|
supportbot.Admin,
|
||||||
supportbot.Staff,
|
supportbot.Staff,
|
||||||
supportbot.TicketBlackListRole,
|
supportbot.TicketBlackListRole,
|
||||||
supportbot.DepartmentRole_1,
|
|
||||||
supportbot.DepartmentRole_2,
|
|
||||||
supportbot.DepartmentRole_3,
|
|
||||||
];
|
];
|
||||||
|
if (supportbot.TicketDepartments) {
|
||||||
|
supportbot.Departments.forEach((department) => roles.push(department.role));
|
||||||
|
}
|
||||||
if (supportbot.AutoRole) roles.push(supportbot.AutoRole_Role);
|
if (supportbot.AutoRole) roles.push(supportbot.AutoRole_Role);
|
||||||
const channels = [
|
const channels = [
|
||||||
supportbot.SuggestionChannel,
|
supportbot.SuggestionChannel,
|
||||||
@@ -137,8 +141,9 @@ module.exports = new Event("ready", async (client) => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (panelconfig.TicketPanel) {
|
if (panelconfig.TicketPanel) {
|
||||||
let chan1 = client.channels.cache.find(
|
let chan1 = await client.getChannel(
|
||||||
(channel) => channel.name === panelconfig.Channel
|
panelconfig.Channel,
|
||||||
|
client.guilds.cache.first()
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!chan1) {
|
if (!chan1) {
|
||||||
@@ -153,11 +158,14 @@ module.exports = new Event("ready", async (client) => {
|
|||||||
fs.readFileSync("./Data/ticket-panel-id.json", "utf8")
|
fs.readFileSync("./Data/ticket-panel-id.json", "utf8")
|
||||||
);
|
);
|
||||||
|
|
||||||
chan1.messages.fetch(panelid.TicketPanelID).catch(async (r) => {
|
chan1.messages.fetch(panelid.TicketPanelID).catch(async () => {
|
||||||
let embed = new Discord.MessageEmbed()
|
let embed = new Discord.MessageEmbed()
|
||||||
.setTitle(`${panelconfig.PanelTitle}`)
|
.setTitle(panelconfig.PanelTitle)
|
||||||
.setColor(supportbot.SuccessColour)
|
.setColor(supportbot.SuccessColour)
|
||||||
.setFooter(supportbot.EmbedFooter);
|
.setFooter({
|
||||||
|
text: supportbot.EmbedFooter,
|
||||||
|
iconURL: interaction.user.displayAvatarURL(),
|
||||||
|
});
|
||||||
|
|
||||||
if (panelconfig.TicketPanel_Description) {
|
if (panelconfig.TicketPanel_Description) {
|
||||||
embed.setDescription(panelconfig.PanelMessage);
|
embed.setDescription(panelconfig.PanelMessage);
|
||||||
@@ -170,13 +178,22 @@ module.exports = new Event("ready", async (client) => {
|
|||||||
if (panelconfig.TicketPanel_Image) {
|
if (panelconfig.TicketPanel_Image) {
|
||||||
embed.setImage(panelconfig.PanelImage);
|
embed.setImage(panelconfig.PanelImage);
|
||||||
}
|
}
|
||||||
|
let button;
|
||||||
let button = new Discord.MessageButton()
|
if (supportbot.TicketDepartments) {
|
||||||
.setLabel(panelconfig.ButtonLabel)
|
button = supportbot.Departments.map((x) =>
|
||||||
.setCustomId("openticket")
|
new Discord.MessageButton()
|
||||||
.setStyle(panelconfig.ButtonColour)
|
.setCustomId("department-" + supportbot.Departments.indexOf(x))
|
||||||
.setEmoji(panelconfig.ButtonEmoji);
|
.setLabel(x.title)
|
||||||
|
.setStyle(x.color)
|
||||||
|
.setEmoji(x.emoji)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
button = new Discord.MessageButton()
|
||||||
|
.setLabel(panelconfig.ButtonLabel)
|
||||||
|
.setCustomId("openticket")
|
||||||
|
.setStyle(panelconfig.ButtonColour)
|
||||||
|
.setEmoji(panelconfig.ButtonEmoji);
|
||||||
|
}
|
||||||
let row = new Discord.MessageActionRow().addComponents(button);
|
let row = new Discord.MessageActionRow().addComponents(button);
|
||||||
|
|
||||||
await chan1
|
await chan1
|
||||||
@@ -186,7 +203,8 @@ module.exports = new Event("ready", async (client) => {
|
|||||||
})
|
})
|
||||||
.then((r) => {
|
.then((r) => {
|
||||||
let data = {
|
let data = {
|
||||||
TicketPanelID: `${r.id}`,
|
id: panelid.id,
|
||||||
|
TicketPanelID: r.id,
|
||||||
};
|
};
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
"./Data/ticket-panel-id.json",
|
"./Data/ticket-panel-id.json",
|
||||||
@@ -195,7 +213,7 @@ module.exports = new Event("ready", async (client) => {
|
|||||||
);
|
);
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
console.log("Raw" + e);
|
console.log("Raw: " + e);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ SupportBot is an open-sourced support system for discord. It's completely free t
|
|||||||
|
|
||||||
**|** [Discord](https://emeraldsrv.dev/discord) **|**
|
**|** [Discord](https://emeraldsrv.dev/discord) **|**
|
||||||
[Hosting](https://emeraldsrv.dev/hosting) **|**
|
[Hosting](https://emeraldsrv.dev/hosting) **|**
|
||||||
[Documentation](https://docs.emeraldsrv.dev) **|**
|
[Documentation](https://emeraldsrv.dev/wiki/supportbot) **|**
|
||||||
[Download via Polymart](https://polymart.org/resource/supportbot-1-discord-ticket-bot.518) **|**
|
[Download via Polymart](https://polymart.org/resource/supportbot-1-discord-ticket-bot.518) **|**
|
||||||
[Download via MC-Market](https://www.mc-market.org/resources/8940/) **|**
|
[Download via MC-Market](https://www.mc-market.org/resources/8940/) **|**
|
||||||
@@ -37,7 +37,7 @@ class Client extends Discord.Client {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
start(token) {
|
async start(token) {
|
||||||
const commandFiles = fs
|
const commandFiles = fs
|
||||||
.readdirSync("./Commands")
|
.readdirSync("./Commands")
|
||||||
.filter((file) => file.endsWith(".js"));
|
.filter((file) => file.endsWith(".js"));
|
||||||
@@ -76,10 +76,10 @@ class Client extends Discord.Client {
|
|||||||
`\u001b[32;1m`,
|
`\u001b[32;1m`,
|
||||||
"Loaded"
|
"Loaded"
|
||||||
);
|
);
|
||||||
addon.commands.forEach((command) => {
|
addon.commands?.forEach((command) => {
|
||||||
this.commands.set(command.name, command);
|
this.commands.set(command.name, command);
|
||||||
});
|
});
|
||||||
addon.events.forEach((event) => {
|
addon.events?.forEach((event) => {
|
||||||
this.on(event.event, (...args) => event.run(this, ...args));
|
this.on(event.event, (...args) => event.run(this, ...args));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -89,7 +89,7 @@ class Client extends Discord.Client {
|
|||||||
// Slash Commands
|
// Slash Commands
|
||||||
|
|
||||||
this.once("ready", async () => {
|
this.once("ready", async () => {
|
||||||
await this.application?.commands.set(this.commands, supportbot.Guild);
|
await this.guilds.cache.first()?.commands.set(this.commands);
|
||||||
console.log(
|
console.log(
|
||||||
`\u001b[32;1m`,
|
`\u001b[32;1m`,
|
||||||
`Slash Commands Registered for ${this.guilds.cache.first().name}`
|
`Slash Commands Registered for ${this.guilds.cache.first().name}`
|
||||||
@@ -108,8 +108,8 @@ class Client extends Discord.Client {
|
|||||||
});
|
});
|
||||||
|
|
||||||
console.log(`\u001b[34;1m`, "▬▬▬▬▬▬▬ Events ▬▬▬▬▬▬▬");
|
console.log(`\u001b[34;1m`, "▬▬▬▬▬▬▬ Events ▬▬▬▬▬▬▬");
|
||||||
if (process.argv[2] != "test") {
|
if (process.argv[2] !== "test") {
|
||||||
this.login(token);
|
await this.login(token);
|
||||||
} else {
|
} else {
|
||||||
console.log(
|
console.log(
|
||||||
`\u001b[31;1m`,
|
`\u001b[31;1m`,
|
||||||
|
|||||||
@@ -1,19 +1,14 @@
|
|||||||
// SupportBot | Emerald Services
|
// SupportBot | Emerald Services
|
||||||
// Command Structure
|
// Command Structure
|
||||||
|
|
||||||
const fs = require("fs");
|
|
||||||
|
|
||||||
const yaml = require("js-yaml");
|
|
||||||
|
|
||||||
class Command {
|
class Command {
|
||||||
constructor(options) {
|
constructor(options) {
|
||||||
this.name = options.name;
|
this.name = options.name;
|
||||||
this.description = options.description;
|
this.description = options.description;
|
||||||
this.permissions = options.permissions;
|
this.permissions = options.permissions || [];
|
||||||
this.options = options.options || [];
|
this.options = options.options || [];
|
||||||
this.run = options.run;
|
this.run = options.run;
|
||||||
this.defaultPermission = true;
|
this.defaultPermission = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Command;
|
module.exports = Command;
|
||||||
+14
-41
@@ -5,44 +5,31 @@ const fs = require("fs");
|
|||||||
|
|
||||||
class TicketNumberID {
|
class TicketNumberID {
|
||||||
static async pad() {
|
static async pad() {
|
||||||
let n = this.get() + "";
|
let num = await this.get();
|
||||||
let z = "0";
|
let n = num + "";
|
||||||
let width = 4;
|
await this.set(num + 1);
|
||||||
await this.set(this.get() + 1);
|
return n.length >= 4 ? n : new Array(4 - n.length + 1).join("0") + n;
|
||||||
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static get() {
|
static async get() {
|
||||||
let ticketnumberID = JSON.parse(
|
let ticketnumberID = await JSON.parse(
|
||||||
fs.readFileSync("./Data/TicketData.json", "utf8")
|
fs.readFileSync("./Data/ticket-panel-id.json", "utf8")
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!ticketnumberID.id) {
|
if (!ticketnumberID.id) {
|
||||||
ticketnumberID.id = 0;
|
return this.set(0);
|
||||||
|
|
||||||
fs.writeFileSync(
|
|
||||||
"./Data/TicketData.json",
|
|
||||||
JSON.stringify(ticketnumberID, null, 4),
|
|
||||||
(err) => {
|
|
||||||
if (err) console.error(err);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
} else {
|
} else {
|
||||||
return ticketnumberID.id;
|
return ticketnumberID.id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static set(value) {
|
static async set(value) {
|
||||||
let ticketnumberID = JSON.parse(
|
let ticketnumberID = await JSON.parse(
|
||||||
fs.readFileSync("./Data/TicketData.json", "utf8")
|
fs.readFileSync("./Data/ticket-panel-id.json", "utf8")
|
||||||
);
|
);
|
||||||
|
|
||||||
ticketnumberID.id = value;
|
ticketnumberID.id = value;
|
||||||
|
|
||||||
fs.writeFileSync(
|
fs.writeFileSync(
|
||||||
"./Data/TicketData.json",
|
"./Data/ticket-panel-id.json",
|
||||||
JSON.stringify(ticketnumberID, null, 4),
|
JSON.stringify(ticketnumberID, null, 4),
|
||||||
(err) => {
|
(err) => {
|
||||||
if (err) console.error(err);
|
if (err) console.error(err);
|
||||||
@@ -52,22 +39,8 @@ class TicketNumberID {
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static reset() {
|
static async reset() {
|
||||||
let ticketnumberID = JSON.parse(
|
return await this.set(0);
|
||||||
fs.readFileSync("./Data/TicketData.json", "utf8")
|
|
||||||
);
|
|
||||||
|
|
||||||
ticketnumberID.id = 0;
|
|
||||||
|
|
||||||
fs.writeFileSync(
|
|
||||||
"./Data/TicketData.json",
|
|
||||||
JSON.stringify(ticketnumberID, null, 4),
|
|
||||||
(err) => {
|
|
||||||
if (err) console.error(err);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
|
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
|
|
||||||
const Discord = require("discord.js");
|
|
||||||
const yaml = require("js-yaml");
|
const yaml = require("js-yaml");
|
||||||
const supportbot = yaml.load(
|
const supportbot = yaml.load(
|
||||||
fs.readFileSync("./Configs/supportbot.yml", "utf8")
|
fs.readFileSync("./Configs/supportbot.yml", "utf8")
|
||||||
|
|||||||
Generated
+127
-223
@@ -1,28 +1,28 @@
|
|||||||
{
|
{
|
||||||
"name": "supportbot",
|
"name": "supportbot",
|
||||||
"version": "7.4.0",
|
"version": "7.4.2",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "supportbot",
|
"name": "supportbot",
|
||||||
"version": "7.4.0",
|
"version": "7.4.2",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"discord.js": "^13.3.1",
|
"discord.js": "^13.6.0",
|
||||||
"js-yaml": "^4.1.0"
|
"js-yaml": "^4.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@discordjs/builders": {
|
"node_modules/@discordjs/builders": {
|
||||||
"version": "0.8.2",
|
"version": "0.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.8.2.tgz",
|
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.11.0.tgz",
|
||||||
"integrity": "sha512-/YRd11SrcluqXkKppq/FAVzLIPRVlIVmc6X8ZklspzMIHDtJ+A4W37D43SHvLdH//+NnK+SHW/WeOF4Ts54PeQ==",
|
"integrity": "sha512-ZTB8yJdJKrKlq44dpWkNUrAtEJEq0gqpb7ASdv4vmq6/mZal5kOv312hQ56I/vxwMre+VIkoHquNUAfnTbiYtg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sindresorhus/is": "^4.2.0",
|
"@sindresorhus/is": "^4.2.0",
|
||||||
"discord-api-types": "^0.24.0",
|
"discord-api-types": "^0.26.0",
|
||||||
"ow": "^0.27.0",
|
|
||||||
"ts-mixer": "^6.0.0",
|
"ts-mixer": "^6.0.0",
|
||||||
"tslib": "^2.3.1"
|
"tslib": "^2.3.1",
|
||||||
|
"zod": "^3.11.6"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0",
|
"node": ">=16.0.0",
|
||||||
@@ -30,40 +30,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@discordjs/collection": {
|
"node_modules/@discordjs/collection": {
|
||||||
"version": "0.3.2",
|
"version": "0.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.4.0.tgz",
|
||||||
"integrity": "sha512-dMjLl60b2DMqObbH1MQZKePgWhsNe49XkKBZ0W5Acl5uVV43SN414i2QfZwRI7dXAqIn8pEWD2+XXQFn9KWxqg==",
|
"integrity": "sha512-zmjq+l/rV35kE6zRrwe8BHqV78JvIh2ybJeZavBi5NySjWXqN3hmmAKg7kYMMXSeiWtSsMoZ/+MQi0DiQWy2lw==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0",
|
"node": ">=16.0.0",
|
||||||
"npm": ">=7.0.0"
|
"npm": ">=7.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@discordjs/form-data": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==",
|
|
||||||
"dependencies": {
|
|
||||||
"asynckit": "^0.4.0",
|
|
||||||
"combined-stream": "^1.0.8",
|
|
||||||
"mime-types": "^2.1.12"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@sapphire/async-queue": {
|
"node_modules/@sapphire/async-queue": {
|
||||||
"version": "1.1.9",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.9.tgz",
|
"resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.2.0.tgz",
|
||||||
"integrity": "sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ==",
|
"integrity": "sha512-O5ND5Ljpef86X5oy8zXorQ754TMjWALcPSAgPBu4+76HLtDTrNoDyzU2uGE2G4A8Wv51u0MXHzGQ0WZ4GMtpIw==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=v14.0.0",
|
"node": ">=v14.0.0",
|
||||||
"npm": ">=7.0.0"
|
"npm": ">=7.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sindresorhus/is": {
|
"node_modules/@sindresorhus/is": {
|
||||||
"version": "4.2.0",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.4.0.tgz",
|
||||||
"integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==",
|
"integrity": "sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
},
|
},
|
||||||
@@ -72,9 +59,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "17.0.0",
|
"version": "17.0.17",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.17.tgz",
|
||||||
"integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
|
"integrity": "sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/node-fetch": {
|
"node_modules/@types/node-fetch": {
|
||||||
"version": "2.5.12",
|
"version": "2.5.12",
|
||||||
@@ -85,6 +72,19 @@
|
|||||||
"form-data": "^3.0.0"
|
"form-data": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/node-fetch/node_modules/form-data": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
|
||||||
|
"dependencies": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.8",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/ws": {
|
"node_modules/@types/ws": {
|
||||||
"version": "8.2.2",
|
"version": "8.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz",
|
||||||
@@ -103,14 +103,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||||
},
|
},
|
||||||
"node_modules/callsites": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/combined-stream": {
|
"node_modules/combined-stream": {
|
||||||
"version": "1.0.8",
|
"version": "1.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||||
@@ -131,51 +123,37 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/discord-api-types": {
|
"node_modules/discord-api-types": {
|
||||||
"version": "0.24.0",
|
"version": "0.26.1",
|
||||||
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.24.0.tgz",
|
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.26.1.tgz",
|
||||||
"integrity": "sha512-X0uA2a92cRjowUEXpLZIHWl4jiX1NsUpDhcEOpa1/hpO1vkaokgZ8kkPtPih9hHth5UVQ3mHBu/PpB4qjyfJ4A==",
|
"integrity": "sha512-T5PdMQ+Y1MEECYMV5wmyi9VEYPagEDEi4S0amgsszpWY0VB9JJ/hEvM6BgLhbdnKky4gfmZEXtEEtojN8ZKJQQ==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/discord.js": {
|
"node_modules/discord.js": {
|
||||||
"version": "13.3.1",
|
"version": "13.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.6.0.tgz",
|
||||||
"integrity": "sha512-zn4G8tL5+tMV00+0aSsVYNYcIfMSdT2g0nudKny+Ikd+XKv7m6bqI7n3Vji0GIRqXDr5ArPaw+iYFM2I1Iw3vg==",
|
"integrity": "sha512-tXNR8zgsEPxPBvGk3AQjJ9ljIIC6/LOPjzKwpwz8Y1Q2X66Vi3ZqFgRHYwnHKC0jC0F+l4LzxlhmOJsBZDNg9g==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/builders": "^0.8.1",
|
"@discordjs/builders": "^0.11.0",
|
||||||
"@discordjs/collection": "^0.3.2",
|
"@discordjs/collection": "^0.4.0",
|
||||||
"@discordjs/form-data": "^3.0.1",
|
"@sapphire/async-queue": "^1.1.9",
|
||||||
"@sapphire/async-queue": "^1.1.8",
|
|
||||||
"@types/node-fetch": "^2.5.12",
|
"@types/node-fetch": "^2.5.12",
|
||||||
"@types/ws": "^8.2.0",
|
"@types/ws": "^8.2.2",
|
||||||
"discord-api-types": "^0.24.0",
|
"discord-api-types": "^0.26.0",
|
||||||
|
"form-data": "^4.0.0",
|
||||||
"node-fetch": "^2.6.1",
|
"node-fetch": "^2.6.1",
|
||||||
"ws": "^8.2.3"
|
"ws": "^8.4.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.6.0",
|
"node": ">=16.6.0",
|
||||||
"npm": ">=7.0.0"
|
"npm": ">=7.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/dot-prop": {
|
|
||||||
"version": "6.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
|
|
||||||
"integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
|
|
||||||
"dependencies": {
|
|
||||||
"is-obj": "^2.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/form-data": {
|
"node_modules/form-data": {
|
||||||
"version": "3.0.1",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
||||||
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
|
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"asynckit": "^0.4.0",
|
"asynckit": "^0.4.0",
|
||||||
"combined-stream": "^1.0.8",
|
"combined-stream": "^1.0.8",
|
||||||
@@ -185,14 +163,6 @@
|
|||||||
"node": ">= 6"
|
"node": ">= 6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-obj": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/js-yaml": {
|
"node_modules/js-yaml": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
||||||
@@ -204,11 +174,6 @@
|
|||||||
"js-yaml": "bin/js-yaml.js"
|
"js-yaml": "bin/js-yaml.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lodash.isequal": {
|
|
||||||
"version": "4.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
|
|
||||||
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
|
|
||||||
},
|
|
||||||
"node_modules/mime-db": {
|
"node_modules/mime-db": {
|
||||||
"version": "1.51.0",
|
"version": "1.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
|
||||||
@@ -229,33 +194,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/node-fetch": {
|
"node_modules/node-fetch": {
|
||||||
"version": "2.6.6",
|
"version": "2.6.7",
|
||||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz",
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||||
"integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==",
|
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"whatwg-url": "^5.0.0"
|
"whatwg-url": "^5.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "4.x || >=6.0.0"
|
"node": "4.x || >=6.0.0"
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/ow": {
|
|
||||||
"version": "0.27.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz",
|
|
||||||
"integrity": "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"@sindresorhus/is": "^4.0.1",
|
|
||||||
"callsites": "^3.1.0",
|
|
||||||
"dot-prop": "^6.0.1",
|
|
||||||
"lodash.isequal": "^4.5.0",
|
|
||||||
"type-fest": "^1.2.1",
|
|
||||||
"vali-date": "^1.0.0"
|
|
||||||
},
|
},
|
||||||
"engines": {
|
"peerDependencies": {
|
||||||
"node": ">=12"
|
"encoding": "^0.1.0"
|
||||||
},
|
},
|
||||||
"funding": {
|
"peerDependenciesMeta": {
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"encoding": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tr46": {
|
"node_modules/tr46": {
|
||||||
@@ -273,25 +227,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
},
|
},
|
||||||
"node_modules/type-fest": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/vali-date": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/webidl-conversions": {
|
"node_modules/webidl-conversions": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||||
@@ -307,9 +242,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ws": {
|
"node_modules/ws": {
|
||||||
"version": "8.3.0",
|
"version": "8.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
|
||||||
"integrity": "sha512-Gs5EZtpqZzLvmIM59w4igITU57lrtYVFneaa434VROv4thzJyV6UjIL3D42lslWlI+D4KzLYnxSwtfuiO79sNw==",
|
"integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
},
|
},
|
||||||
@@ -325,50 +260,48 @@
|
|||||||
"optional": true
|
"optional": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"node_modules/zod": {
|
||||||
|
"version": "3.11.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/zod/-/zod-3.11.6.tgz",
|
||||||
|
"integrity": "sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg==",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/colinhacks"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/builders": {
|
"@discordjs/builders": {
|
||||||
"version": "0.8.2",
|
"version": "0.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.8.2.tgz",
|
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-0.11.0.tgz",
|
||||||
"integrity": "sha512-/YRd11SrcluqXkKppq/FAVzLIPRVlIVmc6X8ZklspzMIHDtJ+A4W37D43SHvLdH//+NnK+SHW/WeOF4Ts54PeQ==",
|
"integrity": "sha512-ZTB8yJdJKrKlq44dpWkNUrAtEJEq0gqpb7ASdv4vmq6/mZal5kOv312hQ56I/vxwMre+VIkoHquNUAfnTbiYtg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@sindresorhus/is": "^4.2.0",
|
"@sindresorhus/is": "^4.2.0",
|
||||||
"discord-api-types": "^0.24.0",
|
"discord-api-types": "^0.26.0",
|
||||||
"ow": "^0.27.0",
|
|
||||||
"ts-mixer": "^6.0.0",
|
"ts-mixer": "^6.0.0",
|
||||||
"tslib": "^2.3.1"
|
"tslib": "^2.3.1",
|
||||||
|
"zod": "^3.11.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@discordjs/collection": {
|
"@discordjs/collection": {
|
||||||
"version": "0.3.2",
|
"version": "0.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.4.0.tgz",
|
||||||
"integrity": "sha512-dMjLl60b2DMqObbH1MQZKePgWhsNe49XkKBZ0W5Acl5uVV43SN414i2QfZwRI7dXAqIn8pEWD2+XXQFn9KWxqg=="
|
"integrity": "sha512-zmjq+l/rV35kE6zRrwe8BHqV78JvIh2ybJeZavBi5NySjWXqN3hmmAKg7kYMMXSeiWtSsMoZ/+MQi0DiQWy2lw=="
|
||||||
},
|
|
||||||
"@discordjs/form-data": {
|
|
||||||
"version": "3.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz",
|
|
||||||
"integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==",
|
|
||||||
"requires": {
|
|
||||||
"asynckit": "^0.4.0",
|
|
||||||
"combined-stream": "^1.0.8",
|
|
||||||
"mime-types": "^2.1.12"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"@sapphire/async-queue": {
|
"@sapphire/async-queue": {
|
||||||
"version": "1.1.9",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.9.tgz",
|
"resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.2.0.tgz",
|
||||||
"integrity": "sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ=="
|
"integrity": "sha512-O5ND5Ljpef86X5oy8zXorQ754TMjWALcPSAgPBu4+76HLtDTrNoDyzU2uGE2G4A8Wv51u0MXHzGQ0WZ4GMtpIw=="
|
||||||
},
|
},
|
||||||
"@sindresorhus/is": {
|
"@sindresorhus/is": {
|
||||||
"version": "4.2.0",
|
"version": "4.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.4.0.tgz",
|
||||||
"integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw=="
|
"integrity": "sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ=="
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "17.0.0",
|
"version": "17.0.17",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.17.tgz",
|
||||||
"integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw=="
|
"integrity": "sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw=="
|
||||||
},
|
},
|
||||||
"@types/node-fetch": {
|
"@types/node-fetch": {
|
||||||
"version": "2.5.12",
|
"version": "2.5.12",
|
||||||
@@ -377,6 +310,18 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"@types/node": "*",
|
"@types/node": "*",
|
||||||
"form-data": "^3.0.0"
|
"form-data": "^3.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"form-data": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
|
||||||
|
"requires": {
|
||||||
|
"asynckit": "^0.4.0",
|
||||||
|
"combined-stream": "^1.0.8",
|
||||||
|
"mime-types": "^2.1.12"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/ws": {
|
"@types/ws": {
|
||||||
@@ -397,11 +342,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||||
},
|
},
|
||||||
"callsites": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
|
|
||||||
},
|
|
||||||
"combined-stream": {
|
"combined-stream": {
|
||||||
"version": "1.0.8",
|
"version": "1.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||||
@@ -416,49 +356,36 @@
|
|||||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||||
},
|
},
|
||||||
"discord-api-types": {
|
"discord-api-types": {
|
||||||
"version": "0.24.0",
|
"version": "0.26.1",
|
||||||
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.24.0.tgz",
|
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.26.1.tgz",
|
||||||
"integrity": "sha512-X0uA2a92cRjowUEXpLZIHWl4jiX1NsUpDhcEOpa1/hpO1vkaokgZ8kkPtPih9hHth5UVQ3mHBu/PpB4qjyfJ4A=="
|
"integrity": "sha512-T5PdMQ+Y1MEECYMV5wmyi9VEYPagEDEi4S0amgsszpWY0VB9JJ/hEvM6BgLhbdnKky4gfmZEXtEEtojN8ZKJQQ=="
|
||||||
},
|
},
|
||||||
"discord.js": {
|
"discord.js": {
|
||||||
"version": "13.3.1",
|
"version": "13.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-13.6.0.tgz",
|
||||||
"integrity": "sha512-zn4G8tL5+tMV00+0aSsVYNYcIfMSdT2g0nudKny+Ikd+XKv7m6bqI7n3Vji0GIRqXDr5ArPaw+iYFM2I1Iw3vg==",
|
"integrity": "sha512-tXNR8zgsEPxPBvGk3AQjJ9ljIIC6/LOPjzKwpwz8Y1Q2X66Vi3ZqFgRHYwnHKC0jC0F+l4LzxlhmOJsBZDNg9g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@discordjs/builders": "^0.8.1",
|
"@discordjs/builders": "^0.11.0",
|
||||||
"@discordjs/collection": "^0.3.2",
|
"@discordjs/collection": "^0.4.0",
|
||||||
"@discordjs/form-data": "^3.0.1",
|
"@sapphire/async-queue": "^1.1.9",
|
||||||
"@sapphire/async-queue": "^1.1.8",
|
|
||||||
"@types/node-fetch": "^2.5.12",
|
"@types/node-fetch": "^2.5.12",
|
||||||
"@types/ws": "^8.2.0",
|
"@types/ws": "^8.2.2",
|
||||||
"discord-api-types": "^0.24.0",
|
"discord-api-types": "^0.26.0",
|
||||||
|
"form-data": "^4.0.0",
|
||||||
"node-fetch": "^2.6.1",
|
"node-fetch": "^2.6.1",
|
||||||
"ws": "^8.2.3"
|
"ws": "^8.4.0"
|
||||||
}
|
|
||||||
},
|
|
||||||
"dot-prop": {
|
|
||||||
"version": "6.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
|
|
||||||
"integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
|
|
||||||
"requires": {
|
|
||||||
"is-obj": "^2.0.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"form-data": {
|
"form-data": {
|
||||||
"version": "3.0.1",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
||||||
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
|
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"asynckit": "^0.4.0",
|
"asynckit": "^0.4.0",
|
||||||
"combined-stream": "^1.0.8",
|
"combined-stream": "^1.0.8",
|
||||||
"mime-types": "^2.1.12"
|
"mime-types": "^2.1.12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-obj": {
|
|
||||||
"version": "2.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
|
|
||||||
"integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="
|
|
||||||
},
|
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
||||||
@@ -467,11 +394,6 @@
|
|||||||
"argparse": "^2.0.1"
|
"argparse": "^2.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lodash.isequal": {
|
|
||||||
"version": "4.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
|
|
||||||
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
|
|
||||||
},
|
|
||||||
"mime-db": {
|
"mime-db": {
|
||||||
"version": "1.51.0",
|
"version": "1.51.0",
|
||||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
|
||||||
@@ -486,26 +408,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node-fetch": {
|
"node-fetch": {
|
||||||
"version": "2.6.6",
|
"version": "2.6.7",
|
||||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz",
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||||
"integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==",
|
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"whatwg-url": "^5.0.0"
|
"whatwg-url": "^5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ow": {
|
|
||||||
"version": "0.27.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz",
|
|
||||||
"integrity": "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==",
|
|
||||||
"requires": {
|
|
||||||
"@sindresorhus/is": "^4.0.1",
|
|
||||||
"callsites": "^3.1.0",
|
|
||||||
"dot-prop": "^6.0.1",
|
|
||||||
"lodash.isequal": "^4.5.0",
|
|
||||||
"type-fest": "^1.2.1",
|
|
||||||
"vali-date": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tr46": {
|
"tr46": {
|
||||||
"version": "0.0.3",
|
"version": "0.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||||
@@ -521,16 +430,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
|
||||||
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
|
||||||
},
|
},
|
||||||
"type-fest": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA=="
|
|
||||||
},
|
|
||||||
"vali-date": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz",
|
|
||||||
"integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY="
|
|
||||||
},
|
|
||||||
"webidl-conversions": {
|
"webidl-conversions": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||||
@@ -546,10 +445,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ws": {
|
"ws": {
|
||||||
"version": "8.3.0",
|
"version": "8.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz",
|
||||||
"integrity": "sha512-Gs5EZtpqZzLvmIM59w4igITU57lrtYVFneaa434VROv4thzJyV6UjIL3D42lslWlI+D4KzLYnxSwtfuiO79sNw==",
|
"integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==",
|
||||||
"requires": {}
|
"requires": {}
|
||||||
|
},
|
||||||
|
"zod": {
|
||||||
|
"version": "3.11.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/zod/-/zod-3.11.6.tgz",
|
||||||
|
"integrity": "sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "supportbot",
|
"name": "supportbot",
|
||||||
"version": "7.4.0",
|
"version": "7.4.2",
|
||||||
"description": "SupportBot is an open-sourced support system for discord. It's completely free to use with high amounts of customization to match your own brand.",
|
"description": "SupportBot is an open-sourced support system for discord. It's completely free to use with high amounts of customization to match your own brand.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/Emerald-Services/SupportBot#readme",
|
"homepage": "https://github.com/Emerald-Services/SupportBot#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"discord.js": "^13.3.1",
|
"discord.js": "^13.6.0",
|
||||||
"js-yaml": "^4.1.0"
|
"js-yaml": "^4.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user