This commit is contained in:
Jonny_Bro (Nikita) 2023-03-26 18:31:19 +05:00
parent 05666488ee
commit 792a73353d
185 changed files with 815 additions and 406 deletions

View file

@ -11,13 +11,22 @@ class Automod extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("automod") .setName("automod")
.setDescription(client.translate("administration/automod:DESCRIPTION")) .setDescription(client.translate("administration/automod:DESCRIPTION"))
.setDescriptionLocalizations({
"uk": client.translate("administration/automod:DESCRIPTION", null, "uk-UA"),
})
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.addBooleanOption(option => option.setName("state") .addBooleanOption(option => option.setName("state")
.setDescription(client.translate("common:STATE")) .setDescription(client.translate("common:STATE"))
.setDescriptionLocalizations({
"uk": client.translate("common:STATE", null, "uk-UA"),
})
.setRequired(true)) .setRequired(true))
.addChannelOption(option => option.setName("channel") .addChannelOption(option => option.setName("channel")
.setDescription(client.translate("common:CHANNEL")) .setDescription(client.translate("common:CHANNEL"))
.setDescriptionLocalizations({
"uk": client.translate("common:CHANNEL", null, "uk-UA"),
})
.addChannelTypes(ChannelType.GuildText)), .addChannelTypes(ChannelType.GuildText)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,13 +11,16 @@ class Autorole extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("autorole") .setName("autorole")
.setDescription(client.translate("administration/autorole:DESCRIPTION")) .setDescription(client.translate("administration/autorole:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("administration/autorole:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.addBooleanOption(option => option.setName("state") .addBooleanOption(option => option.setName("state")
.setDescription(client.translate("common:STATE")) .setDescription(client.translate("common:STATE"))
.setDescriptionLocalizations({ "uk": client.translate("common:STATE", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addRoleOption(option => option.setName("role") .addRoleOption(option => option.setName("role")
.setDescription(client.translate("common:ROLE"))), .setDescription(client.translate("common:ROLE"))
.setDescriptionLocalizations({ "uk": client.translate("common:ROLE", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -11,16 +11,20 @@ class Config extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("config") .setName("config")
.setDescription(client.translate("administration/config:DESCRIPTION")) .setDescription(client.translate("administration/config:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("administration/config:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.addSubcommand(subcommand => subcommand.setName("list") .addSubcommand(subcommand => subcommand.setName("list")
.setDescription(client.translate("administration/config:LIST")), .setDescription(client.translate("administration/config:LIST"))
.setDescriptionLocalizations({ "uk": client.translate("administration/config:LIST", null, "uk-UA") }),
) )
.addSubcommand(subcommand => subcommand.setName("set") .addSubcommand(subcommand => subcommand.setName("set")
.setDescription(client.translate("administration/config:SET")) .setDescription(client.translate("administration/config:SET"))
.setDescriptionLocalizations({ "uk": client.translate("administration/config:SET", null, "uk-UA") })
.addStringOption(option => option.setName("setting") .addStringOption(option => option.setName("setting")
.setDescription(client.translate("administration/config:SETTING")) .setDescription(client.translate("administration/config:SETTING"))
.addChoices( .setDescriptionLocalizations({ "uk": client.translate("administration/config:SETTING", null, "uk-UA") })
.setChoices(
{ name: client.translate("administration/config:BIRTHDAYS"), value: "birthdays" }, { name: client.translate("administration/config:BIRTHDAYS"), value: "birthdays" },
{ name: client.translate("administration/config:MODLOGS"), value: "modlogs" }, { name: client.translate("administration/config:MODLOGS"), value: "modlogs" },
{ name: client.translate("administration/config:NEWS"), value: "news" }, { name: client.translate("administration/config:NEWS"), value: "news" },
@ -30,9 +34,11 @@ class Config extends BaseCommand {
.setRequired(true)) .setRequired(true))
.addBooleanOption(option => option.setName("state") .addBooleanOption(option => option.setName("state")
.setDescription(client.translate("common:STATE")) .setDescription(client.translate("common:STATE"))
.setDescriptionLocalizations({ "uk": client.translate("common:STATE", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addChannelOption(option => option.setName("channel") .addChannelOption(option => option.setName("channel")
.setDescription(client.translate("common:CHANNEL"))), .setDescription(client.translate("common:CHANNEL"))
.setDescriptionLocalizations({ "uk": client.translate("common:STATE", null, "uk-UA") })),
), ),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,22 +11,29 @@ class Goodbye extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("goodbye") .setName("goodbye")
.setDescription(client.translate("administration/goodbye:DESCRIPTION")) .setDescription(client.translate("administration/goodbye:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("administration/goodbye:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.addSubcommand(subcommand => subcommand.setName("test") .addSubcommand(subcommand => subcommand.setName("test")
.setDescription(client.translate("administration/goodbye:TEST")), .setDescription(client.translate("administration/goodbye:TEST"))
.setDescriptionLocalizations({ "uk": client.translate("administration/goodbye:TEST", null, "uk-UA") }),
) )
.addSubcommand(subcommand => subcommand.setName("config") .addSubcommand(subcommand => subcommand.setName("config")
.setDescription(client.translate("administration/goodbye:CONFIG")) .setDescription(client.translate("administration/goodbye:CONFIG"))
.setDescriptionLocalizations({ "uk": client.translate("administration/goodbye:CONFIG", null, "uk-UA") })
.addBooleanOption(option => option.setName("state") .addBooleanOption(option => option.setName("state")
.setDescription(client.translate("common:STATE")) .setDescription(client.translate("common:STATE"))
.setDescriptionLocalizations({ "uk": client.translate("common:STATE", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addChannelOption(option => option.setName("channel") .addChannelOption(option => option.setName("channel")
.setDescription(client.translate("common:CHANNEL"))) .setDescription(client.translate("common:CHANNEL"))
.setDescriptionLocalizations({ "uk": client.translate("common:CHANNEL", null, "uk-UA") }))
.addStringOption(option => option.setName("message") .addStringOption(option => option.setName("message")
.setDescription(client.translate("administration/goodbye:MESSAGE"))) .setDescription(client.translate("administration/goodbye:MESSAGE"))
.setDescriptionLocalizations({ "uk": client.translate("common:MESSAGE", null, "uk-UA") }))
.addBooleanOption(option => option.setName("image") .addBooleanOption(option => option.setName("image")
.setDescription(client.translate("administration/goodbye:IMAGE"))), .setDescription(client.translate("administration/goodbye:IMAGE"))
.setDescriptionLocalizations({ "uk": client.translate("common:IMAGE", null, "uk-UA") })),
), ),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,24 +11,30 @@ class Selectroles extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("selectroles") .setName("selectroles")
.setDescription(client.translate("administration/selectroles:DESCRIPTION")) .setDescription(client.translate("administration/selectroles:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("administration/selectroles:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.addSubcommand(subcommand => subcommand.setName("message") .addSubcommand(subcommand => subcommand.setName("message")
.setDescription(client.translate("administration/selectroles:MESSAGE")) .setDescription(client.translate("administration/selectroles:MESSAGE"))
.setDescriptionLocalizations({ "uk": client.translate("administration/selectroles:MESSAGE", null, "uk-UA") })
.addStringOption(option => option.setName("text") .addStringOption(option => option.setName("text")
.setDescription(client.translate("common:MESSAGE")) .setDescription(client.translate("common:MESSAGE"))
.setRequired(true)), .setRequired(true)),
) )
.addSubcommand(subcommand => subcommand.setName("addrole") .addSubcommand(subcommand => subcommand.setName("addrole")
.setDescription(client.translate("administration/selectroles:ADDROLE")) .setDescription(client.translate("administration/selectroles:ADDROLE"))
.setDescriptionLocalizations({ "uk": client.translate("administration/selectroles:ADDROLE", null, "uk-UA") })
.addChannelOption(option => option.setName("channel") .addChannelOption(option => option.setName("channel")
.setDescription(client.translate("common:CHANNEL")) .setDescription(client.translate("common:CHANNEL"))
.setDescriptionLocalizations({ "uk": client.translate("common:CHANNEL", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addStringOption(option => option.setName("message_id") .addStringOption(option => option.setName("message_id")
.setDescription(client.translate("common:MESSAGE_ID")) .setDescription(client.translate("common:MESSAGE_ID"))
.setDescriptionLocalizations({ "uk": client.translate("common:MESSAGE_ID", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addRoleOption(option => option.setName("role") .addRoleOption(option => option.setName("role")
.setDescription(client.translate("common:ROLE")) .setDescription(client.translate("common:ROLE"))
.setDescriptionLocalizations({ "uk": client.translate("common:ROLE", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
), ),
aliases: [], aliases: [],

View file

@ -11,12 +11,14 @@ class Set extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("set") .setName("set")
.setDescription(client.translate("administration/set:DESCRIPTION")) .setDescription(client.translate("administration/set:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("administration/set:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.addStringOption(option => option.setName("type") .addStringOption(option => option.setName("type")
.setDescription(client.translate("owner/debug:TYPE")) .setDescription(client.translate("owner/debug:TYPE"))
.setDescriptionLocalizations({ "uk": client.translate("owner/debug:TYPE", null, "uk-UA") })
.setRequired(true) .setRequired(true)
.addChoices( .setChoices(
{ name: client.translate("common:LEVEL"), value: "level" }, { name: client.translate("common:LEVEL"), value: "level" },
{ name: client.translate("common:XP"), value: "xp" }, { name: client.translate("common:XP"), value: "xp" },
{ name: client.translate("common:CREDITS"), value: "credits" }, { name: client.translate("common:CREDITS"), value: "credits" },
@ -24,9 +26,11 @@ class Set extends BaseCommand {
)) ))
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addIntegerOption(option => option.setName("int") .addIntegerOption(option => option.setName("int")
.setDescription(client.translate("common:INT")) .setDescription(client.translate("common:INT"))
.setDescriptionLocalizations({ "uk": client.translate("common:INT", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
@ -64,7 +68,7 @@ class Set extends BaseCommand {
memberData.level = int; memberData.level = int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -73,7 +77,7 @@ class Set extends BaseCommand {
memberData.exp = int; memberData.exp = int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -82,7 +86,7 @@ class Set extends BaseCommand {
memberData.money = int; memberData.money = int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -91,7 +95,7 @@ class Set extends BaseCommand {
memberData.bankSold = int; memberData.bankSold = int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }

View file

@ -11,12 +11,14 @@ class Setlang extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("setlang") .setName("setlang")
.setDescription(client.translate("administration/setlang:DESCRIPTION")) .setDescription(client.translate("administration/setlang:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("administration/setlang:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.addStringOption(option => option.setName("language") .addStringOption(option => option.setName("language")
.setDescription(client.translate("common:LANGUAGE")) .setDescription(client.translate("common:LANGUAGE"))
.setDescriptionLocalizations({ "uk": client.translate("common:LANGUAGE", null, "uk-UA") })
.setRequired(true) .setRequired(true)
.addChoices( .setChoices(
{ name: "Русский", value: "ru-RU" }, { name: "Русский", value: "ru-RU" },
{ name: "Українська", value: "uk-UA" }, { name: "Українська", value: "uk-UA" },
)), )),

View file

@ -11,10 +11,12 @@ class Stealemoji extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("stealemoji") .setName("stealemoji")
.setDescription(client.translate("administration/stealemoji:DESCRIPTION")) .setDescription(client.translate("administration/stealemoji:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("administration/stealemoji:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.addStringOption(option => option.setName("emoji") .addStringOption(option => option.setName("emoji")
.setDescription(client.translate("common:EMOJI")) .setDescription(client.translate("common:EMOJI"))
.setDescriptionLocalizations({ "uk": client.translate("common:EMOJI", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,22 +11,29 @@ class Welcome extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("welcome") .setName("welcome")
.setDescription(client.translate("administration/welcome:DESCRIPTION")) .setDescription(client.translate("administration/welcome:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("administration/welcome:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.Administrator) .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
.addSubcommand(subcommand => subcommand.setName("test") .addSubcommand(subcommand => subcommand.setName("test")
.setDescription(client.translate("administration/goodbye:TEST")), .setDescription(client.translate("administration/goodbye:TEST"))
.setDescriptionLocalizations({ "uk": client.translate("administration/goodbye:TEST", null, "uk-UA") }),
) )
.addSubcommand(subcommand => subcommand.setName("config") .addSubcommand(subcommand => subcommand.setName("config")
.setDescription(client.translate("administration/goodbye:CONFIG")) .setDescription(client.translate("administration/goodbye:CONFIG"))
.setDescriptionLocalizations({ "uk": client.translate("administration/goodbye:CONFIG", null, "uk-UA") })
.addBooleanOption(option => option.setName("state") .addBooleanOption(option => option.setName("state")
.setDescription(client.translate("common:STATE")) .setDescription(client.translate("common:STATE"))
.setDescriptionLocalizations({ "uk": client.translate("common:STATE", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addChannelOption(option => option.setName("channel") .addChannelOption(option => option.setName("channel")
.setDescription(client.translate("common:CHANNEL"))) .setDescription(client.translate("common:CHANNEL"))
.setDescriptionLocalizations({ "uk": client.translate("common:CHANNEL", null, "uk-UA") }))
.addStringOption(option => option.setName("message") .addStringOption(option => option.setName("message")
.setDescription(client.translate("administration/goodbye:MESSAGE"))) .setDescription(client.translate("administration/goodbye:MESSAGE"))
.setDescriptionLocalizations({ "uk": client.translate("administration/goodbye:MESSAGE", null, "uk-UA") }))
.addBooleanOption(option => option.setName("image") .addBooleanOption(option => option.setName("image")
.setDescription(client.translate("administration/goodbye:IMAGE"))), .setDescription(client.translate("administration/goodbye:IMAGE"))
.setDescriptionLocalizations({ "uk": client.translate("administration/goodbye:IMAGE", null, "uk-UA") })),
), ),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Achievements extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("achievements") .setName("achievements")
.setDescription(client.translate("economy/achievements:DESCRIPTION")) .setDescription(client.translate("economy/achievements:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/achievements:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER"))), .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -11,16 +11,19 @@ class Bank extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("bank") .setName("bank")
.setDescription(client.translate("economy/bank:DESCRIPTION")) .setDescription(client.translate("economy/bank:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/bank:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addStringOption(option => option.setName("option") .addStringOption(option => option.setName("option")
.setDescription(client.translate("economy/bank:OPTION")) .setDescription(client.translate("economy/bank:OPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/bank:OPTION", null, "uk-UA") })
.setRequired(true) .setRequired(true)
.addChoices( .setChoices(
{ name: client.translate("economy/bank:DEPOSIT"), value: "deposit" }, { name: client.translate("economy/bank:DEPOSIT"), value: "deposit" },
{ name: client.translate("economy/bank:WITHDRAW"), value: "withdraw" }, { name: client.translate("economy/bank:WITHDRAW"), value: "withdraw" },
)) ))
.addStringOption(option => option.setName("credits") .addStringOption(option => option.setName("credits")
.setDescription(client.translate("moderation/clear:OPTION")) .setDescription(client.translate("misc:OPTION_NAN_ALL"))
.setDescriptionLocalizations({ "uk": client.translate("misc:OPTION_NAN_ALL", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,14 +11,17 @@ class Birthdate extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("birthdate") .setName("birthdate")
.setDescription(client.translate("economy/birthdate:DESCRIPTION")) .setDescription(client.translate("economy/birthdate:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/birthdate:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addIntegerOption(option => option.setName("day") .addIntegerOption(option => option.setName("day")
.setDescription(client.translate("economy/birthdate:DAY")) .setDescription(client.translate("economy/birthdate:DAY"))
.setDescriptionLocalizations({ "uk": client.translate("economy/birthdate:DAY", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addIntegerOption(option => option.setName("month") .addIntegerOption(option => option.setName("month")
.setDescription(client.translate("economy/birthdate:MONTH")) .setDescription(client.translate("economy/birthdate:MONTH"))
.setDescriptionLocalizations({ "uk": client.translate("economy/birthdate:MONTH", null, "uk-UA") })
.setRequired(true) .setRequired(true)
.addChoices( .setChoices(
{ name: "Январь", value: 1 }, { name: "Январь", value: 1 },
{ name: "Февраль", value: 2 }, { name: "Февраль", value: 2 },
{ name: "Март", value: 3 }, { name: "Март", value: 3 },
@ -34,7 +37,9 @@ class Birthdate extends BaseCommand {
)) ))
.addIntegerOption(option => option.setName("year") .addIntegerOption(option => option.setName("year")
.setDescription(client.translate("economy/birthdate:YEAR")) .setDescription(client.translate("economy/birthdate:YEAR"))
.setRequired(true)), .setDescriptionLocalizations({ "uk": client.translate("economy/birthdate:YEAR", null, "uk-UA") })
.setRequired(true)
.setAutocomplete(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -70,6 +75,24 @@ class Birthdate extends BaseCommand {
date: client.printDate(d), date: client.printDate(d),
}); });
} }
/**
*
* @param {import("../../base/JaBa")} client
* @param {import("discord.js").AutocompleteInteraction} interaction
* @returns
*/
async autocompleteRun(client, interaction) {
const int = interaction.options.getInteger("year"),
results = Array.from({ length: 2023 }, (_, k) => k + 1).filter(i => i.toString().includes(int));
return interaction.respond(
results.slice(0, 25).map(i => ({
name: i,
value: i,
}),
));
}
} }
module.exports = Birthdate; module.exports = Birthdate;

View file

@ -11,6 +11,7 @@ class Divorce extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("divorce") .setName("divorce")
.setDescription(client.translate("economy/divorce:DESCRIPTION")) .setDescription(client.translate("economy/divorce:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/divorce:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -12,6 +12,7 @@ class ImportMee6 extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("importmee6") .setName("importmee6")
.setDescription(client.translate("economy/importmee6:DESCRIPTION")) .setDescription(client.translate("economy/importmee6:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/importmee6:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
@ -41,7 +42,7 @@ class ImportMee6 extends BaseCommand {
interaction.editReply({ interaction.editReply({
content: interaction.translate("owner/debug:SUCCESS_LEVEL", { content: interaction.translate("owner/debug:SUCCESS_LEVEL", {
username: interaction.member.toString(), user: interaction.member.toString(),
amount: level, amount: level,
}), }),
}); });

View file

@ -11,11 +11,13 @@ class Leaderboard extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("leaderboard") .setName("leaderboard")
.setDescription(client.translate("economy/leaderboard:DESCRIPTION")) .setDescription(client.translate("economy/leaderboard:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/leaderboard:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addStringOption(option => option.setName("type") .addStringOption(option => option.setName("type")
.setDescription(client.translate("owner/debug:TYPE")) .setDescription(client.translate("owner/debug:TYPE"))
.setDescriptionLocalizations({ "uk": client.translate("owner/debug:TYPE", null, "uk-UA") })
.setRequired(true) .setRequired(true)
.addChoices( .setChoices(
{ name: client.translate("economy/leaderboard:LEVEL"), value: "level" }, { name: client.translate("economy/leaderboard:LEVEL"), value: "level" },
{ name: client.translate("economy/leaderboard:MONEY"), value: "money" }, { name: client.translate("economy/leaderboard:MONEY"), value: "money" },
{ name: client.translate("economy/leaderboard:REP"), value: "rep" }, { name: client.translate("economy/leaderboard:REP"), value: "rep" },

View file

@ -12,9 +12,11 @@ class Marry extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("marry") .setName("marry")
.setDescription(client.translate("economy/marry:DESCRIPTION")) .setDescription(client.translate("economy/marry:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/marry:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Money extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("money") .setName("money")
.setDescription(client.translate("economy/money:DESCRIPTION")) .setDescription(client.translate("economy/money:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/money:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER"))), .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -56,7 +58,7 @@ class Money extends BaseCommand {
const embed = new EmbedBuilder() const embed = new EmbedBuilder()
.setAuthor({ .setAuthor({
name: interaction.translate("economy/money:TITLE", { name: interaction.translate("economy/money:TITLE", {
username: member.user.tag, user: member.user.tag,
}), }),
iconURL: member.user.displayAvatarURL(), iconURL: member.user.displayAvatarURL(),
}) })

View file

@ -12,6 +12,7 @@ class Number extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("number") .setName("number")
.setDescription(client.translate("economy/number:DESCRIPTION")) .setDescription(client.translate("economy/number:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/number:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,12 +11,15 @@ class Pay extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("pay") .setName("pay")
.setDescription(client.translate("economy/pay:DESCRIPTION")) .setDescription(client.translate("economy/pay:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/pay:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addIntegerOption(option => option.setName("amount") .addIntegerOption(option => option.setName("amount")
.setDescription(client.translate("common:INT")) .setDescription(client.translate("common:INT"))
.setDescriptionLocalizations({ "uk": client.translate("common:INT", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Profile extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("profile") .setName("profile")
.setDescription(client.translate("economy/profile:DESCRIPTION")) .setDescription(client.translate("economy/profile:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/profile:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER"))), .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -11,9 +11,11 @@ class Rep extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("rep") .setName("rep")
.setDescription(client.translate("economy/rep:DESCRIPTION")) .setDescription(client.translate("economy/rep:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/rep:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,12 +11,15 @@ class Rob extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("rob") .setName("rob")
.setDescription(client.translate("economy/rob:DESCRIPTION")) .setDescription(client.translate("economy/rob:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/rob:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addIntegerOption(option => option.setName("amount") .addIntegerOption(option => option.setName("amount")
.setDescription(client.translate("common:INT")) .setDescription(client.translate("common:INT"))
.setDescriptionLocalizations({ "uk": client.translate("common:INT", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Setbio extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("setbio") .setName("setbio")
.setDescription(client.translate("economy/setbio:DESCRIPTION")) .setDescription(client.translate("economy/setbio:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/setbio:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("text") .addStringOption(option => option.setName("text")
.setDescription(client.translate("economy/profile:BIO")) .setDescription(client.translate("economy/profile:BIO"))
.setDescriptionLocalizations({ "uk": client.translate("economy/profile:BIO", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Slots extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("slots") .setName("slots")
.setDescription(client.translate("economy/slots:DESCRIPTION")) .setDescription(client.translate("economy/slots:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/slots:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addIntegerOption(option => option.setName("amount") .addIntegerOption(option => option.setName("amount")
.setDescription(client.translate("common:INT")) .setDescription(client.translate("common:INT"))
.setDescriptionLocalizations({ "uk": client.translate("common:INT", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -12,9 +12,11 @@ class TicTacToe extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("tictactoe") .setName("tictactoe")
.setDescription(client.translate("economy/tictactoe:DESCRIPTION")) .setDescription(client.translate("economy/tictactoe:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/tictactoe:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Transactions extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("transactions") .setName("transactions")
.setDescription(client.translate("economy/transactions:DESCRIPTION")) .setDescription(client.translate("economy/transactions:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/transactions:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addBooleanOption(option => option.setName("clear") .addBooleanOption(option => option.setName("clear")
.setDescription(client.translate("economy/transactions:CLEAR"))), .setDescription(client.translate("economy/transactions:CLEAR"))
.setDescriptionLocalizations({ "uk": client.translate("economy/transactions:CLEAR", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -11,6 +11,7 @@ class Work extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("work") .setName("work")
.setDescription(client.translate("economy/work:DESCRIPTION")) .setDescription(client.translate("economy/work:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("economy/work:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ 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"))
.setDescriptionLocalizations({ "uk": client.translate("fun/8ball:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("question") .addStringOption(option => option.setName("question")
.setDescription(client.translate("fun/8ball:QUESTION")) .setDescription(client.translate("fun/8ball:QUESTION"))
.setDescriptionLocalizations({ "uk": client.translate("fun/8ball:QUESTION", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -12,6 +12,7 @@ class Cat extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("cat") .setName("cat")
.setDescription(client.translate("fun/cat:DESCRIPTION")) .setDescription(client.translate("fun/cat:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("fun/cat:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true), .setDMPermission(true),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -12,6 +12,7 @@ class Crab extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("crab") .setName("crab")
.setDescription(client.translate("fun/crab:DESCRIPTION")) .setDescription(client.translate("fun/crab:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("fun/crab:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true), .setDMPermission(true),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -12,6 +12,7 @@ class Dog extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("dog") .setName("dog")
.setDescription(client.translate("fun/dog:DESCRIPTION")) .setDescription(client.translate("fun/dog:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("fun/dog:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true), .setDMPermission(true),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -12,12 +12,15 @@ 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"))
.setDescriptionLocalizations({ "uk": client.translate("fun/lmgtfy:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("query") .addStringOption(option => option.setName("query")
.setDescription(client.translate("fun/lmgtfy:QUERY")) .setDescription(client.translate("fun/lmgtfy:QUERY"))
.setDescriptionLocalizations({ "uk": client.translate("fun/lmgtfy:QUERY", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addBooleanOption(option => option.setName("short") .addBooleanOption(option => option.setName("short")
.setDescription(client.translate("fun/lmgtfy:SHORT")) .setDescription(client.translate("fun/lmgtfy:SHORT"))
.setDescriptionLocalizations({ "uk": client.translate("fun/lmgtfy:SHORT", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
@ -51,7 +54,7 @@ class LMGTFY extends BaseCommand {
}); });
} else { } else {
interaction.reply({ interaction.reply({
content: `<${url}>`, content: `\`\`\`<${url}>\`\`\``,
ephemeral: true, ephemeral: true,
}); });
} }

View file

@ -12,14 +12,17 @@ class Lovecalc extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("lovecalc") .setName("lovecalc")
.setDescription(client.translate("fun/lovecalc:DESCRIPTION")) .setDescription(client.translate("fun/lovecalc:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("fun/lovecalc:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => .addUserOption(option =>
option.setName("first_member") option.setName("first_member")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addUserOption(option => .addUserOption(option =>
option.setName("second_member") option.setName("second_member")
.setDescription(client.translate("common:USER"))), .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -12,6 +12,7 @@ class Memes extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("memes") .setName("memes")
.setDescription(client.translate("fun/memes:DESCRIPTION")) .setDescription(client.translate("fun/memes:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("fun/memes:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
@ -34,7 +35,7 @@ class Memes extends BaseCommand {
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply(); await interaction.deferReply();
const tags = ["memes", "dankmemes", "me_irl", "wholesomememes"].map(tag => const tags = ["funny", "memes", "dankmemes", "me_irl", "wholesomememes"].map(tag =>
JSON.parse(JSON.stringify({ JSON.parse(JSON.stringify({
label: tag, label: tag,
value: tag, value: tag,

View file

@ -11,9 +11,11 @@ class Afk extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("afk") .setName("afk")
.setDescription(client.translate("general/afk:DESCRIPTION")) .setDescription(client.translate("general/afk:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/afk:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("message") .addStringOption(option => option.setName("message")
.setDescription(client.translate("common:MESSAGE")) .setDescription(client.translate("common:MESSAGE"))
.setDescriptionLocalizations({ "uk": client.translate("common:MESSAGE", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Avatar extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("avatar") .setName("avatar")
.setDescription(client.translate("general/avatar:DESCRIPTION")) .setDescription(client.translate("general/avatar:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/avatar:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER"))), .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -11,6 +11,7 @@ class Boosters extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("boosters") .setName("boosters")
.setDescription(client.translate("general/boosters:DESCRIPTION")) .setDescription(client.translate("general/boosters:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/boosters:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Emoji extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("emoji") .setName("emoji")
.setDescription(client.translate("general/emoji:DESCRIPTION")) .setDescription(client.translate("general/emoji:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/emoji:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("emoji") .addStringOption(option => option.setName("emoji")
.setDescription(client.translate("common:EMOJI")) .setDescription(client.translate("common:EMOJI"))
.setDescriptionLocalizations({ "uk": client.translate("commom:EMOJI", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,10 +11,12 @@ class Help extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("help") .setName("help")
.setDescription(client.translate("general/help:DESCRIPTION")) .setDescription(client.translate("general/help:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/help:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => .addStringOption(option =>
option.setName("command") option.setName("command")
.setDescription(client.translate("common:COMMAND"))), .setDescription(client.translate("common:COMMAND"))
.setDescriptionLocalizations({ "uk": client.translate("common:COMMAND", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -39,6 +41,7 @@ class Help extends BaseCommand {
const commands = [...new Map(client.commands.map(v => [v.constructor.name, v])).values()]; const commands = [...new Map(client.commands.map(v => [v.constructor.name, v])).values()];
const categories = []; const categories = [];
const command = interaction.options.getString("command"); const command = interaction.options.getString("command");
if ((commands.find(c => c.command.name === command).category === "Owner") && interaction.user.id !== client.config.owner.id) return interaction.error("misc:OWNER_ONLY", null, { edit: true, ephemeral: true });
if (command) return interaction.editReply({ embeds: [ generateCommandHelp(interaction, command) ] }); if (command) return interaction.editReply({ embeds: [ generateCommandHelp(interaction, command) ] });
@ -125,6 +128,7 @@ function getPermName(bitfield = 0) {
function generateCommandHelp(interaction, command) { function generateCommandHelp(interaction, command) {
const cmd = interaction.client.commands.get(command); const cmd = interaction.client.commands.get(command);
if (!cmd) return interaction.error("general/help:NOT_FOUND", { command }, { edit: true }); if (!cmd) return interaction.error("general/help:NOT_FOUND", { command }, { edit: true });
const usage = interaction.translate(`${cmd.category.toLowerCase()}/${cmd.command.name}:USAGE`) === "" ? const usage = interaction.translate(`${cmd.category.toLowerCase()}/${cmd.command.name}:USAGE`) === "" ?
interaction.translate("misc:NO_ARGS") interaction.translate("misc:NO_ARGS")
: interaction.translate(`${cmd.category.toLowerCase()}/${cmd.command.name}:USAGE`); : interaction.translate(`${cmd.category.toLowerCase()}/${cmd.command.name}:USAGE`);

View file

@ -12,9 +12,11 @@ class Minecraft extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("minecraft") .setName("minecraft")
.setDescription(client.translate("general/minecraft:DESCRIPTION")) .setDescription(client.translate("general/minecraft:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/minecraft:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("ip") .addStringOption(option => option.setName("ip")
.setDescription(client.translate("common:IP")) .setDescription(client.translate("common:IP"))
.setDescriptionLocalizations({ "uk": client.translate("common:IP", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,6 +11,7 @@ class Ping extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("ping") .setName("ping")
.setDescription(client.translate("general/ping:DESCRIPTION")) .setDescription(client.translate("general/ping:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/ping:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true), .setDMPermission(true),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -13,12 +13,15 @@ class Remindme extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("remindme") .setName("remindme")
.setDescription(client.translate("general/remindme:DESCRIPTION")) .setDescription(client.translate("general/remindme:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/remindme:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("time") .addStringOption(option => option.setName("time")
.setDescription(client.translate("owner/remindme:TIME")) .setDescription(client.translate("general/remindme:TIME"))
.setDescriptionLocalizations({ "uk": client.translate("general/remindme:TIME", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addStringOption(option => option.setName("message") .addStringOption(option => option.setName("message")
.setDescription(client.translate("common:MESSAGE")) .setDescription(client.translate("common:MESSAGE"))
.setDescriptionLocalizations({ "uk": client.translate("common:MESSAGE", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,12 +11,15 @@ class Report extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("report") .setName("report")
.setDescription(client.translate("general/report:DESCRIPTION")) .setDescription(client.translate("general/report:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/report:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addStringOption(option => option.setName("message") .addStringOption(option => option.setName("message")
.setDescription(client.translate("common:MESSAGE")) .setDescription(client.translate("common:MESSAGE"))
.setDescriptionLocalizations({ "uk": client.translate("common:MESSAGE", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,6 +11,7 @@ class Serverinfo extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("serverinfo") .setName("serverinfo")
.setDescription(client.translate("general/serverinfo:DESCRIPTION")) .setDescription(client.translate("general/serverinfo:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/serverinfo:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -12,9 +12,11 @@ class Shorturl extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("shorturl") .setName("shorturl")
.setDescription(client.translate("general/shorturl:DESCRIPTION")) .setDescription(client.translate("general/shorturl:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/shorturl:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("url") .addStringOption(option => option.setName("url")
.setDescription(client.translate("general/shorturl:URL")) .setDescription(client.translate("general/shorturl:URL"))
.setDescriptionLocalizations({ "uk": client.translate("general/shorturl:URL", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,6 +11,7 @@ class Staff extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("staff") .setName("staff")
.setDescription(client.translate("general/staff:DESCRIPTION")) .setDescription(client.translate("general/staff:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/staff:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -84,7 +84,7 @@ class Stats extends BaseCommand {
value: interaction.translate("misc:STATS_FOOTER", { value: interaction.translate("misc:STATS_FOOTER", {
dashboardLink: client.config.dashboard.baseURL, dashboardLink: client.config.dashboard.baseURL,
supportLink: "https://discord.gg/Ptkj2n9nzZ", supportLink: "https://discord.gg/Ptkj2n9nzZ",
inviteLink: client.generateInvite({ scopes: [ "bot", "applications.commands" ], permissions: [ PermissionsBitField.Flags.Administrator ] }), inviteLink: client.generateInvite({ scopes: ["bot", "applications.commands"], permissions: [ PermissionsBitField.Flags.Administrator ] }),
donateLink: "https://www.donationalerts.com/r/jonny_bro", donateLink: "https://www.donationalerts.com/r/jonny_bro",
owner: client.config.owner.id, owner: client.config.owner.id,
}), }),

View file

@ -11,9 +11,11 @@ class Suggest extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("suggest") .setName("suggest")
.setDescription(client.translate("general/suggest:DESCRIPTION")) .setDescription(client.translate("general/suggest:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/suggest:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addStringOption(option => option.setName("message") .addStringOption(option => option.setName("message")
.setDescription(client.translate("common:MESSAGE")) .setDescription(client.translate("common:MESSAGE"))
.setDescriptionLocalizations({ "uk": client.translate("common:MESSAGE", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Userinfo extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("userinfo") .setName("userinfo")
.setDescription(client.translate("general/userinfo:DESCRIPTION")) .setDescription(client.translate("general/userinfo:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/userinfo:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER"))), .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,

View file

@ -12,9 +12,11 @@ class Whois extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("whois") .setName("whois")
.setDescription(client.translate("general/whois:DESCRIPTION")) .setDescription(client.translate("general/whois:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("general/whois:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("ip") .addStringOption(option => option.setName("ip")
.setDescription(client.translate("common:IP")) .setDescription(client.translate("common:IP"))
.setDescriptionLocalizations({ "uk": client.translate("common:IP", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -13,6 +13,7 @@ class Checkjar extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("checkjar") .setName("checkjar")
.setDescription(client.translate("iat/checkjar:DESCRIPTION")) .setDescription(client.translate("iat/checkjar:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("iat/checkjar:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,13 +11,19 @@ class Clear extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("clear") .setName("clear")
.setDescription(client.translate("moderation/clear:DESCRIPTION")) .setDescription(client.translate("moderation/clear:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/clear:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages) .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages)
.addStringOption(option => option.setName("option") .addStringOption(option => option.setName("option")
.setDescription(client.translate("moderation/clear:OPTION")) .setDescription(client.translate("moderation/clear:OPTION"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/clear:OPTION", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER"))), .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") }))
.addStringOption(option => option.setName("id")
.setDescription(client.translate("common:USER_ID"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER_ID", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: false, ownerOnly: false,
@ -39,8 +45,9 @@ class Clear extends BaseCommand {
async execute(client, interaction) { async execute(client, interaction) {
await interaction.deferReply({ ephemeral: true }); await interaction.deferReply({ ephemeral: true });
const option = interaction.options.getString("option"); const option = interaction.options.getString("option"),
const member = interaction.options.getMember("user"); member = interaction.options.getMember("user"),
user_id = interaction.options.getString("id");
if (option === "all") { if (option === "all") {
const row = new ActionRowBuilder() const row = new ActionRowBuilder()
@ -105,23 +112,25 @@ class Clear extends BaseCommand {
}); });
} else { } else {
if (isNaN(option) || parseInt(option) < 1) return interaction.error("misc:OPTION_NAN_ALL", null, { ephemeral: true }); if (isNaN(option) || parseInt(option) < 1) return interaction.error("misc:OPTION_NAN_ALL", null, { ephemeral: true });
let messages = await interaction.channel.messages.fetch({ let messages = await interaction.channel.messages.fetch({
limit: option, limit: option,
}); });
if (member) messages = messages.filter(m => m.author.id === member.id);
if (messages.length > option) messages.length = parseInt(option, 10); if ((!member && !user_id) || (member && user_id)) return interaction.replyT("moderation/clear:REQUIRE_ID_USER", null, { edit: true });
if (member || user_id) messages = messages.filter(m => m.author.id === (member?.id || user_id));
interaction.channel.bulkDelete(messages.filter(m => !m.pinned), true); interaction.channel.bulkDelete(messages.filter(m => !m.pinned), true);
if (member) { if (member || user_id) {
interaction.replyT("moderation/clear:CLEARED_MEMBER", { interaction.replyT("moderation/clear:CLEARED_MEMBER", {
amount: `**${option}** ${client.getNoun(option, interaction.translate("misc:NOUNS:MESSAGES:1"), interaction.translate("misc:NOUNS:MESSAGES:2"), interaction.translate("misc:NOUNS:MESSAGES:5"))}`, amount: `**${option}** ${client.getNoun(option, interaction.translate("misc:NOUNS:MESSAGES:1"), interaction.translate("misc:NOUNS:MESSAGES:2"), interaction.translate("misc:NOUNS:MESSAGES:5"))}`,
username: member.user.tag, user: (member?.user.tag || user_id),
}, { ephemeral: true, edit: true }); }, { edit: true });
} else { } else {
interaction.replyT("moderation/clear:CLEARED", { interaction.replyT("moderation/clear:CLEARED", {
amount: `**${option}** ${client.getNoun(option, interaction.translate("misc:NOUNS:MESSAGES:1"), interaction.translate("misc:NOUNS:MESSAGES:2"), interaction.translate("misc:NOUNS:MESSAGES:5"))}`, amount: `**${option}** ${client.getNoun(option, interaction.translate("misc:NOUNS:MESSAGES:1"), interaction.translate("misc:NOUNS:MESSAGES:2"), interaction.translate("misc:NOUNS:MESSAGES:5"))}`,
}, { ephemeral: true, edit: true }); }, { edit: true });
} }
} }
} }

View file

@ -11,10 +11,12 @@ class Clearwarns extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("clearwarns") .setName("clearwarns")
.setDescription(client.translate("moderation/clearwarns:DESCRIPTION")) .setDescription(client.translate("moderation/clearwarns:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/clearwarns:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages) .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -12,39 +12,51 @@ class Giveaway extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("giveaway") .setName("giveaway")
.setDescription(client.translate("moderation/giveaway:DESCRIPTION")) .setDescription(client.translate("moderation/giveaway:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages) .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages)
.addSubcommand(subcommand => subcommand.setName("create") .addSubcommand(subcommand => subcommand.setName("create")
.setDescription(client.translate("moderation/giveaway:CREATE")) .setDescription(client.translate("moderation/giveaway:CREATE"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:CREATE", null, "uk-UA") })
.addStringOption(option => option.setName("duration") .addStringOption(option => option.setName("duration")
.setDescription(client.translate("common:DURATION")) .setDescription(client.translate("common:DURATION"))
.setDescriptionLocalizations({ "uk": client.translate("common:DURATION", null, "uk-UA") })
.setRequired(true)) .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"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:WINNERS_COUNT", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addStringOption(option => option.setName("prize") .addStringOption(option => option.setName("prize")
.setDescription(client.translate("moderation/giveaway:PRIZE")) .setDescription(client.translate("moderation/giveaway:PRIZE"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:PRIZE", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addBooleanOption(option => option.setName("isdrop") .addBooleanOption(option => option.setName("isdrop")
.setDescription(client.translate("moderation/giveaway:ISDROP")) .setDescription(client.translate("moderation/giveaway:ISDROP"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:ISDROP", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
) )
.addSubcommand(subcommand => subcommand.setName("reroll") .addSubcommand(subcommand => subcommand.setName("reroll")
.setDescription(client.translate("moderation/giveaway:REROLL")) .setDescription(client.translate("moderation/giveaway:REROLL"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:REROLL", null, "uk-UA") })
.addStringOption(option => option.setName("giveaway_id") .addStringOption(option => option.setName("giveaway_id")
.setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID")) .setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:GIVEAWAY_ID", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
) )
.addSubcommand(subcommand => subcommand.setName("end") .addSubcommand(subcommand => subcommand.setName("end")
.setDescription(client.translate("moderation/giveaway:END")) .setDescription(client.translate("moderation/giveaway:END"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:END", null, "uk-UA") })
.addStringOption(option => option.setName("giveaway_id") .addStringOption(option => option.setName("giveaway_id")
.setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID")) .setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:GIVEAWAY_ID", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
) )
.addSubcommand(subcommand => subcommand.setName("delete") .addSubcommand(subcommand => subcommand.setName("delete")
.setDescription(client.translate("moderation/giveaway:DELETE")) .setDescription(client.translate("moderation/giveaway:DELETE"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:DELETE", null, "uk-UA") })
.addStringOption(option => option.setName("giveaway_id") .addStringOption(option => option.setName("giveaway_id")
.setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID")) .setDescription(client.translate("moderation/giveaway:GIVEAWAY_ID"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/giveaway:GIVEAWAY_ID", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
), ),
aliases: [], aliases: [],

View file

@ -11,10 +11,12 @@ class Poll extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("poll") .setName("poll")
.setDescription(client.translate("moderation/poll:DESCRIPTION")) .setDescription(client.translate("moderation/poll:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/poll:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages) .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages)
.addStringOption(option => option.setName("question") .addStringOption(option => option.setName("question")
.setDescription(client.translate("moderation/poll:QUESTION")) .setDescription(client.translate("moderation/poll:QUESTION"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/poll:QUESTION", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,10 +11,12 @@ class Unban extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("unban") .setName("unban")
.setDescription(client.translate("moderation/unban:DESCRIPTION")) .setDescription(client.translate("moderation/unban:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/unban:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages) .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages)
.addStringOption(option => option.setName("user_id") .addStringOption(option => option.setName("user_id")
.setDescription(client.translate("common:USER_ID")) .setDescription(client.translate("common:USER_ID"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER_ID", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -106,7 +106,7 @@ class Warn extends BaseCommand {
if (sanctions >= banCount) { if (sanctions >= banCount) {
member.send({ member.send({
content: interaction.translate("moderation/ban:BANNED_DM", { content: interaction.translate("moderation/ban:BANNED_DM", {
username: member.user, user: member.user,
moderator: interaction.user.tag, moderator: interaction.user.tag,
server: interaction.guild.name, server: interaction.guild.name,
reason, reason,
@ -124,7 +124,7 @@ class Warn extends BaseCommand {
interaction.guild.members.ban(member).catch(() => {}); interaction.guild.members.ban(member).catch(() => {});
interaction.followUp({ interaction.followUp({
content: interaction.translate("moderation/setwarns:AUTO_BAN", { content: interaction.translate("moderation/setwarns:AUTO_BAN", {
username: member.user.tag, user: member.user.tag,
count: `${banCount} ${client.getNoun(banCount, interaction.translate("misc:NOUNS:WARNS:1"), interaction.translate("misc:NOUNS:WARNS:2"), interaction.translate("misc:NOUNS:WARNS:5"))}`, count: `${banCount} ${client.getNoun(banCount, interaction.translate("misc:NOUNS:WARNS:1"), interaction.translate("misc:NOUNS:WARNS:2"), interaction.translate("misc:NOUNS:WARNS:5"))}`,
}), }),
}); });
@ -135,7 +135,7 @@ class Warn extends BaseCommand {
if (sanctions >= kickCount) { if (sanctions >= kickCount) {
member.send({ member.send({
content: interaction.translate("moderation/kick:KICKED_DM", { content: interaction.translate("moderation/kick:KICKED_DM", {
username: member.user, user: member.user,
moderator: interaction.user.tag, moderator: interaction.user.tag,
server: interaction.guild.name, server: interaction.guild.name,
reason, reason,
@ -153,7 +153,7 @@ class Warn extends BaseCommand {
member.kick().catch(() => {}); member.kick().catch(() => {});
interaction.followUp({ interaction.followUp({
content: interaction.translate("moderation/setwarns:AUTO_KICK", { content: interaction.translate("moderation/setwarns:AUTO_KICK", {
username: member.user.tag, user: member.user.tag,
count: `${kickCount} ${client.getNoun(kickCount, interaction.translate("misc:NOUNS:WARNS:1"), interaction.translate("misc:NOUNS:WARNS:2"), interaction.translate("misc:NOUNS:WARNS:5"))}`, count: `${kickCount} ${client.getNoun(kickCount, interaction.translate("misc:NOUNS:WARNS:1"), interaction.translate("misc:NOUNS:WARNS:2"), interaction.translate("misc:NOUNS:WARNS:5"))}`,
}), }),
}); });
@ -162,7 +162,7 @@ class Warn extends BaseCommand {
member.send({ member.send({
content: interaction.translate("moderation/warn:WARNED_DM", { content: interaction.translate("moderation/warn:WARNED_DM", {
username: member.user.tag, user: member.user.tag,
server: interaction.guild.name, server: interaction.guild.name,
moderator: interaction.user.tag, moderator: interaction.user.tag,
reason, reason,

View file

@ -11,10 +11,12 @@ class Warns extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("warns") .setName("warns")
.setDescription(client.translate("moderation/warns:DESCRIPTION")) .setDescription(client.translate("moderation/warns:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("moderation/warns:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages) .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers && PermissionFlagsBits.ManageMessages)
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,6 +11,7 @@ class Back extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("back") .setName("back")
.setDescription(client.translate("music/back:DESCRIPTION")) .setDescription(client.translate("music/back:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/back:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -13,9 +13,11 @@ class Clips extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("clips") .setName("clips")
.setDescription(client.translate("music/clips:DESCRIPTION")) .setDescription(client.translate("music/clips:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/clips:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addStringOption(option => option.setName("query") .addStringOption(option => option.setName("query")
.setDescription(client.translate("music/clips:QUERY")) .setDescription(client.translate("music/clips:QUERY"))
.setDescriptionLocalizations({ "uk": client.translate("music/clips:QUERY", null, "uk-UA") })
.setRequired(true) .setRequired(true)
.setAutocomplete(true)), .setAutocomplete(true)),
aliases: [], aliases: [],
@ -76,10 +78,12 @@ class Clips extends BaseCommand {
* @returns * @returns
*/ */
async autocompleteRun(client, interaction) { async autocompleteRun(client, interaction) {
const files = fs.readdirSync("./clips"); const query = interaction.options.getString("query"),
files = fs.readdirSync("./clips"),
results = files.filter(f => f.includes(query));
return interaction.respond( return interaction.respond(
files.slice(0, 10).map(file => ({ results.slice(0, 25).map(file => ({
name: file.substring(0, file.length - 4), name: file.substring(0, file.length - 4),
value: `./clips/${file}`, value: `./clips/${file}`,
}), }),

View file

@ -12,11 +12,12 @@ class Loop extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("loop") .setName("loop")
.setDescription(client.translate("music/loop:DESCRIPTION")) .setDescription(client.translate("music/loop:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/loop:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addStringOption(option => option.setName("option") .addStringOption(option => option.setName("option")
.setDescription(client.translate("economy/bank:OPTION")) .setDescription(client.translate("music/loop:OPTION"))
.setRequired(true) .setRequired(true)
.addChoices( .setChoices(
{ name: client.translate("music/loop:AUTOPLAY"), value: "3" }, { name: client.translate("music/loop:AUTOPLAY"), value: "3" },
{ name: client.translate("music/loop:QUEUE"), value: "2" }, { name: client.translate("music/loop:QUEUE"), value: "2" },
{ name: client.translate("music/loop:TRACK"), value: "1" }, { name: client.translate("music/loop:TRACK"), value: "1" },

View file

@ -12,6 +12,7 @@ class Nowplaying extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("nowplaying") .setName("nowplaying")
.setDescription(client.translate("music/nowplaying:DESCRIPTION")) .setDescription(client.translate("music/nowplaying:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/nowplaying:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Play extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("play") .setName("play")
.setDescription(client.translate("music/play:DESCRIPTION")) .setDescription(client.translate("music/play:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/play:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addStringOption(option => option.setName("query") .addStringOption(option => option.setName("query")
.setDescription(client.translate("music/play:QUERY")) .setDescription(client.translate("music/play:QUERY"))
.setDescriptionLocalizations({ "uk": client.translate("music/play:QUERY", null, "uk-UA") })
.setRequired(true) .setRequired(true)
.setAutocomplete(true)), .setAutocomplete(true)),
aliases: [], aliases: [],
@ -80,7 +82,7 @@ class Play extends BaseCommand {
* @returns * @returns
*/ */
async autocompleteRun(client, interaction) { async autocompleteRun(client, interaction) {
const query = interaction.options.getString("query", true), const query = interaction.options.getString("query"),
results = await client.player.search(query); results = await client.player.search(query);
return interaction.respond( return interaction.respond(

View file

@ -12,6 +12,7 @@ class Queue extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("queue") .setName("queue")
.setDescription(client.translate("music/queue:DESCRIPTION")) .setDescription(client.translate("music/queue:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/queue:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,8 +11,10 @@ class Seek extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("seek") .setName("seek")
.setDescription(client.translate("music/seek:DESCRIPTION")) .setDescription(client.translate("music/seek:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/seek:DESCRIPTION", null, "uk-UA") })
.addIntegerOption(option => option.setName("time") .addIntegerOption(option => option.setName("time")
.setDescription(client.translate("music/seek:TIME")) .setDescription(client.translate("music/seek:TIME"))
.setDescriptionLocalizations({ "uk": client.translate("music/seek:TIME", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,6 +11,7 @@ class Shuffle extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("shuffle") .setName("shuffle")
.setDescription(client.translate("music/shuffle:DESCRIPTION")) .setDescription(client.translate("music/shuffle:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/shuffle:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,6 +11,7 @@ class Skip extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("skip") .setName("skip")
.setDescription(client.translate("music/skip:DESCRIPTION")) .setDescription(client.translate("music/skip:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/skip:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,9 +11,11 @@ class Skipto extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("skipto") .setName("skipto")
.setDescription(client.translate("music/skipto:DESCRIPTION")) .setDescription(client.translate("music/skipto:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/skipto:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addIntegerOption(option => option.setName("position") .addIntegerOption(option => option.setName("position")
.setDescription(client.translate("music/skipto:POSITION")) .setDescription(client.translate("music/skipto:POSITION"))
.setDescriptionLocalizations({ "uk": client.translate("music/skipto:POSITION", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,6 +11,7 @@ class Stop extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("stop") .setName("stop")
.setDescription(client.translate("music/stop:DESCRIPTION")) .setDescription(client.translate("music/stop:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/stop:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false), .setDMPermission(false),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

74
commands/Music/volume.js Normal file
View file

@ -0,0 +1,74 @@
const { SlashCommandBuilder } = require("discord.js");
const BaseCommand = require("../../base/BaseCommand");
class Volume extends BaseCommand {
/**
*
* @param {import("../base/JaBa")} client
*/
constructor(client) {
super({
command: new SlashCommandBuilder()
.setName("volume")
.setDescription(client.translate("music/volume:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("music/volume:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false)
.addIntegerOption(option => option.setName("int")
.setDescription(client.translate("common:INT"))
.setDescriptionLocalizations({ "uk": client.translate("common:INT", null, "uk-UA") })
.setRequired(true)
.setAutocomplete(true)),
aliases: [],
dirname: __dirname,
ownerOnly: false,
});
}
/**
*
* @param {import("../../base/JaBa")} client
*/
async onLoad() {
//...
}
/**
*
* @param {import("../../base/JaBa")} client
* @param {import("discord.js").ChatInputCommandInteraction} interaction
* @param {Object} data
*/
async execute(client, interaction) {
const voice = interaction.member.voice.channel;
if (!voice) return interaction.error("music/play:NO_VOICE_CHANNEL", null, { ephemeral: true });
const queue = client.player.nodes.get(interaction.guildId);
if (!queue) return interaction.error("music/play:NOT_PLAYING", null, { ephemeral: true });
const volume = interaction.options.getInteger("int");
if (volume <= 0 || volume > 100) return interaction.error("common:INVALID_NUMBER_RANGE", { min: 1, max: 100 });
queue.node.setVolume(volume);
interaction.success("music/volume:SUCCESS", {
volume,
});
}
/**
*
* @param {import("../../base/JaBa")} client
* @param {import("discord.js").AutocompleteInteraction} interaction
* @returns
*/
async autocompleteRun(client, interaction) {
const int = interaction.options.getInteger("int"),
results = Array.from({ length: 100 }, (_, k) => k + 1).filter(i => i.toString().includes(int));
return interaction.respond(
results.slice(0, 25).map(i => ({
name: i,
value: i,
}),
));
}
}
module.exports = Volume;

View file

@ -10,8 +10,9 @@ class NSFW extends BaseCommand {
constructor(client) { constructor(client) {
super({ super({
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("nsfw") .setName("pic")
.setDescription(client.translate("nsfw/nsfw:DESCRIPTION")) .setDescription(client.translate("nsfw/pic:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("nsfw/pic:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true), .setDMPermission(true),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -11,15 +11,19 @@ class Announcement extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("announcement") .setName("announcement")
.setDescription(client.translate("owner/announcement:DESCRIPTION")) .setDescription(client.translate("owner/announcement:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("owner/announcement:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("message") .addStringOption(option => option.setName("message")
.setDescription(client.translate("common:MESSAGE")) .setDescription(client.translate("common:MESSAGE"))
.setDescriptionLocalizations({ "uk": client.translate("common:MESSAGE", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addBooleanOption(option => option.setName("tag") .addBooleanOption(option => option.setName("tag")
.setDescription(client.translate("owner/announcement:TAG")) .setDescription(client.translate("owner/announcement:TAG"))
.setDescriptionLocalizations({ "uk": client.translate("owner/announcement:TAG", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addBooleanOption(option => option.setName("important") .addBooleanOption(option => option.setName("important")
.setDescription(client.translate("owner/announcement:IMPORTANT"))), .setDescription(client.translate("owner/announcement:IMPORTANT"))
.setDescriptionLocalizations({ "uk": client.translate("owner/announcement:IMPORTANT", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: true, ownerOnly: true,

View file

@ -11,13 +11,16 @@ class Debug extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("debug") .setName("debug")
.setDescription(client.translate("owner/debug:DESCRIPTION")) .setDescription(client.translate("owner/debug:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("owner/debug:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addSubcommand(subcommand => subcommand.setName("set") .addSubcommand(subcommand => subcommand.setName("set")
.setDescription(client.translate("owner/debug:SET")) .setDescription(client.translate("owner/debug:SET"))
.setDescriptionLocalizations({ "uk": client.translate("owner/debug:SET", null, "uk-UA") })
.addStringOption(option => option.setName("type") .addStringOption(option => option.setName("type")
.setDescription(client.translate("owner/debug:TYPE")) .setDescription(client.translate("owner/debug:TYPE"))
.setDescriptionLocalizations({ "uk": client.translate("owner/debug:TYPE", null, "uk-UA") })
.setRequired(true) .setRequired(true)
.addChoices( .setChoices(
{ name: client.translate("common:LEVEL"), value: "level" }, { name: client.translate("common:LEVEL"), value: "level" },
{ name: client.translate("common:XP"), value: "xp" }, { name: client.translate("common:XP"), value: "xp" },
{ name: client.translate("common:CREDITS"), value: "credits" }, { name: client.translate("common:CREDITS"), value: "credits" },
@ -26,17 +29,21 @@ class Debug extends BaseCommand {
)) ))
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addIntegerOption(option => option.setName("int") .addIntegerOption(option => option.setName("int")
.setDescription(client.translate("common:INT")) .setDescription(client.translate("common:INT"))
.setDescriptionLocalizations({ "uk": client.translate("common:INT", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
) )
.addSubcommand(subcommand => subcommand.setName("add") .addSubcommand(subcommand => subcommand.setName("add")
.setDescription(client.translate("owner/debug:ADD")) .setDescription(client.translate("owner/debug:ADD"))
.setDescriptionLocalizations({ "uk": client.translate("owner/debug:ADD", null, "uk-UA") })
.addStringOption(option => option.setName("type") .addStringOption(option => option.setName("type")
.setDescription(client.translate("owner/debug:TYPE")) .setDescription(client.translate("owner/debug:TYPE"))
.setDescriptionLocalizations({ "uk": client.translate("owner/debug:TYPE", null, "uk-UA") })
.setRequired(true) .setRequired(true)
.addChoices( .setChoices(
{ name: client.translate("common:LEVEL"), value: "level" }, { name: client.translate("common:LEVEL"), value: "level" },
{ name: client.translate("common:XP"), value: "xp" }, { name: client.translate("common:XP"), value: "xp" },
{ name: client.translate("common:CREDITS"), value: "credits" }, { name: client.translate("common:CREDITS"), value: "credits" },
@ -45,9 +52,11 @@ class Debug extends BaseCommand {
)) ))
.addUserOption(option => option.setName("user") .addUserOption(option => option.setName("user")
.setDescription(client.translate("common:USER")) .setDescription(client.translate("common:USER"))
.setDescriptionLocalizations({ "uk": client.translate("common:USER", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addIntegerOption(option => option.setName("int") .addIntegerOption(option => option.setName("int")
.setDescription(client.translate("owner/debug:INT")) .setDescription(client.translate("common:INT"))
.setDescriptionLocalizations({ "uk": client.translate("common:INT", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
), ),
aliases: [], aliases: [],
@ -92,7 +101,7 @@ class Debug extends BaseCommand {
memberData.level = int; memberData.level = int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -101,7 +110,7 @@ class Debug extends BaseCommand {
memberData.exp = int; memberData.exp = int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -110,7 +119,7 @@ class Debug extends BaseCommand {
memberData.money = int; memberData.money = int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -119,7 +128,7 @@ class Debug extends BaseCommand {
memberData.bankSold = int; memberData.bankSold = int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -128,7 +137,7 @@ class Debug extends BaseCommand {
userData.rep = int; userData.rep = int;
await userData.save(); await userData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -153,7 +162,7 @@ class Debug extends BaseCommand {
memberData.level += int; memberData.level += int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -162,7 +171,7 @@ class Debug extends BaseCommand {
memberData.exp += int; memberData.exp += int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -171,7 +180,7 @@ class Debug extends BaseCommand {
memberData.money += int; memberData.money += int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -180,7 +189,7 @@ class Debug extends BaseCommand {
memberData.bankSold += int; memberData.bankSold += int;
await memberData.save(); await memberData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }
@ -189,7 +198,7 @@ class Debug extends BaseCommand {
userData.rep += int; userData.rep += int;
await userData.save(); await userData.save();
return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, {
username: member.toString(), user: member.toString(),
amount: int, amount: int,
}, { ephemeral: true }); }, { ephemeral: true });
} }

View file

@ -11,9 +11,11 @@ class Eval extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("eval") .setName("eval")
.setDescription(client.translate("owner/eval:DESCRIPTION")) .setDescription(client.translate("owner/eval:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("owner/eval:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("code") .addStringOption(option => option.setName("code")
.setDescription(client.translate("owner/eval:CODE")) .setDescription(client.translate("owner/eval:CODE"))
.setDescriptionLocalizations({ "uk": client.translate("owner/eval:CODE", null, "uk-UA") })
.setRequired(true)), .setRequired(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -13,10 +13,13 @@ class Reload extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("reload") .setName("reload")
.setDescription(client.translate("owner/reload:DESCRIPTION")) .setDescription(client.translate("owner/reload:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("owner/reload:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true) .setDMPermission(true)
.addStringOption(option => option.setName("command") .addStringOption(option => option.setName("command")
.setDescription(client.translate("common:COMMAND")) .setDescription(client.translate("common:COMMAND"))
.setRequired(true)), .setDescriptionLocalizations({ "uk": client.translate("common:COMMAND", null, "uk-UA") })
.setRequired(true)
.setAutocomplete(true)),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: true, ownerOnly: true,
@ -50,6 +53,24 @@ class Reload extends BaseCommand {
command: cmd.command.name, command: cmd.command.name,
}, { ephemeral: true }); }, { ephemeral: true });
} }
/**
*
* @param {import("../../base/JaBa")} client
* @param {import("discord.js").AutocompleteInteraction} interaction
* @returns
*/
async autocompleteRun(client, interaction) {
const command = interaction.options.getString("command"),
results = client.commands.filter(c => c.command.name.includes(command));
return interaction.respond(
results.map(c => c).slice(0, 25).map(c => ({
name: c.command.name,
value: c.command.name,
}),
));
}
} }
module.exports = Reload; module.exports = Reload;

View file

@ -11,12 +11,15 @@ class Say extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("say") .setName("say")
.setDescription(client.translate("owner/say:DESCRIPTION")) .setDescription(client.translate("owner/say:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("owner/say:DESCRIPTION", null, "uk-UA") })
.setDMPermission(false) .setDMPermission(false)
.addStringOption(option => option.setName("message") .addStringOption(option => option.setName("message")
.setDescription(client.translate("common:MESSAGE")) .setDescription(client.translate("common:MESSAGE"))
.setDescriptionLocalizations({ "uk": client.translate("common:MESSAGE", null, "uk-UA") })
.setRequired(true)) .setRequired(true))
.addChannelOption(option => option.setName("channel") .addChannelOption(option => option.setName("channel")
.setDescription(client.translate("common:CHANNEL"))), .setDescription(client.translate("common:CHANNEL"))
.setDescriptionLocalizations({ "uk": client.translate("common:CHANNEL", null, "uk-UA") })),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,
ownerOnly: true, ownerOnly: true,

View file

@ -11,6 +11,7 @@ class Servers extends BaseCommand {
command: new SlashCommandBuilder() command: new SlashCommandBuilder()
.setName("servers") .setName("servers")
.setDescription(client.translate("owner/servers:DESCRIPTION")) .setDescription(client.translate("owner/servers:DESCRIPTION"))
.setDescriptionLocalizations({ "uk": client.translate("owner/servers:DESCRIPTION", null, "uk-UA") })
.setDMPermission(true), .setDMPermission(true),
aliases: [], aliases: [],
dirname: __dirname, dirname: __dirname,

View file

@ -1,3 +1,11 @@
### JaBa v4.2.1
* Добавлено
* Команда *volume* - установить громкость бота.
* Отправка сообщения при бане пользователя.
* Фильтрация сообщений в *clear* по ID или пользователю.
* Удаление спама если включён Автомод.
* Подсказки по командам на языке вашего клиента.
### JaBa v4.2.0 ### JaBa v4.2.0
Я решил отказаться от своего модуля музыки в пользу основного, т.к. он был переписан авторами и теперь работает намного лучше. Я решил отказаться от своего модуля музыки в пользу основного, т.к. он был переписан авторами и теперь работает намного лучше.

View file

@ -41,8 +41,8 @@ class CommandHandler extends BaseEvent {
} }
if (interaction.type !== InteractionType.ApplicationCommand && !interaction.isCommand()) return; if (interaction.type !== InteractionType.ApplicationCommand && !interaction.isCommand()) return;
if (command.guildOnly && !interaction.inGuild()) return interaction.replyT("misc:GUILD_ONLY", { ephemeral: true }); if (command.guildOnly && !interaction.inGuild()) return interaction.error("misc:GUILD_ONLY", null, { ephemeral: true });
if (command.ownerOnly && interaction.user.id !== client.config.owner.id) return interaction.replyT("misc:OWNER_ONLY", { ephemeral: true }); if (command.ownerOnly && interaction.user.id !== client.config.owner.id) return interaction.error("misc:OWNER_ONLY", null, { ephemeral: true });
if (!userData.achievements.firstCommand.achieved) { if (!userData.achievements.firstCommand.achieved) {
userData.achievements.firstCommand.progress.now = 1; userData.achievements.firstCommand.progress.now = 1;

View file

@ -0,0 +1,32 @@
const { EmbedBuilder } = require("discord.js"),
BaseEvent = require("../../base/BaseEvent");
class guildBanAdd extends BaseEvent {
constructor() {
super({
name: "guildBanAdd",
once: false,
});
}
/**
*
* @param {import("../../base/JaBa")} client
* @param {import("discord.js").GuildBan} ban
*/
async execute(client, ban) {
const embed = new EmbedBuilder()
.setAuthor({
name: client.user.name,
iconURL: ban.guild.iconURL(),
})
.setColor("#FF0000")
.setDescription(`Вы были забанены на **${ban.guild.name}** по причине **${ban.reason || "Не указана"}**`);
ban.user.send({
embeds: [embed],
});
}
}
module.exports = guildBanAdd;

View file

@ -15,8 +15,6 @@ class GuildCreate extends BaseEvent {
* @param {import("discord.js").Guild} guild * @param {import("discord.js").Guild} guild
*/ */
async execute(client, guild) { async execute(client, guild) {
const messageOptions = {};
const userData = await client.findOrCreateUser({ const userData = await client.findOrCreateUser({
id: guild.ownerId, id: guild.ownerId,
}); });
@ -24,15 +22,11 @@ class GuildCreate extends BaseEvent {
if (!userData.achievements.invite.achieved) { if (!userData.achievements.invite.achieved) {
userData.achievements.invite.progress.now += 1; userData.achievements.invite.progress.now += 1;
userData.achievements.invite.achieved = true; userData.achievements.invite.achieved = true;
messageOptions.files = [{
name: "unlocked.png",
attachment: "./assets/img/achievements/achievement_unlocked7.png",
}];
userData.markModified("achievements.invite"); userData.markModified("achievements.invite");
await userData.save(); await userData.save();
} }
const thanksEmbed = new EmbedBuilder() const thanks = new EmbedBuilder()
.setAuthor({ .setAuthor({
name: "Спасибо что добавили меня на свой сервер!", name: "Спасибо что добавили меня на свой сервер!",
}) })
@ -42,10 +36,15 @@ class GuildCreate extends BaseEvent {
text: client.config.embed.footer, text: client.config.embed.footer,
}) })
.setTimestamp(); .setTimestamp();
messageOptions.embeds = [thanksEmbed];
const owner = await guild.fetchOwner(); const owner = await guild.fetchOwner();
owner.send(messageOptions); owner.send({
files: [{
name: "unlocked.png",
attachment: "./assets/img/achievements/achievement_unlocked7.png",
}],
embeds: [thanks],
});
const users = guild.members.cache.filter(m => !m.user.bot).size; const users = guild.members.cache.filter(m => !m.user.bot).size;
const bots = guild.members.cache.filter(m => m.user.bot).size; const bots = guild.members.cache.filter(m => m.user.bot).size;

View file

@ -20,7 +20,7 @@ class GuildDelete extends BaseEvent {
name: guild.name, name: guild.name,
iconURL: guild.iconURL(), iconURL: guild.iconURL(),
}) })
.setColor("#B22222") .setColor("#FF0000")
.setDescription(`Вышел с сервера **${guild.name}**.`); .setDescription(`Вышел с сервера **${guild.name}**.`);
client.channels.cache.get(client.config.support.logs).send({ client.channels.cache.get(client.config.support.logs).send({
embeds: [embed], embeds: [embed],

View file

@ -1,6 +1,9 @@
const { PermissionsBitField } = require("discord.js"); const { PermissionsBitField } = require("discord.js");
const BaseEvent = require("../base/BaseEvent"), const BaseEvent = require("../base/BaseEvent"),
xpCooldown = {}; xpCooldown = {},
usersMap = new Map(),
messageLimit = 10,
timeDifferenceMs = 5000;
class MessageCreate extends BaseEvent { class MessageCreate extends BaseEvent {
constructor() { constructor() {
@ -50,7 +53,7 @@ class MessageCreate extends BaseEvent {
if (/(discord\.(gg|io|me|li)\/.+|discordapp\.com\/invite\/.+)/i.test(message.content)) if (/(discord\.(gg|io|me|li)\/.+|discordapp\.com\/invite\/.+)/i.test(message.content))
if (!message.channel.permissionsFor(message.member).has(PermissionsBitField.Flags.ManageMessages)) { if (!message.channel.permissionsFor(message.member).has(PermissionsBitField.Flags.ManageMessages)) {
message.delete(); message.delete();
return message.error("administration/automod:DELETED"); message.error("administration/automod:DELETED");
} }
const afkReason = data.userData.afk; const afkReason = data.userData.afk;
@ -58,7 +61,7 @@ class MessageCreate extends BaseEvent {
data.userData.afk = null; data.userData.afk = null;
await data.userData.save(); await data.userData.save();
message.replyT("general/afk:DELETED", { message.replyT("general/afk:DELETED", {
username: message.author.username, user: message.author.username,
}, { mention: true }); }, { mention: true });
} }
@ -66,9 +69,53 @@ class MessageCreate extends BaseEvent {
const userData = await client.findOrCreateUser({ const userData = await client.findOrCreateUser({
id: u.id, id: u.id,
}); });
if (userData.afk) message.error("general/afk:IS_AFK", { user: u.tag, reason: userData.afk }); if (userData.afk) message.replyT("general/afk:IS_AFK", { user: u.tag, reason: userData.afk }, { ephemeral: true });
}); });
} }
if (data.guildData.plugins.automod.enabled)
if (usersMap.has(message.author.id)) {
let msgCount = userData.msgCount;
const userData = usersMap.get(message.author.id),
{ lastMessage, timer } = userData,
difference = message.createdTimestamp - lastMessage.createdTimestamp;
if (difference > timeDifferenceMs) {
clearTimeout(timer);
userData.msgCount = 1;
userData.lastMessage = message;
userData.timer = setTimeout(() => {
usersMap.delete(message.author.id);
}, 1000);
usersMap.set(message.author.id, userData);
} else {
++msgCount;
if (parseInt(msgCount) === messageLimit) {
message.replyT("administration/automod:");
let messages = await message.channel.messages.fetch({
limit: messageLimit,
});
messages = messages.filter(m => m.author.id === message.user.id);
message.channel.bulkDelete(messages.filter(m => !m.pinned), true);
} else {
userData.msgCount = msgCount;
usersMap.set(message.author.id, userData);
}
}
} else {
const fn = setTimeout(() => {
usersMap.delete(message.author.id);
}, 1000);
usersMap.set(message.author.id, {
msgCount: 1,
lastMessage: message,
timer: fn,
});
}
return; return;
} }
} }

View file

@ -1,9 +1,10 @@
{ {
"DESCRIPTION": "Включить или отключить автоудаление ссылок-приглашений", "DESCRIPTION": "Включить или отключить автоудаление спама и ссылок-приглашений",
"USAGE": "[state] (#channel)", "USAGE": "[state] (#channel)",
"EXAMPLES": "automod state:True\nautomod state:False channel:#general\nautomod state: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": "Автомодерация отключена",
"DELETED": "Ваше сообщение было удалено, т.к. содержало в себе ссылку-приглашение!" "DELETED": "Ваше сообщение было удалено, т.к. содержало в себе ссылку-приглашение",
"NO_SPAM": "Прекратите спамить!"
} }

View file

@ -2,7 +2,7 @@
"DESCRIPTION": "Включить или отключить автоназначение роли при входе на сервер", "DESCRIPTION": "Включить или отключить автоназначение роли при входе на сервер",
"USAGE": "[state] (@role)", "USAGE": "[state] (@role)",
"EXAMPLES": "autorole state:True role:@новенький\nautorole state: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

@ -19,14 +19,14 @@
"AUTOMOD_TITLE": "Автомодерация", "AUTOMOD_TITLE": "Автомодерация",
"AUTOROLE_TITLE": "Автоназначение роли при входе", "AUTOROLE_TITLE": "Автоназначение роли при входе",
"AUTO_SANCTIONS": "Автоматические наказания", "AUTO_SANCTIONS": "Автоматические наказания",
"BAN_CONTENT": "Бан: После **{{count}}** предупреждений.", "BAN_CONTENT": "Бан: После **{{count}}** предупреждений",
"BAN_NOT_DEFINED": "Бан: Не назначено.", "BAN_NOT_DEFINED": "Бан: Не назначено",
"DASHBOARD_CONTENT": "Нажмите сюда, чтобы перейти в панель управления!", "DASHBOARD_CONTENT": "Нажмите сюда, чтобы перейти в панель управления",
"DASHBOARD_TITLE": "Изменить настройки", "DASHBOARD_TITLE": "Изменить настройки",
"GOODBYE_CONTENT": "Канал: {{channel}}\nКарточка: {{withImage}}", "GOODBYE_CONTENT": "Канал: {{channel}}\nКарточка: {{withImage}}",
"GOODBYE_TITLE": "Прощание", "GOODBYE_TITLE": "Прощание",
"KICK_CONTENT": "Кик: После **{{count}}** предупреждений.", "KICK_CONTENT": "Кик: После **{{count}}** предупреждений",
"KICK_NOT_DEFINED": "Кик: Не назначено.", "KICK_NOT_DEFINED": "Кик: Не назначено",
"LIST": "Показать настройки сервера", "LIST": "Показать настройки сервера",
"SET": "Изменить настройки сервера", "SET": "Изменить настройки сервера",
"SETTING": "Параметр", "SETTING": "Параметр",

View file

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

View file

@ -3,13 +3,13 @@
"USAGE": "config [state] [#channel] [message] [image] \nИли [test]", "USAGE": "config [state] [#channel] [message] [image] \nИли [test]",
"EXAMPLES": "goodbye state:True channel:#welcome Прощай! image:True\ngoodbye test", "EXAMPLES": "goodbye state:True channel:#welcome Прощай! image:True\ngoodbye test",
"TEST": "Проверить", "TEST": "Проверить",
"TEST_SUCCESS": "Тест выполнен...", "TEST_SUCCESS": "Тест выполнен",
"CONFIG": "Настроить", "CONFIG": "Настроить",
"IMAGE": "Добавить карточку к сообщению?", "IMAGE": "Добавить карточку к сообщению?",
"MESSAGE": "Ваше сообщение (доступны подмены с помощью {user}, {server} и {membercount})", "MESSAGE": "Ваше сообщение (доступны подмены с помощью {user}, {server} и {membercount})",
"ENABLED": "Прощальные сообщения включены в {{channel}}!\nИспользуйте `goodbye test` для просмотра сообщения!", "ENABLED": "Прощальные сообщения включены в {{channel}}!\nИспользуйте `goodbye test` для просмотра сообщения",
"DISABLED": "Прощальные сообщения отключены!", "DISABLED": "Прощальные сообщения отключены",
"DEFAULT_MESSAGE": "Пока, {user}! Нас теперь {membercount} без тебя :'(", "DEFAULT_MESSAGE": "Пока, {user}! Нас теперь {membercount} без тебя :'(",
"IMG_GOODBYE": "Вышел с {{server}}!", "IMG_GOODBYE": "Вышел с {{server}}",
"TITLE": "До встречи!" "TITLE": "До встречи!"
} }

View file

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

View file

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

View file

@ -2,9 +2,9 @@
"DESCRIPTION": "Включить или отключить сообщения при входе пользователя на сервер", "DESCRIPTION": "Включить или отключить сообщения при входе пользователя на сервер",
"USAGE": "config [state] [#channel] [message] [image] \nИли [test]", "USAGE": "config [state] [#channel] [message] [image] \nИли [test]",
"EXAMPLES": "welcome state:True channel:#welcome Добро пожаловать! image:True\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}",
"IMG_WELCOME": "Добро пожаловать на {{server}}!", "IMG_WELCOME": "Добро пожаловать на {{server}}",
"TITLE": "Добро пожаловать!" "TITLE": "Добро пожаловать!"
} }

View file

@ -2,13 +2,13 @@
"DESCRIPTION": "Показать список достижений пользователя", "DESCRIPTION": "Показать список достижений пользователя",
"USAGE": "(@user)", "USAGE": "(@user)",
"EXAMPLES": "achievements\nachievements user:@Jonny_Bro#4226", "EXAMPLES": "achievements\nachievements user:@Jonny_Bro#4226",
"SEND_CMD": "Используйте свою первую команду!", "SEND_CMD": "Используйте свою первую команду",
"CLAIM_SALARY": "Получите зарплату 10 раз!", "CLAIM_SALARY": "Получите зарплату 10 раз",
"MARRY": "Найдите вторую половинку и женитесь!", "MARRY": "Найдите вторую половинку",
"SLOTS": "Выиграйте 3 раза подряд в слоты!", "SLOTS": "Выиграйте 3 раза подряд в слоты",
"TIP": "Поддержите разработчика!", "TIP": "Поддержите разработчика",
"REP": "Достигните 20 очков репутации!", "REP": "Достигните 20 очков репутации",
"INVITE": "Пригласите JaBa на ваш сервер!", "INVITE": "Пригласите JaBa на ваш сервер",
"TITLE": "🔥 Достижения", "TITLE": "🔥 Достижения",
"PROGRESS": "Прогресс: {{now}}/{{total}} ({{percent}}%)" "PROGRESS": "Прогресс: {{now}}/{{total}} ({{percent}}%)"
} }

View file

@ -5,8 +5,8 @@
"OPTION": "Действие", "OPTION": "Действие",
"DEPOSIT": "Внести", "DEPOSIT": "Внести",
"WITHDRAW": "Снять", "WITHDRAW": "Снять",
"NOT_ENOUGH_CREDIT": "У вас нет {{money}}!", "NOT_ENOUGH_CREDIT": "У вас нет {{money}}",
"NOT_ENOUGH_BANK": "Недостаточно кредитов на банковском счету, необходимо {{money}}!", "NOT_ENOUGH_BANK": "Недостаточно кредитов на банковском счету, необходимо {{money}}",
"SUCCESS_DEP": "{{money}} внесено на ваш банковский счёт!", "SUCCESS_DEP": "{{money}} внесено на ваш банковский счёт",
"SUCCESS_WD": "Вы сняли {{money}} с вашего банковского счёта" "SUCCESS_WD": "Вы сняли {{money}} с вашего банковского счёта"
} }

View file

@ -6,8 +6,8 @@
"MONTH": "Месяц", "MONTH": "Месяц",
"YEAR": "Год", "YEAR": "Год",
"DATE_TOO_LOW": "Вам больше 80 лет? :eyes:", "DATE_TOO_LOW": "Вам больше 80 лет? :eyes:",
"DATE_TOO_HIGH": "Хммм... Вы ещё не родились!", "DATE_TOO_HIGH": "Хммм... Вы ещё не родились",
"HAPPY_BIRTHDAY": "День рождения", "HAPPY_BIRTHDAY": "День рождения",
"HAPPY_BIRTHDAY_MESSAGE": "Поздравляем {{name}} (<@{{user}}>) с днём рождения, сегодня ему(ей) исполнилось {{age}}!", "HAPPY_BIRTHDAY_MESSAGE": "Поздравляем {{name}} (<@{{user}}>) с днём рождения, сегодня ему(ей) исполнилось {{age}}!",
"SUCCESS": "Ваша дата рождения установлена на **{{date}}**!" "SUCCESS": "Ваша дата рождения установлена на **{{date}}**"
} }

View file

@ -2,7 +2,7 @@
"DESCRIPTION": "Развестись с пользователем", "DESCRIPTION": "Развестись с пользователем",
"USAGE": "", "USAGE": "",
"EXAMPLES": "divorce", "EXAMPLES": "divorce",
"NOT_MARRIED": "Вы не состоите в браке!", "NOT_MARRIED": "Вы не состоите в браке",
"DIVORCED": "Вы развелись с {{user}}!", "DIVORCED": "Вы развелись с {{user}}",
"DIVORCED_U": "{{user}} развёлся с вами!" "DIVORCED_U": "{{user}} развёлся с вами"
} }

View file

@ -5,6 +5,6 @@
"LEVEL": "Уровень", "LEVEL": "Уровень",
"MONEY": "Кредиты", "MONEY": "Кредиты",
"REP": "Репутация", "REP": "Репутация",
"MOBILE": ":confused: Я заметил, что вы онлайн с телефона... Таблица лидеров может отображаться некорректно на маленьких экранах. Попробуйте позже с другого устройства!", "MOBILE": ":confused: Я заметил, что вы онлайн с телефона... Таблица лидеров может отображаться некорректно на маленьких экранах. Попробуйте позже с другого устройства",
"TABLE": "Таблица лидеров {{name}}" "TABLE": "Таблица лидеров {{name}}"
} }

View file

@ -2,15 +2,15 @@
"DESCRIPTION": "Женитесь на том, кого любите", "DESCRIPTION": "Женитесь на том, кого любите",
"USAGE": "[@user]", "USAGE": "[@user]",
"EXAMPLES": "marry user:@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": "Вы не можете жениться на себе",
"REQUEST_AUTHOR_TO_AMEMBER": "Вы уже отправили предложение {{user}}!", "REQUEST_AUTHOR_TO_AMEMBER": "Вы уже отправили предложение {{user}}",
"REQUEST_AMEMBER_TO_AUTHOR": "{{user}} отправил(а) вам предложение! Вы можете отказать или согласиться (либо дождаться истечения срока предложения).", "REQUEST_AMEMBER_TO_AUTHOR": "{{user}} отправил(а) вам предложение! Вы можете отказать или согласиться (либо дождаться истечения срока предложения)",
"REQUEST_AMEMBER_TO_MEMBER": "{{secondUser}} уже отправил(а) предложение {{firstUser}}!", "REQUEST_AMEMBER_TO_MEMBER": "{{secondUser}} уже отправил(а) предложение {{firstUser}}",
"REQUEST_MEMBER_TO_AMEMBER": "{{firstUser}} уже отправил(а) предложение {{secondUser}}! Подождите пока {{secondUser}} согласиться или откажет на предложение {{firstUser}} (либо дождитесь истечения срока предложения)!", "REQUEST_MEMBER_TO_AMEMBER": "{{firstUser}} уже отправил(а) предложение {{secondUser}}! Подождите пока {{secondUser}} согласиться или откажет на предложение {{firstUser}} (либо дождитесь истечения срока предложения)",
"REQUEST": "{{to}}, вы согласны вступить в брак с {{from}}?", "REQUEST": "{{to}}, вы согласны вступить в брак с {{from}}?",
"DENIED": "{{creator}}, у меня есть плохие новости... {{partner}} отказался(лась) от вашего предложение.", "DENIED": "{{creator}}, у меня есть плохие новости... {{partner}} отказался(лась) от вашего предложение",
"SUCCESS": "🎉 Поздравляем! **{{creator}}** и **{{partner}}** теперь состоят в браке!", "SUCCESS": "🎉 Поздравляем! **{{creator}}** и **{{partner}}** теперь состоят в браке",
"BOT_USER": "Боты вечно одиноки ;(" "BOT_USER": "Боты вечно одиноки ;("
} }

View file

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

View file

@ -2,11 +2,11 @@
"DESCRIPTION": "Угадай загаданное мною число", "DESCRIPTION": "Угадай загаданное мною число",
"USAGE": "", "USAGE": "",
"EXAMPLES": "number", "EXAMPLES": "number",
"GAME_START": "Я загадал число, начинайте!\nНапишите STOP, если хотите остановить игру!", "GAME_START": "Я загадал число, начинайте!\nНапишите STOP, если хотите остановить игру",
"TOO_BIG": "{{user}}, моё число **больше** чем `{{number}}`!", "TOO_BIG": "{{user}}, моё число **больше** чем `{{number}}`",
"TOO_SMALL": "{{user}}, моё число **меньше** чем `{{number}}`!", "TOO_SMALL": "{{user}}, моё число **меньше** чем `{{number}}`",
"WON": "{{winner}} выиграл {{credits}}!", "WON": "{{winner}} выиграл {{credits}}",
"DEFEAT": "Никто не угадал число! Им было **{{number}}**!", "DEFEAT": "Никто не угадал число! Им было **{{number}}**",
"GAME_STATS": "🎉 | {{winner}} угадал число! Им было **{{number}}**!\n\n**Статистика:**\n*-* __**Длительность**__: {{time}}\n*-* __**Участники ({{participantCount}})**__: {{participants}}", "GAME_STATS": "🎉 | {{winner}} угадал число! Им было **{{number}}**!\n\n**Статистика:**\n*-* __**Длительность**__: {{time}}\n*-* __**Участники ({{participantCount}})**__: {{participants}}",
"GAME_RUNNING": "Игра уже идёт!" "GAME_RUNNING": "Игра уже идёт"
} }

View file

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

Some files were not shown because too many files have changed in this diff Show more