Удалены локализации для удалённых команд, фикс доков, фикс загрузки команд, перенесена команда для перезагрузки и её функции

This commit is contained in:
JonnyBro 2022-07-26 19:46:32 +05:00
parent 73a2834109
commit 0675cf5a5b
91 changed files with 146 additions and 507 deletions

File diff suppressed because one or more lines are too long

View file

@ -20,7 +20,7 @@ class BaseCommand {
*/
this.ownerOnly = options.ownerOnly || false;
/**
* @type {Object}
* @type __dirname
*/
this.dirname = options.dirname || false;
/**

View file

@ -120,10 +120,9 @@ class JaBa extends Client {
/**
*
* @param {String} dir
* @param {String} guild_id
* @returns
*/
async loadCommands(dir, guild_id) {
async loadCommands(dir) {
const filePath = path.join(__dirname, dir);
const files = await fs.readdir(filePath);
const rest = new REST({ version: "9" }).setToken(this.config.token);
@ -132,7 +131,8 @@ class JaBa extends Client {
for (let index = 0; index < files.length; index++) {
const file = files[index];
const stat = await fs.lstat(path.join(filePath, file));
if (stat.isDirectory()) this.loadCommands(path.join(dir, file), guild_id);
if (stat.isDirectory()) this.loadCommands(path.join(dir, file));
if (file.endsWith(".js")) {
const Command = require(path.join(filePath, file));
if (Command.prototype instanceof BaseCommand) {
@ -148,7 +148,7 @@ class JaBa extends Client {
});
}
if (command.guildOnly) guild_commands.push(command.command instanceof SlashCommandBuilder ? command.command.toJSON() : command.command, ...aliases);
if (!this.config.production) guild_commands.push(command.command instanceof SlashCommandBuilder ? command.command.toJSON() : command.command, ...aliases);
else commands.push(command.command instanceof SlashCommandBuilder ? command.command.toJSON() : command.command, ...aliases);
if (command.onLoad || typeof command.onLoad === "function") await command.onLoad(this);
@ -158,24 +158,90 @@ class JaBa extends Client {
}
try {
if (guild_id && guild_id.length) {
if (!this.config.production) {
await rest.put(
Routes.applicationGuildCommands(this.config.user, guild_id), {
Routes.applicationGuildCommands(this.config.user, this.config.support.id), {
body: guild_commands
},
}
);
} else {
await rest.put(
Routes.applicationCommands(this.config.user), {
body: commands
}
);
}
await rest.put(
Routes.applicationCommands(this.config.user), {
body: commands
},
);
this.logger.log("Successfully registered application commands.");
} catch (err) {
this.logger.log("Cannot load commands: " + err.message, "error");
}
}
/**
*
* @param {String} dir
* @param {String} file
*/
async loadCommand(dir, file) {
const commands = [];
const guild_commands = [];
const rest = new REST({ version: "9" }).setToken(this.config.token);
const Command = require(path.join(dir, `${file}.js`));
if (Command.prototype instanceof BaseCommand) {
const command = new Command(this);
this.commands.set(command.command.name, command);
const aliases = [];
if (command.aliases && Array.isArray(command.aliases) && command.aliases.length > 0) {
command.aliases.forEach((alias) => {
const command_alias = command.command instanceof SlashCommandBuilder ? { ...command.command.toJSON() } : { ...command.command };
command_alias.name = alias;
aliases.push(command_alias);
this.commands.set(alias, command);
});
}
if (!this.config.production) guild_commands.push(command.command instanceof SlashCommandBuilder ? command.command.toJSON() : command.command, ...aliases);
else commands.push(command.command instanceof SlashCommandBuilder ? command.command.toJSON() : command.command, ...aliases);
if (command.onLoad || typeof command.onLoad === "function") await command.onLoad(this);
this.logger.log(`Successfully loaded "${file}" command file. (Command: ${command.command.name})`);
try {
if (!this.config.production) {
await rest.put(
Routes.applicationGuildCommands(this.config.user, this.config.support.id), {
body: guild_commands
}
);
} else {
await rest.put(
Routes.applicationCommands(this.config.user), {
body: commands
}
);
}
this.logger.log("Successfully registered application commands.");
} catch (err) {
this.logger.log("Cannot load commands: " + err.message, "error");
}
return;
}
}
/**
*
* @param {String} dir
* @param {String} name
*/
async unloadCommand(dir, name) {
delete require.cache[require.resolve(`${dir}${path.sep}${name}.js`)];
return;
}
/**
*
* @param {String} dir

58
commands/Owner/reload.js Normal file
View file

@ -0,0 +1,58 @@
const { SlashCommandBuilder } = require("@discordjs/builders"),
BaseCommand = require("../../base/BaseCommand"),
i18next = require("i18next"),
autoUpdateDocs = require("../../helpers/autoUpdateDocs");
class Reload extends BaseCommand {
/**
*
* @param {import("../base/JaBa")} client
*/
constructor(client) {
super({
command: new SlashCommandBuilder()
.setName("reload")
.setDescription(client.translate("owner/reload:DESCRIPTION"))
.addStringOption(option =>
option.setName("command")
.setDescription(client.translate("owner/reload:USAGE"))
.setRequired(true)),
aliases: [],
dirname: __dirname,
guildOnly: true,
ownerOnly: true
});
}
/**
*
* @param {import("../../base/JaBa")} client
*/
async onLoad() {
//...
}
/**
*
* @param {import("../../base/JaBa")} client
* @param {import("discord.js").CommandInteraction} interaction
* @param {Array} data
*/
async execute(client, interaction) {
interaction.deferReply({ ephemeral: true });
const command = interaction.options.getString("command");
const cmd = client.commands.get(command);
if (!cmd) return interaction.error("owner/reload:NOT_FOUND", { search: command });
await client.unloadCommand(`../commands/${cmd.category}`, cmd.command.name);
await client.loadCommand(`../commands/${cmd.category}`, cmd.command.name);
i18next.reloadResources(["ru-RU", "uk-UA"]);
autoUpdateDocs.update(client);
interaction.success("owner/reload:SUCCESS", {
command: cmd.command.name
}, { edit: true, ephemeral: true });
}
}
module.exports = Reload;

View file

@ -31,7 +31,7 @@ class CommandHandler extends BaseEvent {
const guildData = await client.findOrCreateGuild({
id: interaction.guildId
});
data.guildData = guildData;
interaction.guild.data = data.guildData = guildData;
const memberData = await client.findOrCreateMember({
id: interaction.member.id,

View file

@ -1,13 +1,12 @@
module.exports.update = function (client) {
const table = require("markdown-table"),
fs = require("fs"),
commands = client.commands,
categories = [],
length = [...new Map(commands.map(v => [v.constructor.name, v])).values()].length;
commands = [...new Map(client.commands.map(v => [v.constructor.name, v])).values()],
categories = [];
commands.forEach((cmd) => {
if (!categories.includes(cmd.category)) categories.push(cmd.category);
});
let text = `# JaBa имеет **${length} ${client.getNoun(length, "команда", "команды", "команд")}** в **${categories.length} ${client.getNoun(categories.length, "категории", "категориях", "категориях")}**! \n\n#### Содержимое таблицы \n**Название**: Название команды \n**Описание**: Описание команды \n**Использование**: Использование команды ( [] - обязательно, () - необязательно ) \n**Разрешено использование**: Где можно использовать команду \n\n`;
let text = `# JaBa имеет **${commands.length} ${client.getNoun(commands.length, "команда", "команды", "команд")}** в **${categories.length} ${client.getNoun(categories.length, "категории", "категориях", "категориях")}**! \n\n#### Содержимое таблицы \n**Название**: Название команды \n**Описание**: Описание команды \n**Использование**: Использование команды ( [] - обязательно, () - необязательно ) \n**Разрешено использование**: Где можно использовать команду \n\n`;
// categories.sort(function(a, b) {
// const aCmdsSize = commands.filter((cmd) => cmd.category === a).size;
// const bCmdsSize = commands.filter((cmd) => cmd.category === b).size;
@ -18,9 +17,9 @@ module.exports.update = function (client) {
const categoriesArray = [
["Название", "Описание", "Использование", "Разрешено использование"]
];
const cmds = commands.filter((cmd) => cmd.category === cat),
length = [...new Map(cmds.map(v => [v.constructor.name, v])).values()].length;
text += `### ${cat} (${length} ${client.getNoun(length, "команда", "команды", "команд")})\n\n`;
const cmds = [...new Map(commands.filter((cmd) => cmd.category === cat).map(v => [v.constructor.name, v])).values()];
text += `### ${cat} (${cmds.length} ${client.getNoun(cmds.length, "команда", "команды", "команд")})\n\n`;
cmds.sort(function (a, b) {
if (a.command.name < b.command.name) return -1;
else return 1;

View file

@ -12,7 +12,7 @@ const client = new JaBa({
client.translations = await require("./helpers/languages")();
await client.loadEvents("../events");
await client.loadCommands("../commands", client.config.support.production ? "" : client.config.support.id);
await client.loadCommands("../commands");
await client.init();
})();

View file

@ -1,8 +0,0 @@
{
"DESCRIPTION": "Создать свою команду!",
"USAGE": "addcommand [название] [ответ]",
"EXAMPLES": "addcommand hello Привет, {user}. Добро пожаловать на {guild}!",
"MISSING_NAME": "Укажите название команды!",
"MISSING_ANSWER": "Укажите ответ команды!",
"SUCCESS": "Команда **{{commandName}}** создана!"
}

View file

@ -1,8 +0,0 @@
{
"DESCRIPTION": "Удалить свою команду!",
"USAGE": "delcommand [название]",
"EXAMPLES": "delcommand hello",
"MISSING_NAME": "Введите название команды!",
"UNKNOWN_COMMAND": "Команда {{commandName}} не существует!",
"SUCCESS": "Команда **{{commandName}}** была удалена с сервера!"
}

View file

@ -1,13 +0,0 @@
{
"DESCRIPTION": "Угадай загаданное мною слово!",
"USAGE": "findwords (STOP)",
"EXAMPLES": "findwords",
"INVALID_WORD": "{{member}} | Данное слово не существует или я его не знаю :(",
"GAME_STARTING": ":timer: | Игра начнётся через 10 секунд!\nНапишите STOP, если хотите остановить игру!",
"FIND_WORD": "20 секунд чтобы найти слово, в котором есть **{{word}}**!",
"WORD_FOUND": "{{winner}} быстрее всех нашёл слово!",
"GAME_STATS": "🎉 | {{winner}} победил!\n\n**Статистика:**\n*-* __**Участники**__: {{participants}} ({{participantCount}})\n**Статистика игры: **\n__**Длительность**__: {{duration}}\n__**Кол-во участников**__ : {{participantCount}}",
"CREDITS": "{{winner}} выиграл {{credits}}!",
"NO_WINNER_ALL": "Слова не найдены, игра окончена!",
"NO_WINNER": "Слова не найдены, игра окончена!"
}

View file

@ -5,7 +5,6 @@
"NO_TRANSACTIONS": "У вас нет транзакций.",
"EMBED_TRANSACTIONS": "Ваши транзакции",
"BANK": "Банк",
"WORDS": "Угадай слово",
"NUMBERS": "Угадай число",
"HORSERACE": "Конные скачки",
"TTT": "Крестики-нолики",

View file

@ -1,9 +0,0 @@
{
"DESCRIPTION": "Я могу помочь вам с выбором!",
"USAGE": "choice [вариант1/вариант2/вариант3/вариант4...]",
"EXAMPLES": "choice Вода/Огонь/Ветер",
"MISSING": "Укажите больше двух вариантов!\n(либо используйте команду `flip`)",
"EMPTY": "Кажется один из вариантов отсутствует... Попробуйте ещё раз!",
"PROGRESS": "Думаю...",
"DONE": "Я выбрал: **`{{result}}`**"
}

View file

@ -1,6 +0,0 @@
{
"DESCRIPTION": "Показать права пользователя",
"USAGE": "permissions (@пользователь)",
"EXAMPLES": "permissions\npermissions @Jonny_Bro#4226",
"TITLE": "Права {{user}} в канале {{channel}}"
}

View file

@ -1,8 +0,0 @@
{
"DESCRIPTION": "Процитировать сообщение в канал!",
"USAGE": "quote [ID-сообщения] (канал)",
"EXAMPLES": "quote 596018101921906698\nquote 596018101921906698 573508780520898581\nquote 596018101921906698 #основной",
"NO_MESSAGE_ID": "Нет сообщений с данным ID.",
"NO_CHANNEL_ID": "Нет канала с данным ID или названием.",
"MISSING_ID": "Укажите ID сообщения!"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"approved\"",
"USAGE": "approved (@пользователь)",
"EXAMPLES": "approved\napproved @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"batslap\"",
"USAGE": "batslap (@пользователь1) (@пользователь2)",
"EXAMPLES": "batslap\nbatslap @Jonny_Bro#4226 @JaBa#9042"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"beautiful\"",
"USAGE": "beautiful (@пользователь)",
"EXAMPLES": "beautiful\nbeautiful @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"bed\"",
"USAGE": "bed (@пользователь1) (@пользователь2)",
"EXAMPLES": "bed @Jonny_Bro#4226\nbed @Jonny_Bro#4226 @Dkflbvbh k.hyfqc#9402"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"brazzers\"",
"USAGE": "brazzers (@пользователь)",
"EXAMPLES": "brazzers\nbrazzers @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"burn\"",
"USAGE": "burn (@пользователь)",
"EXAMPLES": "burn\nburn @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"captcha\"",
"USAGE": "captcha (@пользователь)",
"EXAMPLES": "captcha\ncaptcha @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"challenger\"",
"USAGE": "challenger (@пользователь)",
"EXAMPLES": "challenger\nchallenger @Jonny_Bro#4226"
}

View file

@ -1,6 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"Clyde\"",
"USAGE": "clyde [текст]",
"EXAMPLES": "clyde Discord закроется 11 декабря 2002 года. Прощайте!.",
"MISSING_TEXT": "Введите текст!"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"crush\"",
"USAGE": "crush (@пользователь)",
"EXAMPLES": "crush\ncrush @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"dictator\"",
"USAGE": "dictator (@пользователь)",
"EXAMPLES": "dictator\ndictator @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"facepalm\"",
"USAGE": "facepalm (@пользователь)",
"EXAMPLES": "facepalm\nfacepalm @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"fire\"",
"USAGE": "fire (@пользователь)",
"EXAMPLES": "fire\nfire @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"jail\"",
"USAGE": "jail (@пользователь)",
"EXAMPLES": "jail\njail @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"love\"",
"USAGE": "love (@пользователь1) (@пользователь2)",
"EXAMPLES": "love @Jonny_Bro#4226\nlove @Jonny_Bro#4226 @JaBa#9042"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"magik\"",
"USAGE": "magik (@пользователь)",
"EXAMPLES": "magik\nmagik @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"mission\"",
"USAGE": "mission (@пользователь)",
"EXAMPLES": "mission\nmission @Jonny_Bro#4226"
}

View file

@ -1,6 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"phcomment\"",
"USAGE": "phcomment (@пользователь) [текст]",
"EXAMPLES": "phcomment Привет!\nphcomment @Jonny_Bro#4226 Привет!",
"MISSING_TEXT": "Укажите текст!"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"ps4\"",
"USAGE": "ps4 (@пользователь)",
"EXAMPLES": "ps4\nps4 @Jonny_Bro#4226"
}

View file

@ -1,7 +0,0 @@
{
"DESCRIPTION": "Создать QR код из текста",
"USAGE": "qrcode [текст]",
"EXAMPLES": "qrcode Hello World!",
"MISSING_TEXT": "Укажите текст!",
"SUCCESS": "Вот ваш QR код!"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"rip\"",
"USAGE": "rip (@пользователь)",
"EXAMPLES": "rip\nrip @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"scary\"",
"USAGE": "scary (@пользователь)",
"EXAMPLES": "scary\nscary @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"steamcard\"",
"USAGE": "steamcard [текст] (@пользователь)",
"EXAMPLES": "steamcard Коллекционная карточка\nsteamcard Карточка @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"tobecontinued\"",
"USAGE": "tobecontinued (@пользователь)",
"EXAMPLES": "tobecontinued\ntobecontinued @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"trash\"",
"USAGE": "trash (@пользователь)",
"EXAMPLES": "trash\ntrash @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"triggered\"",
"USAGE": "triggered (@пользователь)",
"EXAMPLES": "triggered\ntriggered @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"wanted\"",
"USAGE": "wanted (@пользователь)",
"EXAMPLES": "wanted\nwanted @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"wasted\"",
"USAGE": "wasted (@пользователь)",
"EXAMPLES": "wasted\nwasted @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Создать изображение \"ytcomment\"",
"USAGE": "ytcomment (@пользователь) [текст]",
"EXAMPLES": "ytomment Привет!\nytcomment @Jonny_Bro#4226 Привет!"
}

View file

@ -1,9 +0,0 @@
{
"DESCRIPTION": "Включить или отключить фильтр музыки",
"USAGE": "filter [фильтр]",
"EXAMPLES": "filter vaporwave",
"MISSING_FILTER": "Укажите фильтр для его включения! (или отправьте `filters`, чтобы увидеть статусы фильтров)",
"UNKNOWN_FILTER": "Заданный фильтр не существует! Используйте `filters` чтобы увидеть список фильтров или `filter off` чтобы отключить все фильтры!",
"CHANGING_FILTER": "Обновляю фильтры, подождите...",
"REMOVING_FILTER": "Отключаю все фильтры, подождите..."
}

View file

@ -1,7 +0,0 @@
{
"DESCRIPTION": "Получить список фильтров и их статусы",
"USAGE": "filters",
"EXAMPLES": "filters",
"TITLE": "**Фильтры**",
"CONTENT": "Вот список всех имеющихся фильтров.\nИспользуйте `filter <фильтр>`, чтобы изменить статус одного из них."
}

View file

@ -1,10 +0,0 @@
{
"DESCRIPTION": "Найти текст песни",
"USAGE": "lyrics [название-песни]",
"EXAMPLES": "lyrics Skyfall",
"LYRICS_OF": "🎤 Текст {{songName}}",
"AND_MORE": "\n**и т.д...**",
"CLICK_HERE": "Нажмите сюда, чтобы открыть ссылку на слова к этой песне",
"MISSING_SONG_NAME": "Укажите название песни!",
"NO_LYRICS_FOUND": "Текст песни `{{songName}}` не найден!"
}

View file

@ -1,5 +1,5 @@
{
"DESCRIPTION": "Выполнить код!",
"USAGE": "код",
"USAGE": "[код]",
"EXAMPLES": "eval interaction.channel.send({ content: \"Hello World!\" })"
}

View file

@ -1,10 +0,0 @@
{
"ONE_DAY": "1 день",
"DAYS": "{{amount}} дня/дней",
"ONE_HOUR": "1 час",
"HOURS": "{{amount}} час(а/ов)",
"ONE_MINUTE": "1 минута",
"MINUTES": "{{amount}} минут(ы)",
"ONE_SECOND": "1 секунда",
"SECONDS": "{{amount}} секунд(ы)"
}

View file

@ -1,8 +0,0 @@
{
"DESCRIPTION": "Створити власну команду!",
"USAGE": "addcommand [назва] [відповідь]",
"EXAMPLES": "addcommand hello Привіт, {user}. Добро пожаловать на {guild}!",
"MISSING_NAME": "Укажіть назву команди!",
"MISSING_ANSWER": "Укажіть відповідь команди!",
"SUCCESS": "Команда **{{commandName}}** створена!"
}

View file

@ -1,8 +0,0 @@
{
"DESCRIPTION": "Видалити власну команду!",
"USAGE": "delcommand [назва]",
"EXAMPLES": "delcommand hello",
"MISSING_NAME": "Введіть назву команди!",
"UNKNOWN_COMMAND": "Команда {{commandName}} не існує!",
"SUCCESS": "Команда {{commandName}} була видалена з серверу!"
}

View file

@ -1,7 +0,0 @@
{
"DESCRIPTION": "Увімкнути або вимкнути використання команд у каналі",
"USAGE": "ignore [канал]",
"EXAMPLES": "ignore #основний",
"ALLOWED": "Тепер команди в {{channel}} дозволені!",
"IGNORED": "Тепер команди в {{channel}} заборонені!"
}

View file

@ -1,13 +0,0 @@
{
"DESCRIPTION": "Вгадай задумане мною слово!",
"USAGE": "findwords (STOP)",
"EXAMPLES": "findwords",
"INVALID_WORD": "{{member}} | Це слово не існує або я його не знаю :(",
"GAME_STARTING": ":timer: | Гра розпочнеться через 10 секунд!\nНапишіть STOP, якщо хочете зупинити гру!",
"FIND_WORD": "20 секунд, щоб знайти слово, в якому є **{{word}}**!",
"WORD_FOUND": "{{winner}} найшвидше знайшов слово!",
"GAME_STATS": "🎉 | {{winner}} переміг!\n\n**Статистика:**\n*-* __**Учасники**__: {{participants}} ({{participantCount}})\n**Статистика гри: **\n__**Тривалість**__: {{duration}}\n__**Кількість учасників**__ : {{participantCount}}",
"CREDITS": "{{winner}} виграв {{credits}}!",
"NO_WINNER_ALL": "Слова не знайдені, гра закінчена!",
"NO_WINNER": "Слова не знайдені, гра закінчена!"
}

View file

@ -5,7 +5,6 @@
"NO_TRANSACTIONS": "У вас немає транзакцій.",
"EMBED_TRANSACTIONS": "Ваші транзакції",
"BANK": "Банк",
"WORDS": "Вгадай слово",
"NUMBERS": "Вгадай число",
"HORSERACE": "Кінні перегони",
"TTT": "Хрестики-нуліки",

View file

@ -1,9 +0,0 @@
{
"DESCRIPTION": "Я можу допомогти вам із вибором!",
"USAGE": "choice [варіант1/варіант2/варіант3/варіант4...]",
"EXAMPLES": "choice Вода/Вогонь/Вітер",
"MISSING": "Вкажіть більше двох варіантів!\n(або використовуйте команду `flip`)",
"EMPTY": "Здається, один з варіантів відсутній... Спробуйте ще раз!",
"PROGRESS": "Думаю...",
"DONE": "Я вибрав: **`{{result}}`**"
}

View file

@ -1,6 +0,0 @@
{
"DESCRIPTION": "Показати права користувача",
"USAGE": "permissions (@користувач)",
"EXAMPLES": "permissions\npermissions @Jonny_Bro#4226",
"TITLE": "{{user}} у каналі {{channel}}"
}

View file

@ -1,8 +0,0 @@
{
"DESCRIPTION": "Процитувати повідомлення в канал!",
"USAGE": "quote [ID-повідомлення] (канал)",
"EXAMPLES": "quote 596018101921906698\nquote 596018101921906698 573508780520898581\nquote 5960",
"NO_MESSAGE_ID": "Немає повідомлень з цим ID.",
"NO_CHANNEL_ID": "Немає каналу з ID або назвою.",
"MISSING_ID": "Вкажіть ID повідомлення!"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"approved\"",
"USAGE": "approved (@користувач)",
"EXAMPLES": "approved\napproved @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"batslap\"",
"USAGE": "batslap (@користувач1) (@користувач2)",
"EXAMPLES": "batslap\nbatslap @Jonny_Bro#4226 @JaBa#9042"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"beautiful\"",
"USAGE": "beautiful (@користувач)",
"EXAMPLES": "beautiful\nbeautiful @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"bed\"",
"USAGE": "bed (@користувач1) (@користувач2)",
"EXAMPLES": "bed @Jonny_Bro#4226\nbed @Jonny_Bro#4226 @Dkflbvbh k.hyfqc#9402"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"brazzers\"",
"USAGE": "brazzers (@користувач)",
"EXAMPLES": "brazzers\nbrazzers @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"burn\"",
"USAGE": "burn (@користувач)",
"EXAMPLES": "burn\nburn @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"captcha\"",
"USAGE": "captcha (@користувач)",
"EXAMPLES": "captcha\ncaptcha @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"challenger\"",
"USAGE": "challenger (@користувач)",
"EXAMPLES": "challenger\nchallenger @Jonny_Bro#4226"
}

View file

@ -1,6 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"Clyde\"",
"USAGE": "clyde [текст]",
"EXAMPLES": "clyde Discord закриється 11 грудня 2002 року. Прощайте!.",
"MISSING_TEXT": "Введіть текст!"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"crush\"",
"USAGE": "crush (@користувач)",
"EXAMPLES": "crush\ncrush @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"dictator\"",
"USAGE": "dictator (@користувач)",
"EXAMPLES": "dictator\ndictator @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"facepalm\"",
"USAGE": "facepalm (@користувач)",
"EXAMPLES": "facepalm\nfacepalm @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"fire\"",
"USAGE": "fire (@користувач)",
"EXAMPLES": "fire\nfire @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"jail\"",
"USAGE": "jail (@користувач)",
"EXAMPLES": "jail\njail @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"love\"",
"USAGE": "love (@користувач1) (@користувач2)",
"EXAMPLES": "love @Jonny_Bro#4226\nlove @Jonny_Bro#4226 @JaBa#9042"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"magik\"",
"USAGE": "magik (@користувач)",
"EXAMPLES": "magik\nmagik @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"mission\"",
"USAGE": "mission (@користувач)",
"EXAMPLES": "mission\nmission @Jonny_Bro#4226"
}

View file

@ -1,6 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"phcomment\"",
"USAGE": "phcomment (@користувач) [текст]",
"EXAMPLES": "phcomment Привіт!\nphcomment @Jonny_Bro#4226 Привіт!",
"MISSING_TEXT": "Вкажіть текст!"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"ps4\"",
"USAGE": "ps4 (@користувач)",
"EXAMPLES": "ps4\nps4 @Jonny_Bro#4226"
}

View file

@ -1,7 +0,0 @@
{
"DESCRIPTION": "Створити QR код із тексту",
"USAGE": "qrcode [текст]",
"EXAMPLES": "qrcode Hello World!",
"MISSING_TEXT": "Вкажіть текст!",
"SUCCESS": "От ваш QR код!"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"rip\"",
"USAGE": "rip (@користувач)",
"EXAMPLES": "rip\nrip @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"scary\"",
"USAGE": "scary (@користувач)",
"EXAMPLES": "scary\nscary @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"steamcard\"",
"USAGE": "steamcard [текст] (@користувач)",
"EXAMPLES": "steamcard Колекційна картка\nsteamcard Картка @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"tobecontinued\"",
"USAGE": "tobecontinued (@користувач)",
"EXAMPLES": "tobecontinued\ntobecontinued @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"trash\"",
"USAGE": "trash (@користувач)",
"EXAMPLES": "trash\ntrash @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"triggered\"",
"USAGE": "triggered (@користувач)",
"EXAMPLES": "triggered\ntriggered @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"wanted\"",
"USAGE": "wanted (@користувач)",
"EXAMPLES": "wanted\nwanted @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"wasted\"",
"USAGE": "wasted (@користувач)",
"EXAMPLES": "wasted\nwasted @Jonny_Bro#4226"
}

View file

@ -1,5 +0,0 @@
{
"DESCRIPTION": "Створити зображення \"ytcomment\"",
"USAGE": "ytcomment (@користувач) [текст]",
"EXAMPLES": "ytcomment Привіт!\nytcomment @Jonny_Bro#4226 Привіт!"
}

View file

@ -1,9 +0,0 @@
{
"DESCRIPTION": "Увімкнути або вимкнути фільтр музики",
"USAGE": "filter [фільтр]",
"EXAMPLES": "filter vaporwave",
"MISSING_FILTER": "Вкажіть фільтр для його включення! (або надішліть `filters`, щоб побачити статуси фільтрів)",
"UNKNOWN_FILTER": "Заданий фільтр не існує! Використовуйте `filters` щоб побачити список фільтрів або `filter off` щоб вимкнути всі фільтри!",
"CHANGING_FILTER": "Обновляю фільтри, зачекайте...",
"REMOVING_FILTER": "Відключаю всі фільтри, зачекайте..."
}

View file

@ -1,7 +0,0 @@
{
"DESCRIPTION": "Отримати список фільтрів та їх статуси",
"USAGE": "filters",
"EXAMPLES": "filters",
"TITLE": "**Фільтри**",
"CONTENT": "Ось список усіх наявних фільтрів.\nВикористовуйте `filter <фільтр>`, щоб змінити статус одного з них."
}

View file

@ -1,10 +0,0 @@
{
"DESCRIPTION": "Знайти текст пісні",
"USAGE": "lyrics [назва-пісні]",
"EXAMPLES": "lyrics Skyfall",
"LYRICS_OF": "🎤 Текст {{songName}}",
"AND_MORE": "\n**і т.д...**",
"CLICK_HERE": "Натисніть сюди, щоб відкрити посилання на слова до цієї пісні",
"MISSING_SONG_NAME": "Вкажіть назву пісні!",
"NO_LYRICS_FOUND": "Текст пісні `{{songName}}` не знайдено!"
}

View file

@ -1,10 +0,0 @@
{
"ONE_DAY": "1 день",
"DAYS": "{{amount}} дня/днів",
"ONE_HOUR": "1 година",
"HOURS": "{{amount}} годин(и)",
"ONE_MINUTE": "1 хвилина",
"MINUTES": "{{amount}} хвилин(и)",
"ONE_SECOND": "1 секунда",
"SECONDS": "{{amount}} секунд(и)"
}