Skip to content

Commit

Permalink
Moved ticket config off of guild model and renamed refs
Browse files Browse the repository at this point in the history
  • Loading branch information
CuteNikki committed Oct 10, 2024
1 parent 709697c commit 740417c
Show file tree
Hide file tree
Showing 23 changed files with 323 additions and 236 deletions.
16 changes: 7 additions & 9 deletions src/interactions/buttons/ticket/claim.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { t } from 'i18next';

import { Button } from 'classes/button';

import { getGuildSettings } from 'db/guild';
import { claimTicket, findTicket } from 'db/ticket';
import { getGuildLanguage } from 'db/language';
import { claimTicket, findTicket, getTicketGroup } from 'db/ticket';

export default new Button({
customId: 'button-tickets-claim',
Expand All @@ -16,15 +16,13 @@ export default new Button({

const { user, guildId, channelId, customId, member } = interaction;

const currentConfig = await getGuildSettings(guildId);
const guildLng = await getGuildLanguage(guildId);

const guildLng = currentConfig.language;
const group = await getTicketGroup(customId.split('_')[1]);

const system = currentConfig.ticket.systems.find((system) => system._id.toString() === customId.split('_')[1]);

if (!system) {
if (!group) {
await interaction.reply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-system', { lng }))],
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-group', { lng }))],
ephemeral: true
});
return;
Expand All @@ -41,7 +39,7 @@ export default new Button({
}

if (!member.permissions.has(PermissionFlagsBits.Administrator)) {
if (!member.roles.cache.has(system.staffRoleId)) {
if (!member.roles.cache.has(group.staffRoleId)) {
await interaction.reply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.staff-only', { lng }))],
ephemeral: true
Expand Down
29 changes: 14 additions & 15 deletions src/interactions/buttons/ticket/close.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { t } from 'i18next';

import { Button } from 'classes/button';

import { getGuildSettings } from 'db/guild';
import { closeTicket, findTicket } from 'db/ticket';
import { getGuildLanguage } from 'db/language';
import { closeTicket, findTicket, getTicketGroup } from 'db/ticket';

import { logger } from 'utils/logger';

Expand All @@ -18,14 +18,13 @@ export default new Button({

const { user, guildId, channelId, customId, member } = interaction;

const currentConfig = await getGuildSettings(guildId);
const guildLng = await getGuildLanguage(guildId);

const guildLng = currentConfig.language;
const group = await getTicketGroup(customId.split('_')[1]);

const system = currentConfig.ticket.systems.find((system) => system._id.toString() === customId.split('_')[1]);
if (!system) {
if (!group) {
await interaction.reply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-system', { lng }))],
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-group', { lng }))],
ephemeral: true
});
return;
Expand All @@ -42,7 +41,7 @@ export default new Button({
}

if (!member.permissions.has(PermissionFlagsBits.Administrator)) {
if (!member.roles.cache.has(system.staffRoleId)) {
if (!member.roles.cache.has(group.staffRoleId)) {
await interaction.reply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.staff-only', { lng }))],
ephemeral: true
Expand All @@ -59,7 +58,7 @@ export default new Button({
}
}

const hasTranscriptChannel = system.transcriptChannelId ? true : false;
const hasTranscriptChannel = group.transcriptChannelId ? true : false;

if (ticket.closed) {
await interaction.reply({
Expand All @@ -68,12 +67,12 @@ export default new Button({
? [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId(`button-tickets-save_${system._id.toString()}`)
.setCustomId(`button-tickets-save_${group._id.toString()}`)
.setLabel(t('ticket.save', { lng: guildLng }))
.setEmoji('💾')
.setStyle(ButtonStyle.Success),
new ButtonBuilder()
.setCustomId(`button-tickets-delete_${system._id.toString()}`)
.setCustomId(`button-tickets-delete_${group._id.toString()}`)
.setLabel(t('ticket.delete', { lng: guildLng }))
.setEmoji('🗑️')
.setStyle(ButtonStyle.Danger)
Expand All @@ -82,7 +81,7 @@ export default new Button({
: [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId(`button-tickets-delete_${system._id.toString()}`)
.setCustomId(`button-tickets-delete_${group._id.toString()}`)
.setLabel(t('ticket.delete', { lng: guildLng }))
.setEmoji('🗑️')
.setStyle(ButtonStyle.Danger)
Expand Down Expand Up @@ -112,12 +111,12 @@ export default new Button({
? [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId(`button-tickets-save_${system._id.toString()}`)
.setCustomId(`button-tickets-save_${group._id.toString()}`)
.setLabel(t('ticket.save', { lng: guildLng }))
.setEmoji('🗂️')
.setStyle(ButtonStyle.Success),
new ButtonBuilder()
.setCustomId(`button-tickets-delete_${system._id.toString()}`)
.setCustomId(`button-tickets-delete_${group._id.toString()}`)
.setLabel(t('ticket.delete', { lng: guildLng }))
.setEmoji('✖️')
.setStyle(ButtonStyle.Danger)
Expand All @@ -126,7 +125,7 @@ export default new Button({
: [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId(`button-tickets-delete_${system._id.toString()}`)
.setCustomId(`button-tickets-delete_${group._id.toString()}`)
.setLabel(t('ticket.delete', { lng: guildLng }))
.setEmoji('🗑️')
.setStyle(ButtonStyle.Danger)
Expand Down
41 changes: 23 additions & 18 deletions src/interactions/buttons/ticket/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { t } from 'i18next';

import { Button } from 'classes/button';

import { getGuildSettings } from 'db/guild';
import { createTicket, deleteTicketById, getTicketsByUser } from 'db/ticket';
import { getGuildLanguage } from 'db/language';
import { createTicket, deleteTicketById, getTicketConfig, getTicketGroup, getTicketsByUser } from 'db/ticket';

import { logger } from 'utils/logger';

Expand All @@ -21,15 +21,20 @@ export default new Button({
const { user, guildId, customId, guild } = interaction;
const choiceIndex = parseInt(customId.split('_')[2]);

const currentConfig = await getGuildSettings(guildId);
const config = await getTicketConfig(guildId);

const guildLng = currentConfig.language;
if (!config?.enabled) {
await interaction.editReply({ embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.create-disabled', { lng }))] });
return;
}

const guildLng = await getGuildLanguage(guildId);

const system = currentConfig.ticket.systems.find((system) => system._id.toString() === customId.split('_')[1]);
const group = await getTicketGroup(customId.split('_')[1]);

if (!system) {
if (!group) {
await interaction.editReply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-system', { lng }))],
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-group', { lng }))]
});
return;
}
Expand All @@ -44,16 +49,16 @@ export default new Button({
}
}

if (tickets.length >= system.maxTickets) {
if (tickets.length >= group.maxTickets) {
await interaction.editReply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.limit', { lng, limit: system.maxTickets.toString() }))]
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.limit', { lng, limit: group.maxTickets.toString() }))]
});
return;
}

const choice = system.choices[choiceIndex];
const choice = group.choices[choiceIndex];

if (!system.choices.length || !choice) {
if (!group.choices.length || !choice) {
await interaction.editReply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-option', { lng }))]
});
Expand All @@ -64,15 +69,15 @@ export default new Button({
.create({
name: `${user.username}-${choice.label}`,
type: ChannelType.GuildText,
parent: system.parentChannelId,
parent: group.parentChannelId,
permissionOverwrites: [
{
id: guildId,
type: 0,
deny: [PermissionFlagsBits.ViewChannel]
},
{
id: system.staffRoleId,
id: group.staffRoleId,
type: 0,
allow: [PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages, PermissionFlagsBits.EmbedLinks, PermissionFlagsBits.AttachFiles]
},
Expand Down Expand Up @@ -103,31 +108,31 @@ export default new Button({

await channel
.send({
content: `${interaction.user} | <@&${system.staffRoleId}>`,
content: `${interaction.user} | <@&${group.staffRoleId}>`,
embeds: [
new EmbedBuilder().setColor(client.colors.ticket).setDescription(`${t('ticket.created-channel', { lng: guildLng, createdBy: user.toString() })}`)
],
components: [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId(`button-tickets-claim_${system._id.toString()}`)
.setCustomId(`button-tickets-claim_${group._id.toString()}`)
.setLabel(t('ticket.claim', { lng: guildLng }))
.setEmoji('✋')
.setStyle(ButtonStyle.Success),
new ButtonBuilder()
.setCustomId(`button-tickets-close_${system._id.toString()}`)
.setCustomId(`button-tickets-close_${group._id.toString()}`)
.setLabel(t('ticket.close', { lng: guildLng }))
.setEmoji('🛑')
.setStyle(ButtonStyle.Danger),
new ButtonBuilder()
.setCustomId(`button-tickets-lock_${system._id.toString()}`)
.setCustomId(`button-tickets-lock_${group._id.toString()}`)
.setLabel(t('ticket.lock', { lng: guildLng }))
.setEmoji('🔐')
.setStyle(ButtonStyle.Primary)
),
new ActionRowBuilder<UserSelectMenuBuilder>().addComponents(
new UserSelectMenuBuilder()
.setCustomId(`selection-tickets-user_${system._id.toString()}`)
.setCustomId(`selection-tickets-user_${group._id.toString()}`)
.setPlaceholder(t('ticket.user-select', { lng: guildLng }))
.setMaxValues(1)
)
Expand Down
20 changes: 9 additions & 11 deletions src/interactions/buttons/ticket/delete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { t } from 'i18next';

import { Button } from 'classes/button';

import { getGuildSettings } from 'db/guild';
import { deleteTicketById, findTicket } from 'db/ticket';
import { getGuildLanguage } from 'db/language';
import { deleteTicketById, findTicket, getTicketGroup } from 'db/ticket';

import { logger } from 'utils/logger';

Expand All @@ -18,15 +18,13 @@ export default new Button({

const { guildId, channelId, customId, user, member } = interaction;

const currentConfig = await getGuildSettings(guildId);
const guildLng = await getGuildLanguage(guildId);

const guildLng = currentConfig.language;
const group = await getTicketGroup(customId.split('_')[1]);

const system = currentConfig.ticket.systems.find((system) => system._id.toString() === customId.split('_')[1]);

if (!system) {
if (!group) {
await interaction.reply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-system', { lng }))],
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-group', { lng }))],
ephemeral: true
});
return;
Expand All @@ -43,7 +41,7 @@ export default new Button({
}

if (!member.permissions.has(PermissionFlagsBits.Administrator)) {
if (!member.roles.cache.has(system.staffRoleId)) {
if (!member.roles.cache.has(group.staffRoleId)) {
await interaction.reply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.staff-only', { lng }))],
ephemeral: true
Expand All @@ -52,7 +50,7 @@ export default new Button({
}
}

const hasTranscriptChannel = system.transcriptChannelId ? true : false;
const hasTranscriptChannel = group.transcriptChannelId ? true : false;

const description = [t('ticket.ticket_deleted', { lng: guildLng, deletedBy: user.toString() }), t('ticket.delete-time', { lng: guildLng })].join('\n');

Expand All @@ -66,7 +64,7 @@ export default new Button({
? [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId(`button-tickets-save_${system._id.toString()}`)
.setCustomId(`button-tickets-save_${group._id.toString()}`)
.setLabel(t('ticket.save', { lng: guildLng }))
.setEmoji('🗂️')
.setStyle(ButtonStyle.Success)
Expand Down
20 changes: 9 additions & 11 deletions src/interactions/buttons/ticket/lock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { t } from 'i18next';

import { Button } from 'classes/button';

import { getGuildSettings } from 'db/guild';
import { findTicket, lockTicket } from 'db/ticket';
import { getGuildLanguage } from 'db/language';
import { findTicket, getTicketGroup, lockTicket } from 'db/ticket';

import { logger } from 'utils/logger';

Expand All @@ -18,15 +18,13 @@ export default new Button({

const { user, guildId, channelId, customId, member } = interaction;

const currentConfig = await getGuildSettings(guildId);
const guildLng = await getGuildLanguage(guildId);

const guildLng = currentConfig.language;
const group = await getTicketGroup(customId.split('_')[1]);

const system = currentConfig.ticket.systems.find((system) => system._id.toString() === customId.split('_')[1]);

if (!system) {
if (!group) {
await interaction.reply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-system', { lng }))],
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.invalid-group', { lng }))],
ephemeral: true
});
return;
Expand All @@ -43,7 +41,7 @@ export default new Button({
}

if (!member.permissions.has(PermissionFlagsBits.Administrator)) {
if (!member.roles.cache.has(system.staffRoleId)) {
if (!member.roles.cache.has(group.staffRoleId)) {
await interaction.reply({
embeds: [new EmbedBuilder().setColor(client.colors.error).setDescription(t('ticket.staff-only', { lng }))],
ephemeral: true
Expand Down Expand Up @@ -96,12 +94,12 @@ export default new Button({
components: [
new ActionRowBuilder<ButtonBuilder>().addComponents(
new ButtonBuilder()
.setCustomId(`button-tickets-unlock_${system._id.toString()}`)
.setCustomId(`button-tickets-unlock_${group._id.toString()}`)
.setLabel(t('ticket.unlock', { lng: guildLng }))
.setEmoji('🔓')
.setStyle(ButtonStyle.Success),
new ButtonBuilder()
.setCustomId(`button-tickets-close_${system._id.toString()}`)
.setCustomId(`button-tickets-close_${group._id.toString()}`)
.setLabel(t('ticket.close', { lng: guildLng }))
.setEmoji('🛑')
.setStyle(ButtonStyle.Danger)
Expand Down
Loading

0 comments on commit 740417c

Please sign in to comment.