diff --git a/src/i18n/en-GB.yml b/src/i18n/en-GB.yml index b046dd2..cb608e4 100644 --- a/src/i18n/en-GB.yml +++ b/src/i18n/en-GB.yml @@ -161,7 +161,7 @@ log: delete: deleted update: updated ticket: - description: '{user} {verb} ticket' + description: '{user} {verb} a ticket' ticket: Ticket title: Ticket {verb} verb: @@ -178,6 +178,9 @@ misc: blocked: description: You are not allowed to create tickets. title: ❌ Blocked + missing_roles: + description: You do not have the roles required to be able to create a ticket in this category. + title: ❌ Insufficient roles no_categories: description: No ticket categories have been configured. title: ❌ There are no ticket categories diff --git a/src/lib/tickets/manager.js b/src/lib/tickets/manager.js index a3816f7..89c3bb1 100644 --- a/src/lib/tickets/manager.js +++ b/src/lib/tickets/manager.js @@ -112,10 +112,25 @@ module.exports = class TicketManager { ephemeral: true, }); } - } - // TODO: if member !required roles -> stop + if (category.requiredRoles.length !== 0) { + const missing = category.requiredRoles.some(r => !member.roles.cache.has(r)); + if (missing) { + return await interaction.reply({ + embeds: [ + new ExtendedEmbedBuilder({ + iconURL: interaction.guild.iconURL(), + text: category.guild.footer, + }) + .setColor(category.guild.errorColour) + .setTitle(getMessage('misc.missing_roles.title')) + .setDescription(getMessage('misc.missing_roles.description')), + ], + ephemeral: true, + }); + } + } // TODO: if discordCategory has 50 channels -> stop