Files
SupportBot/Events/interactionCreate.js
T

332 lines
11 KiB
JavaScript
Raw Permalink Normal View History

2021-10-24 22:48:25 +01:00
// SupportBot | Emerald Services
// Interaction Create Event
const fs = require("fs");
const Discord = require("discord.js");
const yaml = require("js-yaml");
2021-10-27 19:30:10 -05:00
const supportbot = yaml.load(
fs.readFileSync("./Configs/supportbot.yml", "utf8")
);
const cmdconfig = yaml.load(fs.readFileSync("./Configs/commands.yml", "utf8"));
2021-10-24 22:48:25 +01:00
const Event = require("../Structures/Event.js");
2022-12-07 20:36:04 +01:00
const TicketNumberID = require("../Structures/TicketID.js");
2021-10-24 22:48:25 +01:00
2021-11-10 21:41:12 -06:00
module.exports = new Event("interactionCreate", async (client, interaction) => {
2021-10-24 22:48:25 +01:00
if (interaction.isCommand()) {
const command = client.commands.find(
2022-02-04 17:49:02 -06:00
(cmd) => cmd.name.toLowerCase() === interaction.commandName
2021-10-24 22:48:25 +01:00
);
2021-11-23 18:08:45 -06:00
if (interaction.user.bot || !interaction.guild) return;
2021-10-24 22:48:25 +01:00
const NotValid = new Discord.MessageEmbed()
.setDescription(`:x: \`Invalid Command\` `)
.setColor(supportbot.ErrorColour);
if (!command)
return interaction.reply({
embeds: [NotValid],
});
2022-02-04 17:49:02 -06:00
const permission = interaction.member.permissions.has(command.permissions);
2021-10-24 22:48:25 +01:00
const ValidPerms = new Discord.MessageEmbed()
.setDescription(
":x: `Invalid Permissions` Do you have the correct permissions to execute this command?"
)
.setColor(supportbot.ErrorColour);
if (!permission)
return interaction.reply({
embeds: [ValidPerms],
});
command.run(interaction);
}
if (interaction.isButton()) {
2022-02-04 17:49:02 -06:00
if (
interaction.customId === "openticket" ||
interaction.customId.includes("department-")
) {
2021-10-24 22:48:25 +01:00
try {
const cmd = client.commands.get(cmdconfig.OpenTicket);
if (!cmd) return;
cmd.run(interaction);
} catch (error) {
console.error(error);
}
}
if (interaction.customId === "ticketclose") {
2021-11-23 18:08:45 -06:00
try {
const cmd = client.commands.get(cmdconfig.CloseTicket);
if (!cmd) return;
cmd.run(interaction);
} catch (error) {
console.error(error);
2021-10-24 22:48:25 +01:00
}
}
if (interaction.customId === "ticketlock") {
2022-02-11 23:47:06 -06:00
if (interaction.channel.name.startsWith(supportbot.TicketPrefix)) {
2021-10-24 22:48:25 +01:00
interaction.message.fetch();
let Admin =
interaction.guild.roles.cache.find(
(AdminUser) => AdminUser.name === supportbot.Admin
) ||
interaction.guild.roles.cache.find(
(AdminUser) => AdminUser.id === supportbot.Admin
);
2021-11-10 21:41:12 -06:00
if (!interaction.member.roles.cache.has(Admin.id)) {
return await interaction.reply({
content: "You don't have permission to do that.",
ephemeral: true,
});
}
2021-10-24 22:48:25 +01:00
let all = interaction.channel.permissionOverwrites.cache;
let parent =
interaction.guild.channels.cache.find(
2022-02-11 23:47:06 -06:00
(c) => c.name === supportbot.LockTicketCategory
2021-10-24 22:48:25 +01:00
) ||
interaction.guild.channels.cache.find(
2022-02-11 23:47:06 -06:00
(c) => c.id === supportbot.LockTicketCategory
2021-10-24 22:48:25 +01:00
);
if (parent) {
2022-02-04 17:49:02 -06:00
await interaction.channel.setParent(parent.id);
2021-10-24 22:48:25 +01:00
}
all.forEach((perm) => {
interaction.channel.permissionOverwrites.delete(perm.id);
});
2022-02-04 17:49:02 -06:00
await interaction.channel.permissionOverwrites.create(Admin.id, {
2021-10-24 22:48:25 +01:00
VIEW_CHANNEL: true,
});
2022-02-04 17:49:02 -06:00
await interaction.channel.permissionOverwrites.create(
interaction.guild.id,
{
VIEW_CHANNEL: false,
}
);
2021-10-24 22:48:25 +01:00
const ticketDeleteButton = new Discord.MessageButton()
.setCustomId("ticketclose")
.setLabel("Close")
.setStyle(supportbot.TicketDeleteColour)
.setEmoji(supportbot.TicketDeleteEmoji);
2023-04-20 21:07:09 +02:00
const ticketUnlockButton = new Discord.MessageButton()
.setCustomId("ticketunlock")
.setLabel("Unlock")
.setStyle(supportbot.TicketUnlockColour)
.setEmoji(supportbot.TicketUnlockEmoji);
2021-10-24 22:48:25 +01:00
const row = new Discord.MessageActionRow().addComponents(
2023-04-20 21:07:09 +02:00
ticketDeleteButton, ticketUnlockButton
2021-10-24 22:48:25 +01:00
);
const ArchiveEmbed = new Discord.MessageEmbed()
.setTitle("Archived")
.setDescription(`Archived ${interaction.channel.name}`)
2022-02-11 23:47:06 -06:00
.setColor(supportbot.SuccessColour);
2021-10-24 22:48:25 +01:00
2021-11-10 21:41:12 -06:00
interaction.reply({ embeds: [ArchiveEmbed] });
2021-10-24 22:48:25 +01:00
interaction.message.edit({ components: [row] });
}
}
2023-04-20 21:07:09 +02:00
if (interaction.customId === "ticketunlock") {
if (interaction.channel.name.startsWith(supportbot.TicketPrefix)) {
interaction.message.fetch();
let Admin =
interaction.guild.roles.cache.find(
(AdminUser) => AdminUser.name === supportbot.Admin
) ||
interaction.guild.roles.cache.find(
(AdminUser) => AdminUser.id === supportbot.Admin
);
if (!interaction.member.roles.cache.has(Admin.id)) {
return await interaction.reply({
content: "You don't have permission to do that.",
ephemeral: true,
});
}
let all = interaction.channel.permissionOverwrites.cache;
let parent =
interaction.guild.channels.cache.find(
(c) => c.name === supportbot.UnlockTicketCategory
) ||
interaction.guild.channels.cache.find(
(c) => c.id === supportbot.UnlockTicketCategory
);
if (parent) {
await interaction.channel.setParent(parent.id);
}
all.forEach((perm) => {
interaction.channel.permissionOverwrites.create(perm.id, {
VIEW_CHANNEL: true,
});
});
await interaction.channel.permissionOverwrites.create(Admin.id, {
VIEW_CHANNEL: true,
});
await interaction.channel.permissionOverwrites.create(
interaction.guild.id,
{
VIEW_CHANNEL: false,
}
);
const CloseButton = new Discord.MessageButton()
.setCustomId("ticketclose")
.setLabel("Close")
.setStyle(supportbot.TicketCloseColour)
.setEmoji(supportbot.TicketCloseEmoji);
const LockButton = new Discord.MessageButton()
.setCustomId("ticketlock")
.setLabel("Lock")
.setStyle(supportbot.TicketLockColour)
.setEmoji(supportbot.TicketLockEmoji);
const TicketClaimButton = new Discord.MessageButton()
.setCustomId("ticketclaim")
.setLabel("Claim")
.setStyle(supportbot.TicketClaimColour)
.setEmoji(supportbot.TicketClaimEmoji);
const row = new Discord.MessageActionRow().addComponents(
CloseButton, LockButton, TicketClaimButton
);
const ArchiveEmbed = new Discord.MessageEmbed()
.setTitle("Unarchived")
.setDescription(`Unarchived ${interaction.channel.name}`)
.setColor(supportbot.SuccessColour);
interaction.reply({ embeds: [ArchiveEmbed] });
interaction.message.edit({ components: [row] });
}
}
2022-12-07 20:36:04 +01:00
if (interaction.customId === "ticketclaim") {
if (interaction.channel.name.startsWith(supportbot.TicketPrefix)) {
const Staff = await interaction.client.getRole(supportbot.Staff, interaction.guild);
interaction.message.fetch();
let User = interaction.guild.members.cache.get(interaction.user.id);
let Admin =
interaction.guild.roles.cache.find(
(AdminUser) => AdminUser.name === supportbot.Admin
) ||
interaction.guild.roles.cache.find(
(AdminUser) => AdminUser.id === supportbot.Admin
);
if (!interaction.member.roles.cache.has(Admin.id)) {
return await interaction.reply({
content: "You don't have permission to do that.",
ephemeral: true,
});
}
let all = interaction.channel.permissionOverwrites.cache;
2023-04-20 21:07:09 +02:00
const ticketUnclaimButton = new Discord.MessageButton()
.setCustomId("ticketunclaim")
.setLabel("Unclaim")
.setStyle(supportbot.TicketUnclaimColour)
.setEmoji(supportbot.TicketUnclaimEmoji);
const CloseButton = new Discord.MessageButton()
.setCustomId("ticketclose")
.setLabel("Close")
.setStyle(supportbot.TicketCloseColour)
.setEmoji(supportbot.TicketCloseEmoji);
const LockButton = new Discord.MessageButton()
.setCustomId("ticketlock")
.setLabel("Lock")
.setStyle(supportbot.TicketLockColour)
.setEmoji(supportbot.TicketLockEmoji);
const row = new Discord.MessageActionRow().addComponents(
CloseButton, LockButton, ticketUnclaimButton
);
2022-12-07 20:36:04 +01:00
const ArchiveEmbed = new Discord.MessageEmbed()
.setTitle(supportbot.TicketClaimTitle)
.setDescription(supportbot.TicketClaimMessage + " <@" + interaction.user.id + ">")
.setColor(supportbot.EmbedColour);
2023-04-20 21:07:09 +02:00
interaction.reply({ embeds: [ArchiveEmbed]});
interaction.message.edit({ components: [row] });
2022-12-07 20:36:04 +01:00
await interaction.channel.permissionOverwrites.edit(Staff.id, {
VIEW_CHANNEL: true,
SEND_MESSAGES: false,
});
}
await interaction.channel.permissionOverwrites.edit(interaction.user.id, {
VIEW_CHANNEL: true,
SEND_MESSAGES: true,
});
}
}
2023-04-20 21:07:09 +02:00
if (interaction.customId === "ticketunclaim") {
if (interaction.channel.name.startsWith(supportbot.TicketPrefix)) {
const Staff = await interaction.client.getRole(supportbot.Staff, interaction.guild);
interaction.message.fetch();
let User = interaction.guild.members.cache.get(interaction.user.id);
let Admin =
interaction.guild.roles.cache.find(
(AdminUser) => AdminUser.name === supportbot.Admin
) ||
interaction.guild.roles.cache.find(
(AdminUser) => AdminUser.id === supportbot.Admin
);
if (!interaction.member.roles.cache.has(Admin.id)) {
return await interaction.reply({
content: "You don't have permission to do that.",
ephemeral: true,
});
}
let all = interaction.channel.permissionOverwrites.cache;
const CloseButton = new Discord.MessageButton()
.setCustomId("ticketclose")
.setLabel("Close")
.setStyle(supportbot.TicketCloseColour)
.setEmoji(supportbot.TicketCloseEmoji);
const LockButton = new Discord.MessageButton()
.setCustomId("ticketlock")
.setLabel("Lock")
.setStyle(supportbot.TicketLockColour)
.setEmoji(supportbot.TicketLockEmoji);
const TicketClaimButton = new Discord.MessageButton()
.setCustomId("ticketclaim")
.setLabel("Claim")
.setStyle(supportbot.TicketClaimColour)
.setEmoji(supportbot.TicketClaimEmoji);
const row = new Discord.MessageActionRow().addComponents(
CloseButton, LockButton, TicketClaimButton
);
const ArchiveEmbed = new Discord.MessageEmbed()
.setTitle(supportbot.TicketUnclaimTitle)
.setDescription(supportbot.TicketUnclaimMessage + " <@" + interaction.user.id + ">")
.setColor(supportbot.EmbedColour);
interaction.reply({ embeds: [ArchiveEmbed]});
interaction.message.edit({ components: [row] });
await interaction.channel.permissionOverwrites.edit(Staff.id, {
VIEW_CHANNEL: true,
SEND_MESSAGES: true,
});
}
await interaction.channel.permissionOverwrites.edit(interaction.user.id, {
VIEW_CHANNEL: true,
SEND_MESSAGES: true,
});
}
}
);