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 = "";
for (let i = 0; i < membersLeaderboard.length; 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`;
}
@ -88,7 +87,7 @@ class Leaderboard extends BaseCommand {
})
.setColor(client.config.embed.color)
.addFields({
name: interaction.translate("economy/leaderboard:TOP"),
name: interaction.translate("common:USER"),
value: userNames,
inline: true
}, {
@ -119,9 +118,8 @@ class Leaderboard extends BaseCommand {
const xp = [];
for (let i = 0; i < membersLeaderboard.length; 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}`);
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)
.addFields([
{
name: interaction.translate("economy/leaderboard:TOP"),
name: interaction.translate("common:USER"),
value: userNames.join("\n"),
inline: true
},
@ -172,9 +170,8 @@ class Leaderboard extends BaseCommand {
let rep = "";
for (let i = 0; i < usersLeaderboard.length; 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`;
}
@ -187,7 +184,7 @@ class Leaderboard extends BaseCommand {
})
.setColor(client.config.embed.color)
.addFields({
name: interaction.translate("economy/leaderboard:TOP"),
name: interaction.translate("common:USER"),
value: userNames,
inline: true
}, {

View file

@ -11,10 +11,9 @@ class Eightball extends BaseCommand {
command: new SlashCommandBuilder()
.setName("8ball")
.setDescription(client.translate("fun/8ball:DESCRIPTION"))
.addStringOption(option =>
option.setName("question")
.setDescription(client.translate("fun/8ball:QUESTION"))
.setRequired(true)),
.addStringOption(option => option.setName("question")
.setDescription(client.translate("fun/8ball:QUESTION"))
.setRequired(true)),
aliases: [],
dirname: __dirname,
guildOnly: true,
@ -36,17 +35,18 @@ class Eightball extends BaseCommand {
*/
async execute(client, interaction) {
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 answer = interaction.translate(`fun/8ball:RESPONSE_${answerN}`);
await client.wait(2000);
await client.wait(5000);
interaction.editReply({
content: answer
});
interaction.replyT("fun/8ball:ANSWER", {
question,
answer
}, { edit: true });
}
}

View file

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

View file

@ -36,7 +36,7 @@ class Shorturl extends BaseCommand {
*/
async execute(client, interaction) {
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({
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"),
ms = require("ms");
@ -13,16 +13,39 @@ class Giveaway extends BaseCommand {
.setName("giveaway")
.setDescription(client.translate("moderation/giveaway:DESCRIPTION"))
.setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages)
.addStringOption(option => option.setName("giveaway_id")
.setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID")))
.addStringOption(option => option.setName("duration")
.setDescription(client.translate("common:DURATION")))
.addIntegerOption(option => option.setName("winners_count")
.setDescription(client.translate("moderation/giveaway:WINNERS_COUNT")))
.addStringOption(option => option.setName("prize")
.setDescription(client.translate("moderation/giveaway:PRIZE")))
.addBooleanOption(option => option.setName("isdrop")
.setDescription(client.translate("moderation/giveaway:ISDROP"))),
.addSubcommand(subcommand => subcommand.setName("create")
.setDescription(client.translate("moderation/giveaway:CREATE"))
.addStringOption(option => option.setName("duration")
.setDescription(client.translate("common:DURATION"))
.setRequired(true))
.addIntegerOption(option => option.setName("winners_count")
.setDescription(client.translate("moderation/giveaway:WINNERS_COUNT"))
.setRequired(true))
.addStringOption(option => option.setName("prize")
.setDescription(client.translate("moderation/giveaway:PRIZE"))
.setRequired(true))
.addBooleanOption(option => option.setName("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: [],
dirname: __dirname,
guildOnly: true
@ -42,164 +65,81 @@ class Giveaway extends BaseCommand {
* @param {Object} data
*/
async execute(client, interaction) {
const row = new ActionRowBuilder()
.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 command = interaction.options.getSubcommand();
const msg = await interaction.reply({
content: interaction.translate("common:AVAILABLE_OPTIONS"),
components: [row],
ephemeral: true,
fetchReply: true
});
if (command === "create") {
const currentGiveaways = client.giveawaysManager.giveaways.filter(g => g.guildId === interaction.guildId && !g.ended).length;
if (currentGiveaways > 5) return interaction.error("moderation/giveaway:MAX_COUNT");
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)
});
const duration = interaction.options.getString("duration");
if (ms(duration) > ms("10d")) return interaction.error("moderation/giveaway:MAX_DURATION");
collector.on("collect", async i => {
const option = i?.values[0];
const winnersCount = interaction.options.getInteger("winners_count");
if (winnersCount > 10 || winnersCount < 1) return interaction.error("misc:INVALID_NUMBER_RANGE", { min: 1, max: 10 });
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 prize = interaction.options.getString("prize");
const isdrop = interaction.options.getBoolean("isdrop");
const duration = interaction.options.getString("duration");
if (!duration) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") });
if (ms(duration) > ms("10d")) return i.update({ content: interaction.translate("moderation/giveaway:MAX_DURATION") });
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 i.update({ content: interaction.translate("misc:INVALID_NUMBER_RANGE", { min: 1, max: 10 }) });
const prize = interaction.options.getString("prize");
if (!prize) return i.update({ content: interaction.translate("moderation/giveaway:INVALID_CREATE") });
const isdrop = interaction.options.getBoolean("isdrop");
client.giveawaysManager.start(interaction.channel, {
duration: ms(duration),
winnerCount: winnersCount,
prize: prize,
hostedBy: interaction.user,
isDrop: isdrop,
messages: {
giveaway: interaction.translate("moderation/giveaway:TITLE"),
giveawayEnded: interaction.translate("moderation/giveaway:ENDED"),
timeRemaining: interaction.translate("moderation/giveaway:TIME_REMAINING"),
inviteToParticipate: interaction.translate("moderation/giveaway:INVITE_PARTICIPATE"),
winMessage: interaction.translate("moderation/giveaway:WIN_MESSAGE"),
drawing: interaction.translate("moderation/giveaway:DRAWING"),
dropMessage: interaction.translate("moderation/giveaway:DROP"),
embedFooter: interaction.translate("moderation/giveaway:FOOTER"),
noWinner: interaction.translate("moderation/giveaway:NO_WINNER"),
winners: interaction.translate("moderation/giveaway:WINNERS"),
endedAt: interaction.translate("moderation/giveaway:END_AT"),
hostedBy: interaction.translate("moderation/giveaway:HOSTEDBY"),
// 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(() => {
return i.update({
content: interaction.translate("moderation/giveaway:GIVEAWAY_CREATED"),
components: []
});
});
} else if (option === "reroll") {
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, {
messages: {
congrat: interaction.translate("moderation/giveaway:REROLL_CONGRAT"),
error: interaction.translate("moderation/giveaway:REROLL_ERROR")
}
}).then(() => {
return i.update({
content: interaction.translate("moderation/giveaway:GIVEAWAY_REROLLED"),
components: []
});
}).catch(() => {
return i.update({
content: interaction.translate("moderation/giveaway:NOT_FOUND_ENDED", {
messageId: giveaway_id
}),
components: []
});
});
} else if (option === "delete") {
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 {
client.giveawaysManager.end(giveaway_id);
return i.update({
content: interaction.translate("moderation/giveaway:GIVEAWAY_ENDED"),
components: []
});
} catch (e) {
return i.update({
content: interaction.translate("moderation/giveaway:NOT_FOUND", {
messageId: giveaway_id
}),
components: []
});
client.giveawaysManager.start(interaction.channel, {
duration: ms(duration),
winnerCount: winnersCount,
prize: prize,
hostedBy: interaction.user,
isDrop: isdrop,
messages: {
giveaway: interaction.translate("moderation/giveaway:TITLE"),
giveawayEnded: interaction.translate("moderation/giveaway:ENDED"),
timeRemaining: interaction.translate("moderation/giveaway:TIME_REMAINING"),
inviteToParticipate: interaction.translate("moderation/giveaway:INVITE_PARTICIPATE"),
winMessage: interaction.translate("moderation/giveaway:WIN_MESSAGE"),
drawing: interaction.translate("moderation/giveaway:DRAWING"),
dropMessage: interaction.translate("moderation/giveaway:DROP"),
embedFooter: interaction.translate("moderation/giveaway:FOOTER"),
noWinner: interaction.translate("moderation/giveaway:NO_WINNER"),
winners: interaction.translate("moderation/giveaway:WINNERS"),
endedAt: interaction.translate("moderation/giveaway:END_AT"),
hostedBy: interaction.translate("moderation/giveaway:HOSTED_BY")
}
}).then(() => {
return interaction.success("moderation/giveaway:GIVEAWAY_CREATED", null, { ephemeral: true });
});
} else if (command === "reroll") {
const giveaway_id = interaction.options.getString("giveaway_id");
client.giveawaysManager.reroll(giveaway_id, {
messages: {
congrat: interaction.translate("moderation/giveaway:REROLL_CONGRAT"),
error: interaction.translate("moderation/giveaway:REROLL_ERROR")
}
}).then(() => {
return interaction.success("moderation/giveaway:GIVEAWAY_REROLLED");
}).catch(() => {
return interaction.error("moderation/giveaway:NOT_FOUND_ENDED", {
messageId: giveaway_id
}, { ephemeral: true });
});
} else if (command === "end") {
const giveaway_id = interaction.options.getString("giveaway_id");
try {
client.giveawaysManager.end(giveaway_id);
return interaction.success("moderation/giveaway:GIVEAWAY_ENDED");
} catch (e) {
return interaction.error("moderation/giveaway:NOT_FOUND", {
messageId: giveaway_id
}, { ephemeral: true });
}
});
} 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 });
});
}
}
}

View file

@ -68,7 +68,7 @@ class Debug extends BaseCommand {
* @param {import("discord.js").ChatInputCommandInteraction} interaction
* @param {Array} data
*/
async execute(client, interaction,) {
async execute(client, interaction) {
const command = interaction.options.getSubcommand();
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
* Изменения
* Изменён способ указания типа повтора в *loop*. Теперь вы указываете тип аргументом (подсказки имеются), а не из выпадающего списка в отдельном сообщении. Это одновременно удобно, быстро и меньше кода =)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,62 +1,64 @@
{
"YES": "Да",
"NO": "Нет",
"APPLY": "Применить",
"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": "Активность",
"STATUS": "Статус",
"STATUS_ONLINE": "В сети",
"STATUS_OFFLINE": "Не в сети",
"STATUS_IDLE": "Неактивен",
"STATUS_DND": "Не беспокоить",
"APPLY": "Применить",
"AUTHOR": "Автор",
"AVAILABLE_OPTIONS": "Доступные параметры:",
"CANCEL": "Отменить",
"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": "Роль",
"ROLES": "Роли",
"JOINED": "Присоеденился",
"COLOR": "Цвет",
"NICKNAME": "Ник на сервере",
"CREDITS": "Кредиты",
"LEVEL": "Уровень",
"REP": "Очки репутации",
"XP": "Опыт",
"SERVERS": "Сервера",
"SETTINGS": "Настройки",
"STATE": "Состояние",
"STATS": "Статистика",
"STATUS": "Статус",
"STATUS_DND": "Не беспокоить",
"STATUS_IDLE": "Неактивен",
"STATUS_OFFLINE": "Не в сети",
"STATUS_ONLINE": "В сети",
"UNKNOWN": "Неизвестно",
"USER": "Пользователь",
"USERNAME": "Имя пользователя",
"USERS": "Пользователи",
"VICTORY": "Победа",
"VIEWS": "Просмотры",
"DEFEAT": "Поражение",
"MODERATOR": "Модератор",
"DURATION": "Длительность (30s, 5m, 2h, 5d, 1w)",
"SERVERS": "Сервера",
"PAGE": "Страница",
"MESSAGE": "Сообщение",
"PROFILE": "Профиль",
"SETTINGS": "Настройки",
"EMOJI": "Эмодзи",
"IP": "IP адрес",
"INT": "Целое число",
"LANGUAGE": "Язык",
"CHANNEL": "Канал",
"UNKNOWN": "Неизвестно",
"NOTHING_SELECTED": "Ничего не выбрано",
"AVAILABLE_OPTIONS": "Доступные параметры:"
"XP": "Опыт",
"YES": "Да"
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
{
"DESCRIPTION": "Получить информацию об IP адресе",
"USAGE": "[IP]",
"EXAMPLES": "whois 8.8.8.8",
"EXAMPLES": "whois IP:8.8.8.8",
"ERROR": "Произошла ошибка при получении данных об {{ip}}",
"INFO_ABOUT": "Информация об {{ip}}",
"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": "Вы не можете сделать это с ботом!",
"HELLO_SERVER": "Привет, **{{username}}**! Все мои команды доступны через **/** Используйте `/help`, чтобы получить список команд!",
"FORCE_STOP": "Игра принудительно окончена {{user}}, никто не победил!",
"GUILD_ONLY": "Данную команду можно использовать только на сервере!",
"NSFW_COMMAND": "Данную команду можно использовать только в NSFW канале!",
"OWNER_ONLY": "Данную команду может использовать только владелец бота!",
"HELLO_SERVER": "Привет, **{{username}}**! Все мои команды доступны через **/** Используйте `/help`, чтобы получить список команд!",
"INVALID_NUMBER_RANGE": "Укажите число от **{{min}}** до **{{max}}**!",
"MORE_THAN_ZERO": "Укажите целое число больше 0!",
"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": {
"CreateInstantInvite": "Создание приглашения",

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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