diff --git a/src/client.js b/src/client.js index ce63190..dadd73a 100644 --- a/src/client.js +++ b/src/client.js @@ -47,6 +47,7 @@ module.exports = class Client extends FrameworkClient { locales[name] = YAML.parse(data); }); + this.keyv = new Keyv(); /** @type {I18n} */ this.i18n = new I18n('en-GB', locales); /** @type {TicketManager} */ @@ -54,6 +55,22 @@ module.exports = class Client extends FrameworkClient { this.config = config; this.log = log; this.supers = (process.env.SUPER ?? '').split(','); + /** @param {import('discord.js/typings').Interaction} interaction */ + this.commands.interceptor = async interaction => { + if (!interaction.inGuild()) return; + const id = interaction.guildId; + const cacheKey = `cache/known/guild:${id}`; + if (await this.keyv.has(cacheKey)) return; + await this.prisma.guild.upsert({ + create: { + id, + locale: this.i18n.locales.find(locale => locale === interaction.guild.preferredLocale), // undefined if not supported + }, + update: {}, + where: { id }, + }); + await this.keyv.set(cacheKey, true); + }; } async login(token) { @@ -91,7 +108,6 @@ module.exports = class Client extends FrameworkClient { }, ms('6h')); } - this.keyv = new Keyv(); return super.login(token); } diff --git a/src/i18n/en-GB.yml b/src/i18n/en-GB.yml index e3db6b5..378e959 100644 --- a/src/i18n/en-GB.yml +++ b/src/i18n/en-GB.yml @@ -365,7 +365,9 @@ misc: this category. title: ❌ Insufficient roles no_categories: - description: No ticket categories have been configured. + description: |- + No ticket categories have been configured. + Configure your server at {url}. title: ❌ There are no ticket categories not_ticket: description: You can only use this command in tickets. diff --git a/src/lib/tickets/utils.js b/src/lib/tickets/utils.js index 4949e05..21a74e8 100644 --- a/src/lib/tickets/utils.js +++ b/src/lib/tickets/utils.js @@ -33,7 +33,7 @@ module.exports = { new EmbedBuilder() .setColor(settings.errorColour) .setTitle(getMessage('misc.no_categories.title')) - .setDescription(getMessage('misc.no_categories.description')), + .setDescription(getMessage('misc.no_categories.description', { url: `${process.env.HTTP_EXTERNAL}/settings/${interaction.guildId}` })), ], ephemeral: true, }); @@ -73,4 +73,4 @@ module.exports = { }); } }, -}; \ No newline at end of file +}; diff --git a/src/listeners/client/messageCreate.js b/src/listeners/client/messageCreate.js index 96a31d0..189cc2f 100644 --- a/src/listeners/client/messageCreate.js +++ b/src/listeners/client/messageCreate.js @@ -38,7 +38,7 @@ module.exports = class extends Listener { new EmbedBuilder() .setColor(settings.errorColour) .setTitle(getMessage('misc.no_categories.title')) - .setDescription(getMessage('misc.no_categories.description')), + .setDescription(getMessage('misc.no_categories.description', { url: `${process.env.HTTP_EXTERNAL}/settings/${interaction.guildId}` })), ], }); } else if (settings.categories.length === 1) {