This commit is contained in:
JonnyBro 2022-10-02 23:40:05 +05:00
parent 60ec94558a
commit 40ac751f76
68 changed files with 380 additions and 413 deletions

View file

@ -73,9 +73,8 @@ class Leaderboard extends BaseCommand {
let money = ""; let money = "";
for (let i = 0; i < membersLeaderboard.length; i++) { for (let i = 0; i < membersLeaderboard.length; i++) {
const data = membersLeaderboard[i]; const data = membersLeaderboard[i];
const user = await client.users.fetch(data.id);
userNames += `**${i + 1}**. ${user}\n`; userNames += `**${i + 1}**. <@${data.id}>\n`;
money += `${data.money}\n`; money += `${data.money}\n`;
} }
@ -88,7 +87,7 @@ class Leaderboard extends BaseCommand {
}) })
.setColor(client.config.embed.color) .setColor(client.config.embed.color)
.addFields({ .addFields({
name: interaction.translate("economy/leaderboard:TOP"), name: interaction.translate("common:USER"),
value: userNames, value: userNames,
inline: true inline: true
}, { }, {
@ -119,9 +118,8 @@ class Leaderboard extends BaseCommand {
const xp = []; const xp = [];
for (let i = 0; i < membersLeaderboard.length; i++) { for (let i = 0; i < membersLeaderboard.length; i++) {
const data = membersLeaderboard[i]; const data = membersLeaderboard[i];
const user = await client.users.fetch(data.id);
userNames.push(`**${i + 1}**. ${user.tag}`); userNames.push(`**${i + 1}**. <@${data.id}>`);
level.push(`${data.level}`); level.push(`${data.level}`);
xp.push(`${data.xp} / ${5 * (data.level * data.level) + 80 * data.level + 100}`); xp.push(`${data.xp} / ${5 * (data.level * data.level) + 80 * data.level + 100}`);
} }
@ -136,7 +134,7 @@ class Leaderboard extends BaseCommand {
.setColor(client.config.embed.color) .setColor(client.config.embed.color)
.addFields([ .addFields([
{ {
name: interaction.translate("economy/leaderboard:TOP"), name: interaction.translate("common:USER"),
value: userNames.join("\n"), value: userNames.join("\n"),
inline: true inline: true
}, },
@ -172,9 +170,8 @@ class Leaderboard extends BaseCommand {
let rep = ""; let rep = "";
for (let i = 0; i < usersLeaderboard.length; i++) { for (let i = 0; i < usersLeaderboard.length; i++) {
const data = usersLeaderboard[i]; const data = usersLeaderboard[i];
const user = await client.users.fetch(data.id);
userNames += `**${i + 1}**. ${user}\n`; userNames += `**${i + 1}**. <@${data.id}>\n`;
rep += `${data.rep}\n`; rep += `${data.rep}\n`;
} }
@ -187,7 +184,7 @@ class Leaderboard extends BaseCommand {
}) })
.setColor(client.config.embed.color) .setColor(client.config.embed.color)
.addFields({ .addFields({
name: interaction.translate("economy/leaderboard:TOP"), name: interaction.translate("common:USER"),
value: userNames, value: userNames,
inline: true inline: true
}, { }, {

View file

@ -11,8 +11,7 @@ class Eightball extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("8ball") .setName("8ball")
.setDescription(client.translate("fun/8ball:DESCRIPTION")) .setDescription(client.translate("fun/8ball:DESCRIPTION"))
.addStringOption(option => .addStringOption(option => option.setName("question")
option.setName("question")
.setDescription(client.translate("fun/8ball:QUESTION")) .setDescription(client.translate("fun/8ball:QUESTION"))
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
@ -36,17 +35,18 @@ class Eightball extends BaseCommand {
*/ */
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply(); await interaction.deferReply();
const question = interaction.options.getString("question");
if (!question.endsWith("?")) return interaction.replyT("fun/8ball:ERR_QUESTION", null, { ephemeral: true }); const question = interaction.options.getString("question");
if (!question.endsWith("?")) return interaction.error("fun/8ball:ERR_QUESTION", null, { ephemeral: true });
const answerN = client.functions.randomNum(1, 20); const answerN = client.functions.randomNum(1, 20);
const answer = interaction.translate(`fun/8ball:RESPONSE_${answerN}`); const answer = interaction.translate(`fun/8ball:RESPONSE_${answerN}`);
await client.wait(2000); await client.wait(5000);
interaction.editReply({ interaction.replyT("fun/8ball:ANSWER", {
content: answer question,
}); answer
}, { edit: true });
} }
} }

View file

@ -1,5 +1,6 @@
const { SlashCommandBuilder } = require("discord.js"); const { SlashCommandBuilder } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"); const BaseCommand = require("../../base/BaseCommand"),
fetch = require("node-fetch");
class LMGTFY extends BaseCommand { class LMGTFY extends BaseCommand {
/** /**
@ -11,9 +12,11 @@ class LMGTFY extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("lmgtfy") .setName("lmgtfy")
.setDescription(client.translate("fun/lmgtfy:DESCRIPTION")) .setDescription(client.translate("fun/lmgtfy:DESCRIPTION"))
.addStringOption(option => .addStringOption(option => option.setName("query")
option.setName("question") .setDescription(client.translate("fun/lmgtfy:QUERY"))
.setDescription(client.translate("fun/8ball:QUESTION")) .setRequired(true))
.addBooleanOption(option => option.setName("short")
.setDescription(client.translate("fun/lmgtfy:SHORT"))
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
@ -35,13 +38,24 @@ class LMGTFY extends BaseCommand {
* @param {Object} data * @param {Object} data
*/ */
async execute(client, interaction) { async execute(client, interaction) {
const question = interaction.options.getString("question").replace(/[' '_]/g, "+"); const query = interaction.options.getString("query").replace(/[' '_]/g, "+"),
short = interaction.options.getBoolean("short"),
url = `https://letmegooglethat.com/?q=${query}`;
if (short) {
const res = await fetch(`https://is.gd/create.php?format=simple&url=${encodeURIComponent(url)}`).then(res => res.text());
interaction.reply({ interaction.reply({
content: `<https://letmegooglethat.com/?q=${question}>`, content: `<${res}>`,
ephemeral: true
});
} else {
interaction.reply({
content: `<${url}>`,
ephemeral: true ephemeral: true
}); });
} }
} }
}
module.exports = LMGTFY; module.exports = LMGTFY;

View file

@ -36,7 +36,7 @@ class Shorturl extends BaseCommand {
*/ */
async execute(client, interaction) { async execute(client, interaction) {
const url = interaction.options.getString("url"); const url = interaction.options.getString("url");
const res = await fetch(`https://is.gd/create.php?format=simple&url=${encodeURI(url)}`).then(res => res.text()); const res = await fetch(`https://is.gd/create.php?format=simple&url=${encodeURIComponent(url)}`).then(res => res.text());
interaction.reply({ interaction.reply({
content: `<${res}>`, content: `<${res}>`,

View file

@ -1,4 +1,4 @@
const { SlashCommandBuilder, ActionRowBuilder, SelectMenuBuilder, InteractionCollector, ComponentType, PermissionFlagsBits } = require("discord.js"); const { SlashCommandBuilder, PermissionFlagsBits } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand"), const BaseCommand = require("../../base/BaseCommand"),
ms = require("ms"); ms = require("ms");
@ -13,16 +13,39 @@ class Giveaway extends BaseCommand {
.setName("giveaway") .setName("giveaway")
.setDescription(client.translate("moderation/giveaway:DESCRIPTION")) .setDescription(client.translate("moderation/giveaway:DESCRIPTION"))
.setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages) .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages)
.addStringOption(option => option.setName("giveaway_id") .addSubcommand(subcommand => subcommand.setName("create")
.setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID"))) .setDescription(client.translate("moderation/giveaway:CREATE"))
.addStringOption(option => option.setName("duration") .addStringOption(option => option.setName("duration")
.setDescription(client.translate("common:DURATION"))) .setDescription(client.translate("common:DURATION"))
.setRequired(true))
.addIntegerOption(option => option.setName("winners_count") .addIntegerOption(option => option.setName("winners_count")
.setDescription(client.translate("moderation/giveaway:WINNERS_COUNT"))) .setDescription(client.translate("moderation/giveaway:WINNERS_COUNT"))
.setRequired(true))
.addStringOption(option => option.setName("prize") .addStringOption(option => option.setName("prize")
.setDescription(client.translate("moderation/giveaway:PRIZE"))) .setDescription(client.translate("moderation/giveaway:PRIZE"))
.setRequired(true))
.addBooleanOption(option => option.setName("isdrop") .addBooleanOption(option => option.setName("isdrop")
.setDescription(client.translate("moderation/giveaway:ISDROP"))), .setDescription(client.translate("moderation/giveaway:ISDROP"))
.setRequired(true))
)
.addSubcommand(subcommand => subcommand.setName("reroll")
.setDescription(client.translate("moderation/giveaway:REROLL"))
.addStringOption(option => option.setName("giveaway_id")
.setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID"))
.setRequired(true))
)
.addSubcommand(subcommand => subcommand.setName("end")
.setDescription(client.translate("moderation/giveaway:END"))
.addStringOption(option => option.setName("giveaway_id")
.setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID"))
.setRequired(true))
)
.addSubcommand(subcommand => subcommand.setName("delete")
.setDescription(client.translate("moderation/giveaway:DELETE"))
.addStringOption(option => option.setName("giveaway_id")
.setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID"))
.setRequired(true))
),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
guildOnly: true guildOnly: true
@ -42,63 +65,19 @@ class Giveaway extends BaseCommand {
* @param {Object} data * @param {Object} data
*/ */
async execute(client, interaction) { async execute(client, interaction) {
const row = new ActionRowBuilder() const command = interaction.options.getSubcommand();
.addComponents(
new SelectMenuBuilder()
.setCustomId("giveaway_select")
.setPlaceholder(client.translate("common:NOTHING_SELECTED"))
.addOptions([
{
label: interaction.translate("moderation/giveaway:CREATE"),
value: "create"
},
{
label: interaction.translate("moderation/giveaway:REROLL"),
value: "reroll"
},
{
label: interaction.translate("moderation/giveaway:DELETE"),
value: "delete"
},
{
label: interaction.translate("moderation/giveaway:END"),
value: "end"
}
])
);
const msg = await interaction.reply({ if (command === "create") {
content: interaction.translate("common:AVAILABLE_OPTIONS"), const currentGiveaways = client.giveawaysManager.giveaways.filter(g => g.guildId === interaction.guildId && !g.ended).length;
components: [row], if (currentGiveaways > 5) return interaction.error("moderation/giveaway:MAX_COUNT");
ephemeral: true,
fetchReply: true
});
const filter = i => i.customId === "giveaway_select" && i.user.id === interaction.user.id;
const collector = new InteractionCollector(client, {
filter,
componentType: ComponentType.SelectMenu,
message: msg,
idle: (30 * 1000)
});
collector.on("collect", async i => {
const option = i?.values[0];
if (option === "create") {
const currentGiveaways = client.giveawaysManager.giveaways.filter(g => g.guildId === interaction.guild.id && !g.ended).length;
if (currentGiveaways > 5) return i.update({ content: interaction.translate("moderation/giveaway:MAX_COUNT") });
const duration = interaction.options.getString("duration"); const duration = interaction.options.getString("duration");
if (!duration) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") }); if (ms(duration) > ms("10d")) return interaction.error("moderation/giveaway:MAX_DURATION");
if (ms(duration) > ms("10d")) return i.update({ content: interaction.translate("moderation/giveaway:MAX_DURATION") });
const winnersCount = interaction.options.getInteger("winners_count"); const winnersCount = interaction.options.getInteger("winners_count");
if (!winnersCount) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") }); if (winnersCount > 10 || winnersCount < 1) return interaction.error("misc:INVALID_NUMBER_RANGE", { min: 1, max: 10 });
if (winnersCount > 10 || winnersCount < 1) return i.update({ content: interaction.translate("misc:INVALID_NUMBER_RANGE", { min: 1, max: 10 }) });
const prize = interaction.options.getString("prize"); const prize = interaction.options.getString("prize");
if (!prize) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") });
const isdrop = interaction.options.getBoolean("isdrop"); const isdrop = interaction.options.getBoolean("isdrop");
client.giveawaysManager.start(interaction.channel, { client.giveawaysManager.start(interaction.channel, {
@ -119,31 +98,13 @@ class Giveaway extends BaseCommand {
noWinner: interaction.translate("moderation/giveaway:NO_WINNER"), noWinner: interaction.translate("moderation/giveaway:NO_WINNER"),
winners: interaction.translate("moderation/giveaway:WINNERS"), winners: interaction.translate("moderation/giveaway:WINNERS"),
endedAt: interaction.translate("moderation/giveaway:END_AT"), endedAt: interaction.translate("moderation/giveaway:END_AT"),
hostedBy: interaction.translate("moderation/giveaway:HOSTEDBY"), hostedBy: interaction.translate("moderation/giveaway:HOSTED_BY")
// units: {
// seconds: interaction.translate("time:SECONDS", {
// amount: ""
// }).trim(),
// minutes: interaction.translate("time:MINUTES", {
// amount: ""
// }).trim(),
// hours: interaction.translate("time:HOURS", {
// amount: ""
// }).trim(),
// days: interaction.translate("time:DAYS", {
// amount: ""
// }).trim()
// }
} }
}).then(() => { }).then(() => {
return i.update({ return interaction.success("moderation/giveaway:GIVEAWAY_CREATED", null, { ephemeral: true });
content: interaction.translate("moderation/giveaway:GIVEAWAY_CREATED"),
components: []
}); });
}); } else if (command === "reroll") {
} else if (option === "reroll") {
const giveaway_id = interaction.options.getString("giveaway_id"); const giveaway_id = interaction.options.getString("giveaway_id");
if (!giveaway_id) return i.update({ content: interaction.translate("moderation/giveaway:MISSING_ID"), components: [] });
client.giveawaysManager.reroll(giveaway_id, { client.giveawaysManager.reroll(giveaway_id, {
messages: { messages: {
@ -151,56 +112,35 @@ class Giveaway extends BaseCommand {
error: interaction.translate("moderation/giveaway:REROLL_ERROR") error: interaction.translate("moderation/giveaway:REROLL_ERROR")
} }
}).then(() => { }).then(() => {
return i.update({ return interaction.success("moderation/giveaway:GIVEAWAY_REROLLED");
content: interaction.translate("moderation/giveaway:GIVEAWAY_REROLLED"),
components: []
});
}).catch(() => { }).catch(() => {
return i.update({ return interaction.error("moderation/giveaway:NOT_FOUND_ENDED", {
content: interaction.translate("moderation/giveaway:NOT_FOUND_ENDED", {
messageId: giveaway_id messageId: giveaway_id
}), }, { ephemeral: true });
components: []
}); });
}); } else if (command === "end") {
} else if (option === "delete") {
const giveaway_id = interaction.options.getString("giveaway_id"); const giveaway_id = interaction.options.getString("giveaway_id");
if (!giveaway_id) return i.update({ content: interaction.translate("moderation/giveaway:MISSING_ID"), components: [] });
client.giveawaysManager.delete(giveaway_id).then(() => {
return i.update({
content: interaction.translate("moderation/giveaway:GIVEAWAY_DELETED"),
components: []
});
}).catch(() => {
return i.update({
content: interaction.translate("moderation/giveaway:NOT_FOUND", {
messageId: giveaway_id
}),
components: []
});
});
} else if (option === "end") {
const giveaway_id = interaction.options.getString("giveaway_id");
if (!giveaway_id) return i.update({ content: interaction.translate("moderation/giveaway:MISSING_ID"), components: [] });
try { try {
client.giveawaysManager.end(giveaway_id); client.giveawaysManager.end(giveaway_id);
return i.update({ return interaction.success("moderation/giveaway:GIVEAWAY_ENDED");
content: interaction.translate("moderation/giveaway:GIVEAWAY_ENDED"),
components: []
});
} catch (e) { } catch (e) {
return i.update({ return interaction.error("moderation/giveaway:NOT_FOUND", {
content: interaction.translate("moderation/giveaway:NOT_FOUND", {
messageId: giveaway_id messageId: giveaway_id
}), }, { ephemeral: true });
components: [] }
} else if (command === "delete") {
const giveaway_id = interaction.options.getString("giveaway_id");
client.giveawaysManager.delete(giveaway_id).then(() => {
return interaction.success("moderation/giveaway:GIVEAWAY_DELETED");
}).catch(() => {
return interaction.error("moderation/giveaway:NOT_FOUND", {
messageId: giveaway_id
}, { ephemeral: true });
}); });
} }
} }
});
}
} }
module.exports = Giveaway; module.exports = Giveaway;

View file

@ -68,7 +68,7 @@ class Debug extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction * @param {import("discord.js").ChatInputCommandInteraction} interaction
* @param {Array} data * @param {Array} data
*/ */
async execute(client, interaction,) { async execute(client, interaction) {
const command = interaction.options.getSubcommand(); const command = interaction.options.getSubcommand();
if (command === "set") { if (command === "set") {

View file

@ -1,3 +1,18 @@
### JaBa v4.1.8
* Добавлено
* Возможность сразу сократить ссылку в команде *lmgtfy*.
* Изменения
* Переписаны подсказки к командам.
* Переписана команда *giveaway*.
* Исправления
* Фикс ошибки *shorturl* с некотырыми ссылками.
### JaBa v4.1.7
* Добавлено
* Переписана команда *leaderboard*.
### JaBa v4.1.6 ### JaBa v4.1.6
* Изменения * Изменения
* Изменён способ указания типа повтора в *loop*. Теперь вы указываете тип аргументом (подсказки имеются), а не из выпадающего списка в отдельном сообщении. Это одновременно удобно, быстро и меньше кода =) * Изменён способ указания типа повтора в *loop*. Теперь вы указываете тип аргументом (подсказки имеются), а не из выпадающего списка в отдельном сообщении. Это одновременно удобно, быстро и меньше кода =)

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Включить или отключить автоудаление ссылок-приглашений", "DESCRIPTION": "Включить или отключить автоудаление ссылок-приглашений",
"USAGE": "[true/false] (#канал)", "USAGE": "[state] (#channel)",
"EXAMPLES": "automod true\nautomod false #general\nautomod false", "EXAMPLES": "automod state:True\nautomod state:False channel:#general\nautomod state:False",
"ENABLED": "Ссылки-приглашения будут удаляться автоматически\nИспользуйте `automod false #channel` для игнорирования канала!", "ENABLED": "Ссылки-приглашения будут удаляться автоматически\nИспользуйте `automod false #channel` для игнорирования канала!",
"DISABLED_CHANNEL": "Автомодерация не будет выполняться в {{channel}}!", "DISABLED_CHANNEL": "Автомодерация не будет выполняться в {{channel}}!",
"DISABLED": "Автомодерация отключена!", "DISABLED": "Автомодерация отключена!",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Включить или отключить автоназначение роли при входе на сервер", "DESCRIPTION": "Включить или отключить автоназначение роли при входе на сервер",
"USAGE": "[true/false] (@роль)", "USAGE": "[state] (@role)",
"EXAMPLES": "autorole true @новенький\nautorole false", "EXAMPLES": "autorole state:True role:@новенький\nautorole state:False",
"MISSING_ROLE": "Укажите роль!", "MISSING_ROLE": "Укажите роль!",
"SUCCESS_ENABLED": "Автоназначение роли включено!\nНовые пользователи будут автоматически получать {{role}} при входе на сервер.", "SUCCESS_ENABLED": "Автоназначение роли включено!\nНовые пользователи будут автоматически получать {{role}} при входе на сервер.",
"SUCCESS_DISABLED": "Автоназначение роли отключено!" "SUCCESS_DISABLED": "Автоназначение роли отключено!"

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Включить или отключить автоудаление команд модерации", "DESCRIPTION": "Включить или отключить автоудаление команд модерации",
"USAGE": "[true/false]", "USAGE": "[state]",
"EXAMPLES": "deletemod true", "EXAMPLES": "deletemod state:True\ndeletemod state:False",
"ENABLED": "Автоудаление команд модерации включено!", "ENABLED": "Автоудаление команд модерации включено!",
"DISABLED": "Автоудаление команд модерации отключено!" "DISABLED": "Автоудаление команд модерации отключено!"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Включить или отключить сообщения при выходе пользователя с сервера", "DESCRIPTION": "Включить или отключить сообщения при выходе пользователя с сервера",
"USAGE": "(test)", "USAGE": "config [state] [#channel] [message] [image] \nИли [test]",
"EXAMPLES": "goodbye\ngoodbye test", "EXAMPLES": "goodbye state:True channel:#welcome Прощай! image:True\ngoodbye test",
"TEST": "Проверить", "TEST": "Проверить",
"TEST_SUCCESS": "Тест выполнен...", "TEST_SUCCESS": "Тест выполнен...",
"CONFIG": "Настроить", "CONFIG": "Настроить",

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Изменить пользователю опыт, уровень, кредиты или банк", "DESCRIPTION": "Изменить пользователю опыт, уровень, кредиты или банк",
"USAGE": "[level/xp/credits/bank] [@пользователь] [значение]", "USAGE": "[type] [@user] [int]",
"EXAMPLES": "set level @Jonny_Bro#4226 10", "EXAMPLES": "set type:Уровень user:@Jonny_Bro#4226 int:10",
"INVALID_NUMBER": "Значение должно быть больше нуля" "INVALID_NUMBER": "Значение должно быть больше нуля"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Установить канал для поздравлений с днём рождения", "DESCRIPTION": "Установить канал для поздравлений с днём рождения",
"USAGE": "[true/false] (#канал)", "USAGE": "[state] (#channel)",
"EXAMPLES": "setbirthdays true #birthdays\nsetbirthdays false", "EXAMPLES": "setbirthdays state:True channel:#birthdays\nsetbirthdays state:False",
"ENABLED": "Поздравления включены в канале **{{channel}}**!", "ENABLED": "Поздравления включены в канале **{{channel}}**!",
"DISABLED": "Поздравления отключены!" "DISABLED": "Поздравления отключены!"
} }

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Изменить язык бота на сервере", "DESCRIPTION": "Изменить язык бота на сервере",
"USAGE": "[язык]", "USAGE": "[languagee]",
"EXAMPLES": "setlang Русский", "EXAMPLES": "setlang language:Русский",
"SUCCESS": ":flag_ru: Язык сервера изменён на **{{lang}}**!" "SUCCESS": ":flag_ru: Язык сервера изменён на **{{lang}}**!"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Установить канал для логов модерации", "DESCRIPTION": "Установить канал для логов модерации",
"USAGE": "[true/false] (#канал)", "USAGE": "[state] (#channel)",
"EXAMPLES": "setmodlogs true #логи\nsetmodlogs false", "EXAMPLES": "setmodlogs state:True channel:#логи\nsetmodlogs state:False",
"ENABLED": "Логи модерации включены в канале **{{channel}}**!", "ENABLED": "Логи модерации включены в канале **{{channel}}**!",
"DISABLED": "Логи модерации отключены!" "DISABLED": "Логи модерации отключены!"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Установить канал для новостей бота", "DESCRIPTION": "Установить канал для новостей бота",
"USAGE": "[true/false] (#канал)", "USAGE": "[state] (#channel)",
"EXAMPLES": "setnews true #bot-news\nsetnews false", "EXAMPLES": "setnews state:True channel:#bot-news\nsetnews state:False",
"ENABLED": "Новости бота включены в канале **{{channel}}**!", "ENABLED": "Новости бота включены в канале **{{channel}}**!",
"DISABLED": "Новости бота отключены!" "DISABLED": "Новости бота отключены!"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Установить канал для жалоб", "DESCRIPTION": "Установить канал для жалоб",
"USAGE": "[true/false] (#канал)", "USAGE": "[state] (#channel)",
"EXAMPLES": "setreports true #жалобы\nsetreports false", "EXAMPLES": "setreports state:True channel:#жалобы\nsetreports state:False",
"ENABLED": "Жалобы будут отправляться в **{{channel}}**!", "ENABLED": "Жалобы будут отправляться в **{{channel}}**!",
"DISABLED": "Жалобы отключены!" "DISABLED": "Жалобы отключены!"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Установить канал для предложений", "DESCRIPTION": "Установить канал для предложений",
"USAGE": "[true/false] (#канал)", "USAGE": "[state] (#channel)",
"EXAMPLES": "setsuggests true #предложения\nsetsuggests false", "EXAMPLES": "setsuggests state:True channel:#предложения\nsetsuggests state:False",
"ENABLED": "Предложения будут отправляться в **{{channel}}**!", "ENABLED": "Предложения будут отправляться в **{{channel}}**!",
"DISABLED": "Предложения отключены!" "DISABLED": "Предложения отключены!"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Скопировать эмодзи на текущий сервер", "DESCRIPTION": "Скопировать эмодзи на текущий сервер",
"USAGE": "[эмодзи]", "USAGE": "[emoji]",
"EXAMPLES": "stealemoji :coolstorybob:", "EXAMPLES": "stealemoji emoji::coolstorybob:",
"SUCCESS": "{{emoji}} добавлен!", "SUCCESS": "{{emoji}} добавлен!",
"ERROR": "Произошла ошибка при добавлении {{emoji}}.\n{{e}}" "ERROR": "Произошла ошибка при добавлении {{emoji}}.\n```{{e}}```"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Включить или отключить сообщения при входе пользователя на сервер", "DESCRIPTION": "Включить или отключить сообщения при входе пользователя на сервер",
"USAGE": "(test)", "USAGE": "config [state] [#channel] [message] [image] \nИли [test]",
"EXAMPLES": "welcome\nwelcome test", "EXAMPLES": "welcome state:True channel:#welcome Добро пожаловать! image:True\nwelcome test",
"ENABLED": "Приветствующие сообщения включены в {{channel}}!\nИспользуйте `welcome test` для просмотра сообщения!", "ENABLED": "Приветствующие сообщения включены в {{channel}}!\nИспользуйте `welcome test` для просмотра сообщения!",
"DISABLED": "Приветствующие сообщения отключены!", "DISABLED": "Приветствующие сообщения отключены!",
"DEFAULT_MESSAGE": "Добро пожаловать {user}! Нас теперь {membercount}!", "DEFAULT_MESSAGE": "Добро пожаловать {user}! Нас теперь {membercount}!",

View file

@ -1,62 +1,64 @@
{ {
"YES": "Да",
"NO": "Нет",
"APPLY": "Применить",
"ACCEPT": "Принять", "ACCEPT": "Принять",
"CANCEL": "Отменить",
"DECLINE": "Отказаться",
"ENABLE": "Включить",
"DISABLE": "Выключить",
"ENABLED": "Включено",
"DISABLED": "Отключено",
"NOT_DEFINED": "Не установлено",
"AUTHOR": "Автор",
"DATE": "Дата",
"MISSING": "Отсутствует",
"CONTENT": "Содержимое",
"REASON": "Причина",
"USER": "Пользователь",
"CREATION": "Создан",
"MEMBERS": "Участники",
"NAME": "Название",
"CHANNELS": "Каналы",
"ID": "ID сервера",
"OWNER": "Владелец",
"USERNAME": "Имя пользователя",
"STATS": "Статистика",
"STATE": "Состояние",
"ROBOT": "Бот",
"ACTIVITY": "Активность", "ACTIVITY": "Активность",
"STATUS": "Статус", "APPLY": "Применить",
"STATUS_ONLINE": "В сети", "AUTHOR": "Автор",
"STATUS_OFFLINE": "Не в сети", "AVAILABLE_OPTIONS": "Доступные параметры:",
"STATUS_IDLE": "Неактивен", "CANCEL": "Отменить",
"STATUS_DND": "Не беспокоить", "CHANNEL": "Канал",
"CHANNELS": "Каналы",
"COLOR": "Цвет",
"CONTENT": "Содержимое",
"CREATION": "Создан",
"CREDITS": "Кредиты",
"DATE": "Дата",
"DECLINE": "Отказаться",
"DEFEAT": "Поражение",
"DISABLE": "Выключить",
"DISABLED": "Отключено",
"DURATION": "Длительность (30s, 5m, 2h, 5d, 1w)",
"EMOJI": "Эмодзи",
"ENABLE": "Включить",
"ENABLED": "Включено",
"ID": "ID сервера",
"INT": "Целое число",
"IP": "IP адрес",
"JOINED": "Присоеденился",
"LANGUAGE": "Язык",
"LEVEL": "Уровень",
"MEMBER": "Участник",
"MEMBERS": "Участники",
"MESSAGE": "Сообщение",
"MISSING": "Отсутствует",
"MODERATOR": "Модератор",
"NAME": "Название",
"NICKNAME": "Ник на сервере",
"NO": "Нет",
"NOTHING_SELECTED": "Ничего не выбрано",
"NOT_DEFINED": "Не установлено",
"OWNER": "Владелец",
"PAGE": "Страница",
"PROFILE": "Профиль",
"REASON": "Причина",
"REP": "Очки репутации",
"ROBOT": "Бот",
"ROLE": "Роль", "ROLE": "Роль",
"ROLES": "Роли", "ROLES": "Роли",
"JOINED": "Присоеденился", "SERVERS": "Сервера",
"COLOR": "Цвет", "SETTINGS": "Настройки",
"NICKNAME": "Ник на сервере", "STATE": "Состояние",
"CREDITS": "Кредиты", "STATS": "Статистика",
"LEVEL": "Уровень", "STATUS": "Статус",
"REP": "Очки репутации", "STATUS_DND": "Не беспокоить",
"XP": "Опыт", "STATUS_IDLE": "Неактивен",
"STATUS_OFFLINE": "Не в сети",
"STATUS_ONLINE": "В сети",
"UNKNOWN": "Неизвестно",
"USER": "Пользователь",
"USERNAME": "Имя пользователя",
"USERS": "Пользователи",
"VICTORY": "Победа", "VICTORY": "Победа",
"VIEWS": "Просмотры", "VIEWS": "Просмотры",
"DEFEAT": "Поражение", "XP": "Опыт",
"MODERATOR": "Модератор", "YES": "Да"
"DURATION": "Длительность (30s, 5m, 2h, 5d, 1w)",
"SERVERS": "Сервера",
"PAGE": "Страница",
"MESSAGE": "Сообщение",
"PROFILE": "Профиль",
"SETTINGS": "Настройки",
"EMOJI": "Эмодзи",
"IP": "IP адрес",
"INT": "Целое число",
"LANGUAGE": "Язык",
"CHANNEL": "Канал",
"UNKNOWN": "Неизвестно",
"NOTHING_SELECTED": "Ничего не выбрано",
"AVAILABLE_OPTIONS": "Доступные параметры:"
} }

View file

@ -1,35 +1,35 @@
{ {
"FIRST_LOGIN": "{{user}} авторизовался в панели управления в первый раз! :tada:", "AUTOROLE_CONF": "🎖️ Автоматическое назначение роли",
"NOT_FOUND": "Упс! Страница не найдена.", "BASIC_CONF": "📝 Основные настройки",
"NOT_FOUND_CONTENT": "Я не нашёл то, что вы искали. А пока вы можете вернуться в панель управления.", "BIRTHDAYS": "Поздравления с днём рождения",
"CAN_USE": "Можно использовать",
"CHANNELS_CONF": "🌀 Специальные каналы",
"COOLDOWNS": "Откаты",
"ERR_OCCURRED": "Упс! Что-то пошло не так.", "ERR_OCCURRED": "Упс! Что-то пошло не так.",
"ERR_OCCURRED_CONTENT": "Я постараюсь исправить это как можно скорее (можете сообщить владельцу о проблеме). А пока вы можете вернуться в панель управления.", "ERR_OCCURRED_CONTENT": "Я постараюсь исправить это как можно скорее (можете сообщить владельцу о проблеме). А пока вы можете вернуться в панель управления.",
"SEARCH": "Поиск по серверам...", "FIRST_LOGIN": "{{user}} авторизовался в панели управления в первый раз! :tada:",
"SERVERS_LIST": "Список серверов", "GOODBYE_CONF": "😢 Сообщение при выходе пользователя с сервера",
"SERVERS_MANAGEMENT": "Управление серверами", "GOODBYE_IMG": "😢 Добавлять карточку",
"MANAGE": "Управление",
"MODLOGS": "Логи модерации",
"NEWS": "Новости бота",
"NOT_FOUND": "Упс! Страница не найдена.",
"NOT_FOUND_CONTENT": "Я не нашёл то, что вы искали. А пока вы можете вернуться в панель управления.",
"NO_CHANNEL": "Канал не выбран",
"NO_DEFENCE": "Вы беспомощны",
"NO_SERVER": "Сервер не найден", "NO_SERVER": "Сервер не найден",
"NO_SERVER_CONTENT": "Нечего отображать. Убедитесь, что вы вошли в систему с правильной учетной записью, и повторите попытку.", "NO_SERVER_CONTENT": "Нечего отображать. Убедитесь, что вы вошли в систему с правильной учетной записью, и повторите попытку.",
"BASIC_CONF": "📝 Основные настройки",
"WELCOME_CONF": "👋 Сообщение при входе пользователя на сервер",
"GOODBYE_CONF": "😢 Сообщение при выходе пользователя с сервера",
"WELCOME_IMG": "👋 Добавлять карточку",
"GOODBYE_IMG": "😢 Добавлять карточку",
"CHANNELS_CONF": "🌀 Специальные каналы",
"AUTOROLE_CONF": "🎖️ Автоматическое назначение роли",
"NO_CHANNEL": "Канал не выбран",
"NEWS": "Новости бота",
"REPORTS": "Жалобы",
"MODLOGS": "Логи модерации",
"SUGGESTIONS": "Предложения",
"BIRTHDAYS": "Поздравления с днём рождения",
"SELECTOR": "Выбор серверов",
"MANAGE": "Управление",
"COOLDOWNS": "Откаты",
"REP": "Команда rep", "REP": "Команда rep",
"WORK": "Зарплата в work", "REPORTS": "Жалобы",
"ROB": "Защита от rob", "ROB": "Защита от rob",
"CAN_USE": "Можно использовать", "SEARCH": "Поиск по серверам...",
"NO_DEFENCE": "Вы беспомощны", "SELECTOR": "Выбор серверов",
"SERVERS_LIST": "Список серверов",
"SERVERS_MANAGEMENT": "Управление серверами",
"SUGGESTIONS": "Предложения",
"TOP_CREDITS": "Первый по кредитам",
"TOP_LEVEL": "Первый по уровню", "TOP_LEVEL": "Первый по уровню",
"TOP_CREDITS": "Первый по кредитам" "WELCOME_CONF": "👋 Сообщение при входе пользователя на сервер",
"WELCOME_IMG": "👋 Добавлять карточку",
"WORK": "Зарплата в work"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Показать список достижений пользователя", "DESCRIPTION": "Показать список достижений пользователя",
"USAGE": "(@пользователь)", "USAGE": "(@user)",
"EXAMPLES": "achievements\nachievements @Jonny_Bro#4226", "EXAMPLES": "achievements\nachievements user:@Jonny_Bro#4226",
"SEND_CMD": "Используйте свою первую команду!", "SEND_CMD": "Используйте свою первую команду!",
"CLAIM_SALARY": "Получите зарплату 10 раз!", "CLAIM_SALARY": "Получите зарплату 10 раз!",
"MARRY": "Найдите вторую половинку и женитесь!", "MARRY": "Найдите вторую половинку и женитесь!",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Управление банковским счётом", "DESCRIPTION": "Управление банковским счётом",
"USAGE": "[deposit/withdraw] [сумма/all]", "USAGE": "[option] [credits/all]",
"EXAMPLES": "bank deposit 1000\nbank withdraw all", "EXAMPLES": "bank option:deposit credits:1000\nbank option:withdraw credits:all",
"OPTION": "Действие", "OPTION": "Действие",
"DEPOSIT": "Внести", "DEPOSIT": "Внести",
"WITHDRAW": "Снять", "WITHDRAW": "Снять",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Установить дату рождения", "DESCRIPTION": "Установить дату рождения",
"USAGE": "[ДД] [ММ] [ГГГГ]", "USAGE": "[day] [month] [year]",
"EXAMPLES": "birthdate 17 03 2002", "EXAMPLES": "birthdate day:17 month:03 year:2000",
"DAY": "День", "DAY": "День",
"MONTH": "Месяц", "MONTH": "Месяц",
"YEAR": "Год", "YEAR": "Год",

View file

@ -1,11 +1,10 @@
{ {
"DESCRIPTION": "Показать таблицу лидеров по кредитам, уровню или очкам репутации", "DESCRIPTION": "Показать таблицу лидеров по кредитам, уровню или очкам репутации",
"USAGE": "[rep/level/credits]", "USAGE": "[type]",
"EXAMPLES": "leaderboard credits", "EXAMPLES": "leaderboard type:Уровень",
"LEVEL": "Уровень", "LEVEL": "Уровень",
"MONEY": "Кредиты", "MONEY": "Кредиты",
"REP": "Репутация", "REP": "Репутация",
"MOBILE": ":confused: Я заметил, что вы онлайн с телефона... Таблица лидеров может отображаться некорректно на маленьких экранах. Попробуйте позже с другого устройства!", "MOBILE": ":confused: Я заметил, что вы онлайн с телефона... Таблица лидеров может отображаться некорректно на маленьких экранах. Попробуйте позже с другого устройства!",
"TABLE": "Таблица лидеров {{name}}", "TABLE": "Таблица лидеров {{name}}"
"TOP": "Топ 20"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Женитесь на том, кого любите", "DESCRIPTION": "Женитесь на том, кого любите",
"USAGE": "[@пользователь]", "USAGE": "[@user]",
"EXAMPLES": "marry @Jonny_Bro#4226", "EXAMPLES": "marry user:@Jonny_Bro#4226",
"ALREADY_MARRIED": "Вы уже состоите в браке! Вы можете развестить с помощью команды `divorce`.", "ALREADY_MARRIED": "Вы уже состоите в браке! Вы можете развестить с помощью команды `divorce`.",
"ALREADY_MARRIED_USER": "Вы опоздали! {{user}} уже состоит в браке!", "ALREADY_MARRIED_USER": "Вы опоздали! {{user}} уже состоит в браке!",
"YOURSELF": "Вы не можете жениться на себе!", "YOURSELF": "Вы не можете жениться на себе!",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Показать количество кредитов у пользователя", "DESCRIPTION": "Показать количество кредитов у пользователя",
"USAGE": "(@пользователь)", "USAGE": "(@user)",
"EXAMPLES": "money\nmoney @Jonny_Bro#4226", "EXAMPLES": "money\nmoney user:@Jonny_Bro#4226",
"BOT_USER": "Никто не знает сколько у ботов денег...", "BOT_USER": "Никто не знает сколько у ботов денег...",
"TITLE": "Кредиты {{username}}" "TITLE": "Кредиты {{username}}"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Отправить кредиты пользователю", "DESCRIPTION": "Отправить кредиты пользователю",
"USAGE": "[@пользователь] [сумма]", "USAGE": "[@user] [amount]",
"EXAMPLES": "pay @Jonny_Bro#4226 1000", "EXAMPLES": "pay user:@Jonny_Bro#4226 amount:1000",
"BOT_USER": "Ботам не нужны деньги B)!", "BOT_USER": "Ботам не нужны деньги B)!",
"YOURSELF": "Вы не можете перевести кредиты самому себе!", "YOURSELF": "Вы не можете перевести кредиты самому себе!",
"INVALID_AMOUNT": "Укажите сумму", "INVALID_AMOUNT": "Укажите сумму",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Показать профиль пользователя", "DESCRIPTION": "Показать профиль пользователя",
"USAGE": "(@пользователь)", "USAGE": "(@user)",
"EXAMPLES": "profile\nprofile @Jonny_Bro#4226", "EXAMPLES": "profile\nprofile user:@Jonny_Bro#4226",
"BOT_USER": "У ботов нет профиля!", "BOT_USER": "У ботов нет профиля!",
"TITLE": "Профиль {{user}}", "TITLE": "Профиль {{user}}",
"LINK": "Профиль", "LINK": "Профиль",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Дать репутацию пользователю", "DESCRIPTION": "Дать репутацию пользователю",
"USAGE": "[@пользователь]", "USAGE": "[@user]",
"EXAMPLES": "rep @Jonny_Bro#4226", "EXAMPLES": "rep user:@Jonny_Bro#4226",
"COOLDOWN": "Вы должны подождать **{{time}}** до следующего использования!", "COOLDOWN": "Вы должны подождать **{{time}}** до следующего использования!",
"BOT_USER": "Боты и так крутые B)", "BOT_USER": "Боты и так крутые B)",
"YOURSELF": "Вы не можете дать очко репутации самому себе!", "YOURSELF": "Вы не можете дать очко репутации самому себе!",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Попытаться ограбить пользователя", "DESCRIPTION": "Попытаться ограбить пользователя",
"USAGE": "[@пользователь] [сумма]", "USAGE": "[@user] [amount]",
"EXAMPLES": "rob @Jonny_Bro#4226 100", "EXAMPLES": "rob user:@Jonny_Bro#4226 amount:100",
"BOT_USER": "Вы не можете ограбить бота!", "BOT_USER": "Вы не можете ограбить бота!",
"YOURSELF": "Вы не можете ограбить себя!", "YOURSELF": "Вы не можете ограбить себя!",
"NOT_ENOUGH_AUTHOR": "У вас должно быть хотя бы {{moneyMin}}, чтобы грабить данного пользователя (сейчас у вас {{moneyCurrent}})!", "NOT_ENOUGH_AUTHOR": "У вас должно быть хотя бы {{moneyMin}}, чтобы грабить данного пользователя (сейчас у вас {{moneyCurrent}})!",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Установить биографию", "DESCRIPTION": "Установить биографию",
"USAGE": "[текст]", "USAGE": "[text]",
"EXAMPLES": "setbio Меня зовут Жоня :shock:", "EXAMPLES": "setbio text:Меня зовут Жоня :shock:",
"MAX_CHARACTERS": "Ваша биография не должна превышать 150 символов!", "MAX_CHARACTERS": "Ваша биография не должна превышать 150 символов!",
"SUCCESS": "Ваша биография изменена!" "SUCCESS": "Ваша биография изменена!"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Казино \"Casino JaBa\"", "DESCRIPTION": "Казино \"Casino JaBa\"",
"USAGE": "[сумма]", "USAGE": "[amount]",
"EXAMPLES": "slots 100", "EXAMPLES": "slots amount:100",
"DEFEAT": "{{user}} поставил {{money}} и всё проиграл.", "DEFEAT": "{{user}} поставил {{money}} и всё проиграл.",
"VICTORY": "{{user}} поставил {{money}} и выиграл {{won}}!", "VICTORY": "{{user}} поставил {{money}} и выиграл {{won}}!",
"NOT_ENOUGH": "У вас нет {{money}}." "NOT_ENOUGH": "У вас нет {{money}}."

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Крестики-нолики", "DESCRIPTION": "Крестики-нолики",
"USAGE": "[@пользователь]", "USAGE": "[@user]",
"EXAMPLES": "tictactoe @Jonny_Bro#4226", "EXAMPLES": "tictactoe user:@Jonny_Bro#4226",
"BOT_USER": "Вы не можете играть против бота!", "BOT_USER": "Вы не можете играть против бота!",
"YOURSELF": "Вы не можете играть с самим собой!", "YOURSELF": "Вы не можете играть с самим собой!",
"INVITE_USER": "<@{{opponent}}>, вам предложили сыграть в крестики-нолики!", "INVITE_USER": "<@{{opponent}}>, вам предложили сыграть в крестики-нолики!",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Посмотреть историю транзакций", "DESCRIPTION": "Посмотреть или очистить историю своих транзакций",
"USAGE": "", "USAGE": "(clear)",
"EXAMPLES": "transactions", "EXAMPLES": "transactions\n transactions clear:True",
"CLEAR": "Очистить список транзакций?", "CLEAR": "Очистить список транзакций?",
"CLEARED": "Список транзакций очищен", "CLEARED": "Список транзакций очищен",
"NO_TRANSACTIONS": "У вас нет транзакций", "NO_TRANSACTIONS": "У вас нет транзакций",

View file

@ -1,9 +1,10 @@
{ {
"DESCRIPTION": "Я говорю правду", "DESCRIPTION": "Я говорю правду",
"USAGE": "[вопрос]", "USAGE": "[question]",
"QUESTION": "Вопрос", "QUESTION": "Вопрос",
"EXAMPLES": "8ball JaBa крутой?", "EXAMPLES": "8ball question:JaBa крутой?",
"ERR_QUESTION": "Вопрос должен оканчиваться на `?`.", "ERR_QUESTION": "Вопрос должен оканчиваться на `?`",
"ANSWER": "**Вопрос:** {{question}}\n**Ответ:** {{answer}}",
"RESPONSE_1": "Бесспорно", "RESPONSE_1": "Бесспорно",
"RESPONSE_2": "Предрешено", "RESPONSE_2": "Предрешено",
"RESPONSE_3": "Никаких сомнений", "RESPONSE_3": "Никаких сомнений",

View file

@ -1,5 +1,6 @@
{ {
"DESCRIPTION": "Создать LMGTFY (давай я загуглю это для тебя) ссылку", "DESCRIPTION": "Создать LMGTFY (давай я загуглю это для тебя) ссылку",
"USAGE": "[запрос]", "USAGE": "[query] [short]",
"EXAMPLES": "lmgtfy Как создать Discord бота?" "QUERY": "Запрос",
"EXAMPLES": "lmgtfy query:Как создать Discord бота? short:False"
} }

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Калькулятор любви", "DESCRIPTION": "Калькулятор любви",
"USAGE": "[@пользователь1] (@пользователь2)", "USAGE": "[@first_member] (@second_member)",
"EXAMPLES": "lovecalc @Jonny_Bro#4226\nlovecalc @Jonny_Bro#4226 @JaBa#9042", "EXAMPLES": "lovecalc first_member:@Jonny_Bro#4226\nlovecalc first_member:@Jonny_Bro#4226 second_member:@JaBa#9042",
"CONTENT": "{{firstMember}} любит {{secondMember}} на **{{percent}}%**!" "CONTENT": "{{firstMember}} любит {{secondMember}} на **{{percent}}%**!"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Установить AFK статус (пользователь который упомянет вас получит сообщение)", "DESCRIPTION": "Установить AFK статус (пользователь который упомянет вас получит сообщение)",
"USAGE": "[причина]", "USAGE": "[message]",
"EXAMPLES": "afk Сру =)", "EXAMPLES": "afk message:Сру =)",
"SUCCESS": "Теперь вы AFK по причине: **{{reason}}**", "SUCCESS": "Теперь вы AFK по причине: **{{reason}}**",
"DELETED": "**{{username}}**, ваш AFK статус удалён!", "DELETED": "**{{username}}**, ваш AFK статус удалён!",
"IS_AFK": "**{{user}}** сейчас AFK, причина:\n```{{reason}}```" "IS_AFK": "**{{user}}** сейчас AFK, причина:\n```{{reason}}```"

View file

@ -1,5 +1,5 @@
{ {
"DESCRIPTION": "Возвращает аватар пользователя", "DESCRIPTION": "Возвращает аватар пользователя",
"USAGE": "(@пользователь)", "USAGE": "(@user)",
"EXAMPLES": "avatar\navatar @Jonny_Bro#4226" "EXAMPLES": "avatar\navatar user:@Jonny_Bro#4226"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Показать информацию об эмодзи", "DESCRIPTION": "Показать информацию об эмодзи",
"USAGE": "[эмодзи]", "USAGE": "[emoji]",
"EXAMPLES": "emoji :tada:", "EXAMPLES": "emoji emoji::tada:",
"TITLE": "Информация об {{emoji}}", "TITLE": "Информация об {{emoji}}",
"ANIMATED": "Анимирован", "ANIMATED": "Анимирован",
"ID": "ID", "ID": "ID",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Показать список команд или помощь по данной команде", "DESCRIPTION": "Показать список команд или помощь по данной команде",
"USAGE": "(команда)", "USAGE": "(command)",
"EXAMPLES": "help\nhelp ping", "EXAMPLES": "help\nhelp command:ping",
"NOT_FOUND": "Команда {{command}} не найдена", "NOT_FOUND": "Команда {{command}} не найдена",
"COMMANDS_IN": "Доступные команды в категории `{{category}}`:", "COMMANDS_IN": "Доступные команды в категории `{{category}}`:",
"FIELD_USAGE": "Использование", "FIELD_USAGE": "Использование",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Показать информацию о Minecraft сервере", "DESCRIPTION": "Показать информацию о Minecraft сервере",
"USAGE": "[IP]", "USAGE": "[IP]",
"EXAMPLES": "minecraft mc.hypixel.net", "EXAMPLES": "minecraft IP:mc.hypixel.net",
"FAILED": "Сервер недоступен или доступ запрещён!", "FAILED": "Сервер недоступен или доступ запрещён!",
"ONLINE": "Онлайн", "ONLINE": "Онлайн",
"OFFLINE": "Оффлайн", "OFFLINE": "Оффлайн",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Создать напоминание", "DESCRIPTION": "Создать напоминание",
"USAGE": "[время] [сообщение]", "USAGE": "[time] [message]",
"EXAMPLES": "remindme 12h Использовать команду work\nremindme 5m Достать курицу из морозилки!", "EXAMPLES": "remindme time:12h message:Использовать команду work\nremindme time:5m message:Достать курицу из морозилки!",
"TIME": "Время (Например: 10s, 5m, 2h, 1d, 3w)", "TIME": "Время (Например: 10s, 5m, 2h, 1d, 3w)",
"SAVED": "Напоминание `{{message}}` сохранено **{{time}}**", "SAVED": "Напоминание `{{message}}` сохранено **{{time}}**",
"TITLE": "Напоминание от JaBa", "TITLE": "Напоминание от JaBa",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Отправить жалобу в специальный канал", "DESCRIPTION": "Отправить жалобу в специальный канал",
"USAGE": "[@пользователь] (причина)", "USAGE": "[@user] (message)",
"EXAMPLES": "report @Jonny_Bro#4226 Нарушение правил", "EXAMPLES": "report user:@Jonny_Bro#4226 message:Нарушение правил",
"MISSING_CHANNEL": "Канал для жалоб не настроен!", "MISSING_CHANNEL": "Канал для жалоб не настроен!",
"INVALID_USER": "Вы не можете пожаловаться на себя", "INVALID_USER": "Вы не можете пожаловаться на себя",
"SUCCESS": "Ваша жалоба отправлена в {{channel}}!", "SUCCESS": "Ваша жалоба отправлена в {{channel}}!",

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Укоротить ссылку", "DESCRIPTION": "Укоротить ссылку",
"USAGE": "[URL]", "USAGE": "[url]",
"EXAMPLES": "shorturl https://google.com", "EXAMPLES": "shorturl url:https://google.com",
"URL": "Ссылка" "URL": "Ссылка"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Отправить предложение в специальный канал", "DESCRIPTION": "Отправить предложение в специальный канал",
"USAGE": "[предложение]", "USAGE": "[message]",
"EXAMPLES": "suggest Новый канал #nsfw :smiling_imp:", "EXAMPLES": "suggest message:Новый канал #nsfw :smiling_imp:",
"MISSING_CHANNEL": "Канал для предложений не настроен!", "MISSING_CHANNEL": "Канал для предложений не настроен!",
"MISSING_CONTENT": "Введите предложение!", "MISSING_CONTENT": "Введите предложение!",
"TITLE": "Предложение - {{user}}", "TITLE": "Предложение - {{user}}",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Показать информацию о пользователе", "DESCRIPTION": "Показать информацию о пользователе",
"USAGE": "(@пользователь)", "USAGE": "(@user)",
"EXAMPLES": "userinfo\nuserinfo @Jonny_Bro#4226", "EXAMPLES": "userinfo\nuserinfo user:@Jonny_Bro#4226",
"CUSTOM": "Пользовательский статус", "CUSTOM": "Пользовательский статус",
"NO_ACTIVITY": "Не играет", "NO_ACTIVITY": "Не играет",
"NO_ROLE": "Нет роли", "NO_ROLE": "Нет роли",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Получить информацию об IP адресе", "DESCRIPTION": "Получить информацию об IP адресе",
"USAGE": "[IP]", "USAGE": "[IP]",
"EXAMPLES": "whois 8.8.8.8", "EXAMPLES": "whois IP:8.8.8.8",
"ERROR": "Произошла ошибка при получении данных об {{ip}}", "ERROR": "Произошла ошибка при получении данных об {{ip}}",
"INFO_ABOUT": "Информация об {{ip}}", "INFO_ABOUT": "Информация об {{ip}}",
"COUNTRY": "Страна", "COUNTRY": "Страна",

View file

@ -1,17 +1,17 @@
{ {
"MORE_THAN_ZERO": "Укажите целое число больше 0!",
"OPTION_NAN_ALL": "Укажите целое число больше 0 или `all`!",
"TIMES_UP": "Время вышло! Используйте команду снова!",
"SELECT_CANCELED": "Выбор отменён...",
"INVALID_NUMBER_RANGE": "Укажите число от **{{min}}** до **{{max}}**!",
"FORCE_STOP": "Игра принудительно окончена {{user}}, никто не победил!",
"STATS_FOOTER": "● [Панель управления]({{dashboardLink}})\n● [Документация]({{docsLink}})\n● [Пригласить JaBa на свой сервер]({{inviteLink}})\n● [Поддержать]({{donateLink}}) (укажите ваш Discord тэг для выдачи ачивки, для других способов поддержки пишите в ЛС <@{{owner}}>)",
"BOT_USER": "Вы не можете сделать это с ботом!", "BOT_USER": "Вы не можете сделать это с ботом!",
"HELLO_SERVER": "Привет, **{{username}}**! Все мои команды доступны через **/** Используйте `/help`, чтобы получить список команд!", "FORCE_STOP": "Игра принудительно окончена {{user}}, никто не победил!",
"GUILD_ONLY": "Данную команду можно использовать только на сервере!", "GUILD_ONLY": "Данную команду можно использовать только на сервере!",
"NSFW_COMMAND": "Данную команду можно использовать только в NSFW канале!", "HELLO_SERVER": "Привет, **{{username}}**! Все мои команды доступны через **/** Используйте `/help`, чтобы получить список команд!",
"OWNER_ONLY": "Данную команду может использовать только владелец бота!", "INVALID_NUMBER_RANGE": "Укажите число от **{{min}}** до **{{max}}**!",
"MORE_THAN_ZERO": "Укажите целое число больше 0!",
"NO_ARGS": "Агрументы не требуются", "NO_ARGS": "Агрументы не требуются",
"NSFW_COMMAND": "Данную команду можно использовать только в NSFW канале!",
"OPTION_NAN_ALL": "Укажите целое число больше 0 или `all`!",
"OWNER_ONLY": "Данную команду может использовать только владелец бота!",
"SELECT_CANCELED": "Выбор отменён...",
"STATS_FOOTER": "● [Панель управления]({{dashboardLink}})\n● [Документация]({{docsLink}})\n● [Пригласить JaBa на свой сервер]({{inviteLink}})\n● [Поддержать]({{donateLink}}) (укажите ваш Discord тэг для выдачи ачивки, для других способов поддержки пишите в ЛС <@{{owner}}>)",
"TIMES_UP": "Время вышло! Используйте команду снова!",
"PERMISSIONS": { "PERMISSIONS": {
"CreateInstantInvite": "Создание приглашения", "CreateInstantInvite": "Создание приглашения",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Очистка сообщений в канале", "DESCRIPTION": "Очистка сообщений в канале",
"USAGE": "[кол-во_сообщений] (@пользователь)", "USAGE": "[option] (@user)",
"EXAMPLES": "clear 10\r 10 @Jonny_Bro#4226\nclear all", "EXAMPLES": "clear option:10\nclear option:10 user:@Jonny_Bro#4226\nclear option:all",
"OPTION": "Целое число / all", "OPTION": "Целое число / all",
"ALL_CONFIRM": "**Все сообщения в канале будут удалены! Вы уверены?**", "ALL_CONFIRM": "**Все сообщения в канале будут удалены! Вы уверены?**",
"CHANNEL_CLEARED": "Канал очищен!", "CHANNEL_CLEARED": "Канал очищен!",

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Снять все предупреждения с пользователя", "DESCRIPTION": "Снять все предупреждения с пользователя",
"USAGE": "[@пользователь]", "USAGE": "[@user]",
"EXAMPLES": "clearwarns @Jonny_Bro#4226", "EXAMPLES": "clearwarns user:@Jonny_Bro#4226",
"SUCCESS": "Предупреждения пользователя {{user}} удалены!" "SUCCESS": "Предупреждения пользователя {{user}} удалены!"
} }

View file

@ -1,17 +1,15 @@
{ {
"DESCRIPTION": "Управление раздачами", "DESCRIPTION": "Управление раздачами",
"USAGE": "[create/reroll/delete/end] [время] [кол-во победителей] [приз] (Дроп?)", "USAGE": "[create] [duration] [winners_count] [prize] [isdrop]]\nИли [reroll/end/delete] [giveaway_id]",
"EXAMPLES": "giveaway create 1d 2 Discord Нитро!\ngiveaway create 1d 2 true Discord Нитро\ngiveaway reroll 597812898022031374", "EXAMPLES": "create duration:1w winners_count:1 prize:Discord Nitro isdrop:False\ngiveaway reroll giveaway_id:597812898022031374",
"CREATE": "Создать", "CREATE": "Создать раздачу",
"REROLL": "Заролить снова", "REROLL": "Заролить раздачу повторно",
"DELETE": "Удалить", "DELETE": "Удалить раздачу",
"END": "Закончить принудительно", "END": "Закончить раздачу принудительно",
"INVALID_CREATE": "Какой-то из аргументов указан неверно, попробуйте снова!",
"GIVEAWAY_ID": "ID сообщения раздачи", "GIVEAWAY_ID": "ID сообщения раздачи",
"WINNERS_COUNT": "Количество победителей", "WINNERS_COUNT": "Количество победителей",
"PRIZE": "Приз", "PRIZE": "Приз",
"ISDROP": "Это дроп?", "ISDROP": "Это дроп?",
"MISSING_ID": "Укажите ID сообщения раздачи!",
"NOT_FOUND": "Раздач с ID `{{messageId}}` не найдено!", "NOT_FOUND": "Раздач с ID `{{messageId}}` не найдено!",
"NOT_FOUND_ENDED": "**Оконченных** раздач с ID `{{messageId}} не найдено!`!", "NOT_FOUND_ENDED": "**Оконченных** раздач с ID `{{messageId}} не найдено!`!",
"MAX_DURATION": "Максимальная длительность раздачи - 10 дней.", "MAX_DURATION": "Максимальная длительность раздачи - 10 дней.",
@ -25,13 +23,13 @@
"DROP": "Будь первым кто отреагирует 🎉!", "DROP": "Будь первым кто отреагирует 🎉!",
"FOOTER": "Раздача", "FOOTER": "Раздача",
"NO_WINNER": "Раздача отменена, никто не участвовал.", "NO_WINNER": "Раздача отменена, никто не участвовал.",
"WINNERS": "Победитель(и)", "WINNERS": "Победитель(и):",
"END_AT": "Закончилась:", "END_AT": "Закончилась:",
"HOSTEDBY": "Организатор: {this.hostedBy}", "HOSTED_BY": "Организатор: {this.hostedBy}",
"REROLL_CONGRAT": "🎉 Новый(е) победитель(и): {winners}! Поздравляем!", "REROLL_CONGRAT": "🎉 Новый(е) победитель(и): {winners}! Поздравляем!",
"REROLL_ERROR": "Нет действительных участников, никто не выиграл!", "REROLL_ERROR": "Нет действительных участников, никто не выиграл!",
"GIVEAWAY_CREATED": "Раздача начата!", "GIVEAWAY_CREATED": "Раздача начата",
"GIVEAWAY_REROLLED": "Раздача перезапущена!", "GIVEAWAY_REROLLED": "Раздача перезапущена",
"GIVEAWAY_ENDED": "Раздача принудительно окончена!", "GIVEAWAY_ENDED": "Раздача принудительно окончена",
"GIVEAWAY_DELETED": "Раздача удалена!" "GIVEAWAY_DELETED": "Раздача удалена"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Запустить опрос в текущем канале", "DESCRIPTION": "Запустить опрос в текущем канале",
"USAGE": "[вопрос]", "USAGE": "[question]",
"EXAMPLES": "poll Земля плоская?", "EXAMPLES": "poll question:Земля плоская?",
"QUESTION": "Текст вопроса", "QUESTION": "Текст вопроса",
"NOTHING": "Без упоминания", "NOTHING": "Без упоминания",
"SELECT_MENTION": "Выберите упоминание:", "SELECT_MENTION": "Выберите упоминание:",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Разбанить пользователя на сервере", "DESCRIPTION": "Разбанить пользователя на сервере",
"USAGE": "[ID]", "USAGE": "[user_id]",
"EXAMPLES": "unban 281361531411890186", "EXAMPLES": "unban user_id:281361531411890186",
"ID": "ID пользователя", "ID": "ID пользователя",
"NOT_BANNED": "Пользователь с ID **{{id}}** не найден", "NOT_BANNED": "Пользователь с ID **{{id}}** не найден",
"UNBANNED": "**{{id}}** разбанен!" "UNBANNED": "**{{id}}** разбанен!"

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Выдать предупреждение пользователю", "DESCRIPTION": "Выдать предупреждение пользователю",
"USAGE": "ПКМ на пользователя - Приложения - warn", "USAGE": "ПКМ на пользователя > Приложения > warn (С аватаркой JaBa)",
"EXAMPLES": "", "EXAMPLES": "warn",
"YOURSELF": "Вы не можете подать жалобу на себя!", "YOURSELF": "Вы не можете подать жалобу на себя!",
"MODAL_TITLE": "Выдать предупреждение {{nickname}}", "MODAL_TITLE": "Выдать предупреждение {{nickname}}",
"MODAL_REASON": "Причина предупреждения", "MODAL_REASON": "Причина предупреждения",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Показать список нарушений пользователя", "DESCRIPTION": "Показать список нарушений пользователя",
"USAGE": "[@пользователь]", "USAGE": "[@user]",
"EXAMPLES": "warns @Jonny_Bro#4226", "EXAMPLES": "warns user:@Jonny_Bro#4226",
"SANCTIONS_OF": "Нарушения {{member}}", "SANCTIONS_OF": "Нарушения {{member}}",
"NO_SANCTIONS": "У **{{member}}** нет нарушений." "NO_SANCTIONS": "У **{{member}}** нет нарушений."
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Начать воспроизведение трека", "DESCRIPTION": "Начать воспроизведение трека",
"USAGE": "[название-трека/ссылка]", "USAGE": "[query]",
"EXAMPLES": "play Never Gonna Give You Up", "EXAMPLES": "play query:Never Gonna Give You Up",
"QUERY": "Название / Прямая ссылка / Ссылка на YouTube или SoundCloud", "QUERY": "Название / Прямая ссылка / Ссылка на YouTube или SoundCloud",
"NO_VOICE_CHANNEL": "Вы должны находиться в голосовом канале!", "NO_VOICE_CHANNEL": "Вы должны находиться в голосовом канале!",
"VOICE_CHANNEL_CONNECT": "Я не могу присоедениться к вашему голосовому каналу!", "VOICE_CHANNEL_CONNECT": "Я не могу присоедениться к вашему голосовому каналу!",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Перемотать вперед или назад на данное время в текущем треке", "DESCRIPTION": "Перемотать вперед или назад на данное время в текущем треке",
"USAGE": "[время]", "USAGE": "[time]",
"EXAMPLES": "seek 10s\nseek -10s", "EXAMPLES": "seek time:10s\nseek time:-10s",
"TIME": "Время в секундах", "TIME": "Время в секундах",
"SUCCESS": "Трек перемотан на {{time}}!" "SUCCESS": "Трек перемотан на {{time}}!"
} }

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Перейти на заданный трек", "DESCRIPTION": "Перейти на заданный трек",
"USAGE": "[номер]", "USAGE": "[position]",
"EXAMPLES": "skipto 3", "EXAMPLES": "skipto position:3",
"POSITION": "Номер трека в очереди", "POSITION": "Номер трека в очереди",
"SUCCESS": "Выполнен переход на трек под номером **{{position}}**", "SUCCESS": "Выполнен переход на трек под номером **{{position}}**",
"ERROR": "На позиции {{position}} ничего не найдено", "ERROR": "На позиции {{position}} ничего не найдено",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Отправить объявление на все сервера где есть JaBa", "DESCRIPTION": "Отправить объявление на все сервера где есть JaBa",
"USAGE": "[текст] [true/false]", "USAGE": "[message] [tag]",
"EXAMPLES": "announcement Обновление v1.0! true", "EXAMPLES": "announcement message:Обновление v1.0! tag:True",
"TAG": "Подставить @everyone в сообщение?", "TAG": "Подставить @everyone в сообщение?",
"TOO_LONG": "Текст должен быть короче 1000 символов!", "TOO_LONG": "Текст должен быть короче 1000 символов!",
"TITLE": "📢 Объявление:", "TITLE": "📢 Объявление:",

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Позволяет изменять данные пользователя", "DESCRIPTION": "Позволяет изменять данные пользователя",
"USAGE": "[set/add] [тип] [@пользователь] [значение]", "USAGE": "[set/add] [type] [@user] [int]",
"EXAMPLES": "debug set level @Jonny_Bro#4226 10000", "EXAMPLES": "debug set type:Уровень user:@Jonny_Bro#4226 int:100",
"TYPE": "Тип данных", "TYPE": "Тип данных",
"SET": "Установить значение", "SET": "Установить значение",
"ADD": "Добавить к значению", "ADD": "Добавить к значению",

View file

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

View file

@ -1,7 +1,7 @@
{ {
"DESCRIPTION": "Перезагрузить команду", "DESCRIPTION": "Перезагрузить команду",
"USAGE": "[названиеоманды]", "USAGE": "[command]",
"EXAMPLES": "reload help", "EXAMPLES": "reload command:help",
"COMMAND": "Команда", "COMMAND": "Команда",
"NOT_FOUND": "Команда `{{command}}` не найдена!", "NOT_FOUND": "Команда `{{command}}` не найдена!",
"SUCCESS": "Команда `{{command}}` успешно перезагружена!" "SUCCESS": "Команда `{{command}}` успешно перезагружена!"

View file

@ -1,6 +1,6 @@
{ {
"DESCRIPTION": "Написать сообщение от имени бота", "DESCRIPTION": "Написать сообщение от имени бота",
"USAGE": "[текст] (#канал)", "USAGE": "[message] (#channel)",
"EXAMPLES": "say Hello World!\nsay Hello World! #новости", "EXAMPLES": "say message:Hello World!\nsay message:Hello World! channel:#новости",
"DONE": "Сообщение `{{message}}` отправлено в {{channel}}!" "DONE": "Сообщение `{{message}}` отправлено в {{channel}}!"
} }

View file

@ -20,7 +20,7 @@
"NO_WINNER": "Роздача скасована, ніхто не брав участь.", "NO_WINNER": "Роздача скасована, ніхто не брав участь.",
"WINNERS": "Переможець(і)", "WINNERS": "Переможець(і)",
"END_AT": "Закінчилась:", "END_AT": "Закінчилась:",
"HOSTEDBY": "Організатор: {this.hostedBy}", "HOSTED_BY": "Організатор: {this.hostedBy}",
"REROLL_CONGRAT": "🎉 Новий переможець(и): {winners}! Вітаємо!", "REROLL_CONGRAT": "🎉 Новий переможець(и): {winners}! Вітаємо!",
"REROLL_ERROR": "Немає дійсних учасників, ніхто не виграв!", "REROLL_ERROR": "Немає дійсних учасників, ніхто не виграв!",
"GIVEAWAY_CREATED": "Роздача розпочата!", "GIVEAWAY_CREATED": "Роздача розпочата!",

View file

@ -1,6 +1,6 @@
{ {
"name": "jaba", "name": "jaba",
"version": "4.1.7", "version": "4.1.8",
"description": "My Discord Bot", "description": "My Discord Bot",
"main": "index.js", "main": "index.js",
"private": true, "private": true,