Files

119 lines
3.9 KiB
JavaScript
Raw Permalink Normal View History

2024-07-09 22:49:49 +01:00
const fs = require("fs");
const {
EmbedBuilder,
ApplicationCommandOptionType,
ApplicationCommandType,
2024-10-10 19:14:45 +01:00
ChannelType,
2025-09-20 23:09:22 +01:00
MessageFlags,
2024-07-09 22:49:49 +01:00
} = require("discord.js");
const yaml = require("js-yaml");
const supportbot = yaml.load(fs.readFileSync("./Configs/supportbot.yml", "utf8"));
const msgconfig = yaml.load(fs.readFileSync("./Configs/messages.yml", "utf8"));
const cmdconfig = yaml.load(fs.readFileSync("./Configs/commands.yml", "utf8"));
2025-09-20 23:09:22 +01:00
const Command = require("../../Structures/Command.js");
const db = require("../../Structures/Database.js");
2024-07-09 22:49:49 +01:00
module.exports = new Command({
name: cmdconfig.ForceAddUser.Command,
description: cmdconfig.ForceAddUser.Description,
type: ApplicationCommandType.ChatInput,
options: [
{
name: "user",
2024-10-10 19:14:45 +01:00
description: "The user to forcefully add",
2024-07-09 22:49:49 +01:00
type: ApplicationCommandOptionType.User,
required: true,
},
],
permissions: cmdconfig.ForceAddUser.Permission,
async run(interaction) {
const userToAdd = interaction.options.getUser("user");
const ticketChannel = interaction.channel;
2024-10-10 19:14:45 +01:00
if (
(supportbot.Ticket.TicketType === "threads" && !ticketChannel.isThread()) ||
(supportbot.Ticket.TicketType === "channels" && ticketChannel.type !== ChannelType.GuildText)
) {
2024-07-09 22:49:49 +01:00
const onlyInTicket = new EmbedBuilder()
.setTitle(msgconfig.ForceAddUser.NotInTicket_Title)
.setDescription(msgconfig.ForceAddUser.NotInTicket_Description)
.setColor(supportbot.Embed.Colours.Error);
return interaction.reply({
embeds: [onlyInTicket],
2025-09-20 23:09:22 +01:00
flags: MessageFlags.Ephemeral,
2024-07-09 22:49:49 +01:00
});
}
2025-09-20 23:09:22 +01:00
const ticketRow = db.getTicket(ticketChannel.id);
if (!ticketRow) {
const notFound = new EmbedBuilder()
.setTitle(msgconfig.ForceAddUser.NotInTicket_Title)
.setDescription(msgconfig.ForceAddUser.NotInTicket_Description)
.setColor(supportbot.Embed.Colours.Error);
2024-10-10 19:14:45 +01:00
2025-09-20 23:09:22 +01:00
return interaction.reply({
embeds: [notFound],
flags: MessageFlags.Ephemeral,
});
}
2024-10-10 19:14:45 +01:00
2025-09-20 23:09:22 +01:00
try {
if (supportbot.Ticket.TicketType === "threads") {
const botMember = await ticketChannel.members.fetch(interaction.client.user.id).catch(() => null);
if (!botMember) await ticketChannel.join();
await new Promise(res => setTimeout(res, 1000));
await ticketChannel.members.add(userToAdd.id);
2024-10-10 19:14:45 +01:00
} else if (supportbot.Ticket.TicketType === "channels") {
await ticketChannel.permissionOverwrites.create(userToAdd.id, {
ViewChannel: true,
SendMessages: true,
ReadMessageHistory: true,
2025-09-20 23:09:22 +01:00
});
2024-10-10 19:14:45 +01:00
}
2024-07-09 22:49:49 +01:00
2025-09-20 23:09:22 +01:00
db.addUserToTicket(ticketChannel.id, userToAdd.id);
2024-07-09 22:49:49 +01:00
const addedEmbed = new EmbedBuilder()
.setTitle(msgconfig.ForceAddUser.Added_Title)
2024-10-10 19:14:45 +01:00
.setDescription(
msgconfig.ForceAddUser.Added_Description.replace("%username%", userToAdd.username)
)
2024-07-09 22:49:49 +01:00
.setColor(supportbot.Embed.Colours.Success);
await interaction.reply({
embeds: [addedEmbed],
2025-09-20 23:09:22 +01:00
flags: MessageFlags.Ephemeral,
2024-07-09 22:49:49 +01:00
});
const addedToTicketEmbed = new EmbedBuilder()
.setTitle(msgconfig.ForceAddUser.AddedToTicket_Title)
2024-10-10 19:14:45 +01:00
.setDescription(
msgconfig.ForceAddUser.AddedToTicket_Description.replace(
"%channel_link%",
`[${ticketChannel.name}](https://discord.com/channels/${ticketChannel.guild.id}/${ticketChannel.id})`
)
)
2024-07-09 22:49:49 +01:00
.setColor(supportbot.Embed.Colours.General);
await userToAdd.send({
embeds: [addedToTicketEmbed],
});
} catch (err) {
console.error("Error adding user to the ticket:", err);
const errorEmbed = new EmbedBuilder()
.setTitle(msgconfig.ForceAddUser.Error_Title)
.setDescription(msgconfig.ForceAddUser.Error_Adding)
.setColor(supportbot.Embed.Colours.Error);
await interaction.reply({
embeds: [errorEmbed],
2025-09-20 23:09:22 +01:00
flags: MessageFlags.Ephemeral,
2024-07-09 22:49:49 +01:00
});
}
},
});