Skip to content

Commit

Permalink
refactor: simplify commands i18n
Browse files Browse the repository at this point in the history
  • Loading branch information
eartharoid committed Oct 26, 2022
1 parent c6f1261 commit 1843400
Show file tree
Hide file tree
Showing 16 changed files with 263 additions and 463 deletions.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@
"@discord-tickets/settings": "^1.1.5",
"@eartharoid/dbf": "^0.3.3",
"@eartharoid/dtf": "^2.0.1",
"@eartharoid/i18n": "^1.1.0",
"@eartharoid/i18n": "^1.2.1",
"@fastify/cookie": "^6.0.0",
"@fastify/cors": "^8.1.0",
"@fastify/cors": "^8.1.1",
"@fastify/http-proxy": "^8.2.3",
"@fastify/jwt": "^5.0.1",
"@fastify/oauth2": "^5.1.0",
Expand Down Expand Up @@ -67,7 +67,7 @@
},
"devDependencies": {
"all-contributors-cli": "^6.24.0",
"eslint": "^8.25.0",
"eslint": "^8.26.0",
"eslint-plugin-unused-imports": "^2.0.0",
"nodemon": "^2.0.20"
},
Expand Down
62 changes: 23 additions & 39 deletions src/commands/slash/add.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,32 @@ const { ApplicationCommandOptionType } = require('discord.js');

module.exports = class AddSlashCommand extends SlashCommand {
constructor(client, options) {
const descriptionLocalizations = {};
client.i18n.locales.forEach(l => (descriptionLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.add.description')));

const nameLocalizations = {};
client.i18n.locales.forEach(l => (nameLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.add.name')));

let opts = [
{
name: 'member',
required: true,
type: ApplicationCommandOptionType.User,
},
{
autocomplete: true,
name: 'ticket',
required: false,
type: ApplicationCommandOptionType.String,
},
];
opts = opts.map(o => {
const descriptionLocalizations = {};
client.i18n.locales.forEach(l => (descriptionLocalizations[l] = client.i18n.getMessage(l, `commands.slash.add.options.${o.name}.description`)));

const nameLocalizations = {};
client.i18n.locales.forEach(l => (nameLocalizations[l] = client.i18n.getMessage(l, `commands.slash.add.options.${o.name}.name`)));

return {
...o,
description: descriptionLocalizations['en-GB'],
descriptionLocalizations,
nameLocalizations: nameLocalizations,
};
});

const name = 'add';
super(client, {
...options,
description: descriptionLocalizations['en-GB'],
descriptionLocalizations,
description: client.i18n.getMessage(null, `commands.slash.${name}.description`),
descriptionLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.description`),
dmPermission: false,
name: nameLocalizations['en-GB'],
nameLocalizations,
options: opts,
name,
nameLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.name`),
options: [
{
name: 'member',
required: true,
type: ApplicationCommandOptionType.User,
},
{
autocomplete: true,
name: 'ticket',
required: false,
type: ApplicationCommandOptionType.String,
},
].map(option => {
option.descriptionLocalizations = client.i18n.getAllMessages(`commands.slash.${name}.options.${option.name}.description`);
option.description = option.descriptionLocalizations['en-GB'];
option.nameLocalizations = client.i18n.getAllMessages(`commands.slash.${name}.options.${option.name}.name`);
return option;
}),
});
}

Expand Down
15 changes: 5 additions & 10 deletions src/commands/slash/claim.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,14 @@ const { SlashCommand } = require('@eartharoid/dbf');

module.exports = class ClaimSlashCommand extends SlashCommand {
constructor(client, options) {
const descriptionLocalizations = {};
client.i18n.locales.forEach(l => (descriptionLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.claim.description')));

const nameLocalizations = {};
client.i18n.locales.forEach(l => (nameLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.claim.name')));

const name = 'claim';
super(client, {
...options,
description: descriptionLocalizations['en-GB'],
descriptionLocalizations,
description: client.i18n.getMessage(null, `commands.slash.${name}.description`),
descriptionLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.description`),
dmPermission: false,
name: nameLocalizations['en-GB'],
nameLocalizations,
name,
nameLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.name`),
});
}

Expand Down
62 changes: 23 additions & 39 deletions src/commands/slash/close.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,32 @@ const { ApplicationCommandOptionType } = require('discord.js');

module.exports = class CloseSlashCommand extends SlashCommand {
constructor(client, options) {
const descriptionLocalizations = {};
client.i18n.locales.forEach(l => (descriptionLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.close.description')));

const nameLocalizations = {};
client.i18n.locales.forEach(l => (nameLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.close.name')));

let opts = [
{
name: 'reason',
required: false,
type: ApplicationCommandOptionType.String,
},
{
autocomplete: true,
name: 'ticket',
required: false,
type: ApplicationCommandOptionType.String,
},
];
opts = opts.map(o => {
const descriptionLocalizations = {};
client.i18n.locales.forEach(l => (descriptionLocalizations[l] = client.i18n.getMessage(l, `commands.slash.close.options.${o.name}.description`)));

const nameLocalizations = {};
client.i18n.locales.forEach(l => (nameLocalizations[l] = client.i18n.getMessage(l, `commands.slash.close.options.${o.name}.name`)));

return {
...o,
description: descriptionLocalizations['en-GB'],
descriptionLocalizations,
nameLocalizations: nameLocalizations,
};
});

const name = 'close';
super(client, {
...options,
description: descriptionLocalizations['en-GB'],
descriptionLocalizations,
description: client.i18n.getMessage(null, `commands.slash.${name}.description`),
descriptionLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.description`),
dmPermission: false,
name: nameLocalizations['en-GB'],
nameLocalizations,
options: opts,
name,
nameLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.name`),
options: [
{
name: 'reason',
required: false,
type: ApplicationCommandOptionType.String,
},
{
autocomplete: true,
name: 'ticket',
required: false,
type: ApplicationCommandOptionType.String,
},
].map(option => {
option.descriptionLocalizations = client.i18n.getAllMessages(`commands.slash.${name}.options.${option.name}.description`);
option.description = option.descriptionLocalizations['en-GB'];
option.nameLocalizations = client.i18n.getAllMessages(`commands.slash.${name}.options.${option.name}.name`);
return option;
}),
});
}

Expand Down
84 changes: 34 additions & 50 deletions src/commands/slash/force-close.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,59 +12,43 @@ const ms = require('ms');

module.exports = class ForceCloseSlashCommand extends SlashCommand {
constructor(client, options) {
const descriptionLocalizations = {};
client.i18n.locales.forEach(l => (descriptionLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.force-close.description')));

const nameLocalizations = {};
client.i18n.locales.forEach(l => (nameLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.force-close.name')));

let opts = [
{
autocomplete: true,
name: 'category',
required: false,
type: ApplicationCommandOptionType.Integer,
},
{
name: 'reason',
required: false,
type: ApplicationCommandOptionType.String,
},
{
autocomplete: true,
name: 'ticket',
required: false,
type: ApplicationCommandOptionType.String,
},
{
name: 'time',
required: false,
type: ApplicationCommandOptionType.String,
},
];
opts = opts.map(o => {
const descriptionLocalizations = {};
client.i18n.locales.forEach(l => (descriptionLocalizations[l] = client.i18n.getMessage(l, `commands.slash.force-close.options.${o.name}.description`)));

const nameLocalizations = {};
client.i18n.locales.forEach(l => (nameLocalizations[l] = client.i18n.getMessage(l, `commands.slash.force-close.options.${o.name}.name`)));

return {
...o,
description: descriptionLocalizations['en-GB'],
descriptionLocalizations,
nameLocalizations: nameLocalizations,
};
});

const name = 'force-close';
super(client, {
...options,
description: descriptionLocalizations['en-GB'],
descriptionLocalizations,
description: client.i18n.getMessage(null, `commands.slash.${name}.description`),
descriptionLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.description`),
dmPermission: false,
name: nameLocalizations['en-GB'],
nameLocalizations,
options: opts,
name,
nameLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.name`),
options: [
{
autocomplete: true,
name: 'category',
required: false,
type: ApplicationCommandOptionType.Integer,
},
{
name: 'reason',
required: false,
type: ApplicationCommandOptionType.String,
},
{
autocomplete: true,
name: 'ticket',
required: false,
type: ApplicationCommandOptionType.String,
},
{
name: 'time',
required: false,
type: ApplicationCommandOptionType.String,
},
].map(option => {
option.descriptionLocalizations = client.i18n.getAllMessages(`commands.slash.${name}.options.${option.name}.description`);
option.description = option.descriptionLocalizations['en-GB'];
option.nameLocalizations = client.i18n.getAllMessages(`commands.slash.${name}.options.${option.name}.name`);
return option;
}),
});
}

Expand Down
15 changes: 5 additions & 10 deletions src/commands/slash/help.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,14 @@ const { version } = require('../../../package.json');

module.exports = class ClaimSlashCommand extends SlashCommand {
constructor(client, options) {
const descriptionLocalizations = {};
client.i18n.locales.forEach(l => (descriptionLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.help.description')));

const nameLocalizations = {};
client.i18n.locales.forEach(l => (nameLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.help.name')));

const name = 'help';
super(client, {
...options,
description: descriptionLocalizations['en-GB'],
descriptionLocalizations,
description: client.i18n.getMessage(null, `commands.slash.${name}.description`),
descriptionLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.description`),
dmPermission: false,
name: nameLocalizations['en-GB'],
nameLocalizations,
name,
nameLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.name`),
});
}

Expand Down
52 changes: 18 additions & 34 deletions src/commands/slash/move.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,27 @@ const { ApplicationCommandOptionType } = require('discord.js');

module.exports = class MoveSlashCommand extends SlashCommand {
constructor(client, options) {
const descriptionLocalizations = {};
client.i18n.locales.forEach(l => (descriptionLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.move.description')));

const nameLocalizations = {};
client.i18n.locales.forEach(l => (nameLocalizations[l] = client.i18n.getMessage(l, 'commands.slash.move.name')));

let opts = [
{
autocomplete: true,
name: 'category',
required: true,
type: ApplicationCommandOptionType.Integer,
},
];
opts = opts.map(o => {
const descriptionLocalizations = {};
client.i18n.locales.forEach(l => (descriptionLocalizations[l] = client.i18n.getMessage(l, `commands.slash.move.options.${o.name}.description`)));

const nameLocalizations = {};
client.i18n.locales.forEach(l => (nameLocalizations[l] = client.i18n.getMessage(l, `commands.slash.move.options.${o.name}.name`)));

return {
...o,
description: descriptionLocalizations['en-GB'],
descriptionLocalizations,
nameLocalizations: nameLocalizations,
};
});

const name = 'move';
super(client, {
...options,
description: descriptionLocalizations['en-GB'],
descriptionLocalizations,
description: client.i18n.getMessage(null, `commands.slash.${name}.description`),
descriptionLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.description`),
dmPermission: false,
name: nameLocalizations['en-GB'],
nameLocalizations,
options: opts,
name,
nameLocalizations: client.i18n.getAllMessages(`commands.slash.${name}.name`),
options: [
{
autocomplete: true,
name: 'category',
required: true,
type: ApplicationCommandOptionType.Integer,
},
].map(option => {
option.descriptionLocalizations = client.i18n.getAllMessages(`commands.slash.${name}.options.${option.name}.description`);
option.description = option.descriptionLocalizations['en-GB'];
option.nameLocalizations = client.i18n.getAllMessages(`commands.slash.${name}.options.${option.name}.name`);
return option;
}),
});
}

Expand Down
Loading

0 comments on commit 1843400

Please sign in to comment.