mirror of
https://github.com/JonnyBro/JaBa.git
synced 2024-11-24 22:24:58 +05:00
help :poggersfish:
Мелкие правки
This commit is contained in:
parent
0f6bf647fb
commit
34193eea44
27 changed files with 304 additions and 193 deletions
|
@ -1,139 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
{ PermissionsBitField, EmbedBuilder } = require("discord.js");
|
||||
|
||||
class Help extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "help",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["h", "commands"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 1000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
if (args[0]) {
|
||||
const isCustom = (message.guild && data.guild.customCommands ? data.guild.customCommands.find((c) => c.name === args[0]) : false);
|
||||
|
||||
const cmd = this.client.commands.get(args[0]) || this.client.commands.get(this.client.aliases.get(args[0]));
|
||||
if (!cmd && isCustom) {
|
||||
return message.error("general/help:CUSTOM", {
|
||||
cmd: args[0]
|
||||
});
|
||||
} else if (!cmd) {
|
||||
return message.error("general/help:NOT_FOUND", {
|
||||
search: args[0]
|
||||
});
|
||||
}
|
||||
|
||||
const description = message.translate(`${cmd.help.category.toLowerCase()}/${cmd.help.name}:DESCRIPTION`);
|
||||
const usage = message.translate(`${cmd.help.category.toLowerCase()}/${cmd.help.name}:USAGE`, {
|
||||
prefix: message.guild ? data.guild.prefix : ""
|
||||
});
|
||||
const examples = message.translate(`${cmd.help.category.toLowerCase()}/${cmd.help.name}:EXAMPLES`, {
|
||||
prefix: message.guild ? data.guild.prefix : ""
|
||||
});
|
||||
|
||||
const groupEmbed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: message.translate("general/help:CMD_TITLE", {
|
||||
cmd: cmd.help.name
|
||||
})
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: message.translate("general/help:FIELD_DESCRIPTION"),
|
||||
value: description
|
||||
},
|
||||
{
|
||||
name: message.translate("general/help:FIELD_USAGE"),
|
||||
value: usage
|
||||
},
|
||||
{
|
||||
name: message.translate("general/help:FIELD_EXAMPLES"),
|
||||
value: examples
|
||||
},
|
||||
{
|
||||
name: message.translate("general/help:FIELD_ALIASES"),
|
||||
value: cmd.help.aliases.length > 0 ? cmd.help.aliases.map(a => "`" + a + "`").join("\n") : message.translate("general/help:NO_ALIAS")
|
||||
},
|
||||
{
|
||||
name: message.translate("general/help:FIELD_PERMISSIONS"),
|
||||
value: cmd.conf.memberPermissions.length > 0 ? cmd.conf.memberPermissions.map((p) => `\`${p}\``).join("\n") : message.translate("general/help:NO_REQUIRED_PERMISSION")
|
||||
}
|
||||
])
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
});
|
||||
|
||||
return message.reply({
|
||||
embeds: [groupEmbed]
|
||||
});
|
||||
}
|
||||
|
||||
const categories = [];
|
||||
const commands = this.client.commands;
|
||||
|
||||
commands.forEach((command) => {
|
||||
if (!categories.includes(command.help.category)) {
|
||||
if (command.help.category === "Owner" && message.author.id !== data.config.owner.id) return;
|
||||
categories.push(command.help.category);
|
||||
}
|
||||
});
|
||||
|
||||
const emojis = this.client.customEmojis;
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription(message.translate("general/help:INFO", {
|
||||
prefix: message.guild ? data.guild.prefix : ""
|
||||
}))
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
});
|
||||
categories.sort().forEach((cat) => {
|
||||
const tCommands = commands.filter((cmd) => cmd.help.category === cat);
|
||||
embed.addFields([
|
||||
{
|
||||
name: `${emojis.categories[cat.toLowerCase()]} ${cat} - (${tCommands.size})`,
|
||||
value: `${tCommands.map((cmd) => `\`${cmd.help.name}\``).join(", ")}`
|
||||
}
|
||||
]);
|
||||
});
|
||||
|
||||
embed.addFields([
|
||||
{
|
||||
name: "\u200B",
|
||||
value: message.translate("misc:STATS_FOOTER", {
|
||||
dashboardLink: this.client.config.dashboard.baseURL,
|
||||
docsLink: `${this.client.config.dashboard.baseURL}/docs/`,
|
||||
inviteLink: this.client.generateInvite({ scopes: ["bot", "applications.commands"], permissions: [ PermissionsBitField.Flags.Administrator] }),
|
||||
donateLink: "https://qiwi.com/n/JONNYBRO/",
|
||||
owner: data.config.owner.id
|
||||
})
|
||||
}
|
||||
]);
|
||||
embed.setAuthor({
|
||||
name: message.translate("general/help:TITLE", {
|
||||
name: this.client.user.username
|
||||
}),
|
||||
iconURL: this.client.user.displayAvatarURL({
|
||||
size: 512,
|
||||
format: "png"
|
||||
})
|
||||
});
|
||||
|
||||
return message.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Help;
|
|
@ -31,7 +31,7 @@ class Announcement extends Command {
|
|||
time: 240000
|
||||
});
|
||||
|
||||
collector.on("collect", async (tmsg) => {
|
||||
collector.on("collect", async tmsg => {
|
||||
if (tmsg.content.toLowerCase() === message.translate("common:NO").toLowerCase()) {
|
||||
tmsg.delete();
|
||||
msg.delete();
|
||||
|
|
|
@ -30,7 +30,7 @@ class Poll extends Command {
|
|||
time: 240000
|
||||
});
|
||||
|
||||
collector.on("collect", async (tmsg) => {
|
||||
collector.on("collect", async tmsg => {
|
||||
if (tmsg.content.toLowerCase() === message.translate("common:NO").toLowerCase()) {
|
||||
tmsg.delete();
|
||||
msg.delete();
|
||||
|
|
33
base/JaBa.js
33
base/JaBa.js
|
@ -118,12 +118,27 @@ class JaBa extends Client {
|
|||
});
|
||||
}
|
||||
|
||||
async init() {
|
||||
this.login(this.config.token);
|
||||
|
||||
mongoose.connect(this.config.mongoDB, {
|
||||
useNewUrlParser: true,
|
||||
useUnifiedTopology: true
|
||||
}).then(() => {
|
||||
this.logger.log("Connected to the Mongodb database.", "log");
|
||||
}).catch((err) => {
|
||||
this.logger.log(`Unable to connect to the Mongodb database. Error: ${err}`, "error");
|
||||
});
|
||||
|
||||
const autoUpdateDocs = require("../helpers/autoUpdateDocs");
|
||||
autoUpdateDocs.update(this);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {String} dir
|
||||
* @returns
|
||||
*/
|
||||
|
||||
async loadCommands(dir) {
|
||||
const filePath = path.join(__dirname, dir);
|
||||
var folders = await fs.readdir(filePath); folders = folders.map(file => path.join(filePath, file)).filter(async (path) => { path = await fs.lstat(path); path.isDirectory(); });
|
||||
|
@ -244,22 +259,6 @@ class JaBa extends Client {
|
|||
}
|
||||
}
|
||||
|
||||
async init() {
|
||||
this.login(this.config.token);
|
||||
|
||||
mongoose.connect(this.config.mongoDB, {
|
||||
useNewUrlParser: true,
|
||||
useUnifiedTopology: true
|
||||
}).then(() => {
|
||||
this.logger.log("Connected to the Mongodb database.", "log");
|
||||
}).catch((err) => {
|
||||
this.logger.log(`Unable to connect to the Mongodb database. Error: ${err}`, "error");
|
||||
});
|
||||
|
||||
const autoUpdateDocs = require("../helpers/autoUpdateDocs");
|
||||
autoUpdateDocs.update(this);
|
||||
}
|
||||
|
||||
get defaultLanguage() {
|
||||
return this.languages.find(language => language.default).name;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ class Eightball extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
|
|
|
@ -31,7 +31,7 @@ class LMGTFY extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
|
|
|
@ -35,7 +35,7 @@ class Lovecalc extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
|
|
|
@ -28,7 +28,7 @@ class Memes extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
|
@ -58,7 +58,7 @@ class Memes extends BaseCommand {
|
|||
idle: 60 * 1000
|
||||
});
|
||||
|
||||
collector.on("collect", async (msg) => {
|
||||
collector.on("collect", async msg => {
|
||||
const tag = msg?.values[0];
|
||||
const res = await fetch(`https://meme-api.herokuapp.com/gimme/${tag}`).then(response => response.json());
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ class Activity extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
|
@ -64,7 +64,7 @@ class Activity extends BaseCommand {
|
|||
idle: 60 * 1000
|
||||
});
|
||||
|
||||
collector.on("collect", async (msg) => {
|
||||
collector.on("collect", async msg => {
|
||||
const activity = msg?.values[0];
|
||||
|
||||
const invite = await client.discordTogether.createTogetherCode(voice.id, activity);
|
||||
|
@ -78,7 +78,8 @@ class Activity extends BaseCommand {
|
|||
.setTimestamp();
|
||||
|
||||
msg.update({
|
||||
embeds: [embed]
|
||||
embeds: [embed],
|
||||
components: []
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
166
commands/General/help.js
Normal file
166
commands/General/help.js
Normal file
|
@ -0,0 +1,166 @@
|
|||
const { SlashCommandBuilder, EmbedBuilder, ActionRowBuilder, SelectMenuBuilder, InteractionCollector, PermissionsBitField } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand");
|
||||
|
||||
class Help extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("help")
|
||||
.setDescription(client.translate("general/help:DESCRIPTION"))
|
||||
.addStringOption(option =>
|
||||
option.setName("command")
|
||||
.setDescription(client.translate("owner/reload:COMMAND"))),
|
||||
aliases: [],
|
||||
dirname: __dirname,
|
||||
guildOnly: true,
|
||||
ownerOnly: false
|
||||
});
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
*/
|
||||
async onLoad() {
|
||||
//...
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
const commands = [...new Map(client.commands.map(v => [v.constructor.name, v])).values()];
|
||||
const categories = [];
|
||||
const command = interaction.options.getString("command");
|
||||
|
||||
if (command) {
|
||||
const embed = generateCommandHelp(client, interaction, command);
|
||||
|
||||
return interaction.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
|
||||
commands.forEach(c => {
|
||||
if (!categories.includes(c.category)) {
|
||||
if (c.category === "Owner" && interaction.user.id !== client.config.owner.id) return;
|
||||
categories.push(c.category);
|
||||
}
|
||||
});
|
||||
|
||||
const categoriesRows = categories.sort().map(c => {
|
||||
return {
|
||||
label: `${c} (${commands.filter(cmd => cmd.category === c).length})`,
|
||||
value: c
|
||||
};
|
||||
});
|
||||
|
||||
const row = new ActionRowBuilder()
|
||||
.addComponents(
|
||||
new SelectMenuBuilder()
|
||||
.setCustomId("help_category_select")
|
||||
.setPlaceholder(client.translate("common:NOTHING_SELECTED"))
|
||||
.addOptions(categoriesRows)
|
||||
);
|
||||
|
||||
const msg = await interaction.reply({
|
||||
content: interaction.translate("common:AVAILABLE_CATEGORIES"),
|
||||
components: [row],
|
||||
fetchReply: true
|
||||
});
|
||||
|
||||
const collector = new InteractionCollector(client, {
|
||||
message: msg,
|
||||
idle: 60 * 1000
|
||||
});
|
||||
|
||||
collector.on("collect", async msg => {
|
||||
const arg = msg?.values[0];
|
||||
|
||||
if (categories.find(c => c === arg)) {
|
||||
const categoryCommands = commands.filter(cmd => cmd.category === arg).map(c => {
|
||||
return {
|
||||
label: c.command.name,
|
||||
value: c.command.name
|
||||
};
|
||||
});
|
||||
|
||||
const commandsRow = new ActionRowBuilder()
|
||||
.addComponents(
|
||||
new SelectMenuBuilder()
|
||||
.setCustomId("help_commands_select")
|
||||
.setPlaceholder(client.translate("common:NOTHING_SELECTED"))
|
||||
.addOptions(categoryCommands)
|
||||
);
|
||||
|
||||
await msg.update({
|
||||
content: interaction.translate("general/help:COMMANDS_IN", {
|
||||
category: arg
|
||||
}),
|
||||
components: [commandsRow],
|
||||
fetchReply: true
|
||||
});
|
||||
} else {
|
||||
const embed = generateCommandHelp(client, interaction, arg);
|
||||
return msg.update({
|
||||
content: null,
|
||||
components: [],
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getPermName(bitfield = 0) {
|
||||
for (const key in PermissionsBitField.Flags)
|
||||
if (PermissionsBitField.Flags[key] === BigInt(bitfield)) return key;
|
||||
return null;
|
||||
}
|
||||
|
||||
function generateCommandHelp(client, interaction, command) {
|
||||
const cmd = client.commands.get(command);
|
||||
if (!cmd) return interaction.error("general/help:NOT_FOUND", { search: command });
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: interaction.translate("general/help:CMD_TITLE", {
|
||||
cmd: cmd.command.name
|
||||
})
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: interaction.translate("general/help:FIELD_DESCRIPTION"),
|
||||
value: interaction.translate(`${cmd.category.toLowerCase()}/${cmd.command.name}:DESCRIPTION`)
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/help:FIELD_USAGE"),
|
||||
value: interaction.translate(`${cmd.category.toLowerCase()}/${cmd.command.name}:USAGE`)
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/help:FIELD_EXAMPLES"),
|
||||
value: interaction.translate(`${cmd.category.toLowerCase()}/${cmd.command.name}:EXAMPLES`)
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/help:FIELD_ALIASES"),
|
||||
value: cmd.aliases.length > 0 ? cmd.aliases.map(a => `${a}`).join("\n") : interaction.translate("general/help:NO_ALIAS")
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/help:FIELD_PERMISSIONS"),
|
||||
value: cmd.command.default_member_permissions > 0 ? interaction.translate(`misc:PERMISSIONS:${getPermName(cmd.command.default_member_permissions)}`) : interaction.translate("general/help:NO_REQUIRED_PERMISSION")
|
||||
}
|
||||
])
|
||||
.setColor(client.config.embed.color)
|
||||
.setFooter({
|
||||
text: client.config.embed.footer
|
||||
});
|
||||
|
||||
return embed;
|
||||
}
|
||||
|
||||
module.exports = Help;
|
|
@ -27,7 +27,7 @@ class Ping extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
|
|
|
@ -32,19 +32,17 @@ class Warn extends BaseCommand {
|
|||
*/
|
||||
async execute(client, interaction, data) {
|
||||
const member = interaction.targetMember;
|
||||
const memberPosition = member.roles.highest.position;
|
||||
const moderationPosition = interaction.member.roles.highest.position;
|
||||
if (member.user.bot) return;
|
||||
if (member.id === interaction.user.id) return interaction.error("moderation/warn:YOURSELF");
|
||||
if (interaction.guild.ownerId !== interaction.user.id && !(moderationPosition > memberPosition)) return interaction.error("moderation/ban:SUPERIOR");
|
||||
|
||||
const memberData = await client.findOrCreateMember({
|
||||
id: member.id,
|
||||
guildID: interaction.guildId
|
||||
});
|
||||
|
||||
if (member.id === interaction.user.id) return interaction.error("moderation/warn:YOURSELF");
|
||||
|
||||
const memberPosition = member.roles.highest.position;
|
||||
const moderationPosition = interaction.member.roles.highest.position;
|
||||
if (interaction.guild.ownerId !== interaction.user.id && !(moderationPosition > memberPosition)) return interaction.error("moderation/ban:SUPERIOR");
|
||||
|
||||
const modal = new ModalBuilder()
|
||||
.setCustomId("warn_modal")
|
||||
.setTitle(interaction.translate("moderation/warn:MODAL_TITLE"));
|
||||
|
|
|
@ -28,7 +28,7 @@ class NSFW extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
|
@ -61,7 +61,7 @@ class NSFW extends BaseCommand {
|
|||
idle: 60 * 1000
|
||||
});
|
||||
|
||||
collector.on("collect", async (msg) => {
|
||||
collector.on("collect", async msg => {
|
||||
const tag = msg?.values[0];
|
||||
const res = await fetch(`https://meme-api.herokuapp.com/gimme/${tag}`).then(response => response.json());
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ class Debug extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction, data) {
|
||||
|
|
|
@ -32,7 +32,7 @@ class Eval extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction, data) {
|
||||
|
|
|
@ -33,13 +33,13 @@ class Reload extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
const command = interaction.options.getString("command");
|
||||
const cmd = client.commands.get(command);
|
||||
if (!cmd) return interaction.error("owner/reload:NOT_FOUND", { search: command }, { ephemeral: true });
|
||||
if (!cmd) return interaction.error("general/help:NOT_FOUND", { search: command }, { ephemeral: true });
|
||||
|
||||
await client.unloadCommand(`../commands/${cmd.category}`, cmd.command.name);
|
||||
await client.loadCommand(`../commands/${cmd.category}`, cmd.command.name);
|
||||
|
|
|
@ -34,7 +34,7 @@ class Say extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
|
|
|
@ -27,7 +27,7 @@ class Servers extends BaseCommand {
|
|||
/**
|
||||
*
|
||||
* @param {import("../../base/JaBa")} client
|
||||
* @param {import("discord.js").CommandInteraction} interaction
|
||||
* @param {import("discord.js").ChatInputCommandInteraction} interaction
|
||||
* @param {Array} data
|
||||
*/
|
||||
async execute(client, interaction) {
|
||||
|
@ -72,7 +72,7 @@ class Servers extends BaseCommand {
|
|||
time: 60 * 1000
|
||||
});
|
||||
|
||||
collector.on("collect", async (reaction) => {
|
||||
collector.on("collect", async reaction => {
|
||||
if (reaction._emoji.name === "⬅") {
|
||||
i0 = i0 - 10;
|
||||
i1 = i1 - 10;
|
||||
|
|
|
@ -11,7 +11,6 @@ async function fetchUser(userData, client, query) {
|
|||
if (userData.guilds) {
|
||||
userData.guilds.forEach((guild) => {
|
||||
if (!client.guilds.cache.get(guild.id)) return;
|
||||
// eslint-disable-next-line no-undef
|
||||
const perms = new PermissionsBitField(BigInt(guild.permissions));
|
||||
if (perms.has(PermissionsBitField.Flags.ManageGuild)) guild.admin = true;
|
||||
|
||||
|
|
|
@ -18,11 +18,11 @@ module.exports.update = function (client) {
|
|||
// else return 1;
|
||||
// })
|
||||
|
||||
categories.sort().forEach((cat) => {
|
||||
categories.sort().forEach(cat => {
|
||||
const categoriesArray = [
|
||||
["Название", "Описание", "Использование", "Разрешено использование"]
|
||||
];
|
||||
const cmds = [...new Map(commands.filter((cmd) => cmd.category === cat).map(v => [v.constructor.name, v])).values()];
|
||||
const cmds = [...new Map(commands.filter(cmd => cmd.category === cat).map(v => [v.constructor.name, v])).values()];
|
||||
|
||||
text += `### ${cat} (${cmds.length} ${client.getNoun(cmds.length, "команда", "команды", "команд")})\n\n`;
|
||||
cmds.sort(function (a, b) {
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
"DESCRIPTION": "Показать список команд или помощь по данной команде",
|
||||
"USAGE": "help (команда)",
|
||||
"EXAMPLES": "help\nhelp ping",
|
||||
"CUSTOM": "У добавленных команд нет описания.",
|
||||
"NOT_FOUND": "Команды `{{search}}` не существует",
|
||||
"NOT_FOUND": "Команды `{{search}}` не существует.",
|
||||
"COMMANDS_IN": "Доступные команды в категории `{{category}}`:",
|
||||
"FIELD_USAGE": "Использование",
|
||||
"FIELD_DESCRIPTION": "Описание",
|
||||
"FIELD_ALIASES": "Сокращения",
|
||||
|
@ -11,7 +11,6 @@
|
|||
"NO_ALIAS": "Нет сокращений",
|
||||
"CMD_TITLE": "Помощь по {{cmd}}",
|
||||
"INFO": "● Чтобы получить помощь по определённой команде используйте `help <команда>`!",
|
||||
"CUSTOM_COMMANDS": "Добавленные команды",
|
||||
"FIELD_PERMISSIONS": "Необходимые права",
|
||||
"NO_REQUIRED_PERMISSION": "Никаких особых прав не нужно для использования данной команды.",
|
||||
"TITLE": "{{name}} | Команды"
|
||||
|
|
|
@ -25,6 +25,49 @@
|
|||
"COOLDOWNED": "Подождите **{{seconds}}**, чтобы снова использовать эту команду!",
|
||||
"CANNOT_DM": "Я не могу отправить вам личное сообщение... Проверьте свои настройки конфиденциальности!",
|
||||
|
||||
"PERMISSIONS": {
|
||||
"CreateInstantInvite": "Создание приглашения",
|
||||
"KickMembers": "Выгонять участников",
|
||||
"BanMembers": "Банить участников",
|
||||
"Administrator": "Администратор",
|
||||
"ManageChannels": "Управлять каналами",
|
||||
"ManageGuild": "Управлять сервером",
|
||||
"AddReactions": "Добавлять реакции",
|
||||
"ViewAuditLog": "Просматривать журнал аудита",
|
||||
"PrioritySpeaker": "Приоритетный режим",
|
||||
"Stream": "Видео",
|
||||
"ViewChannel": "Просматривать каналы",
|
||||
"SendMessages": "Отправлять сообщения",
|
||||
"SendTTSMessages": "Отправка сообщений text-to-speech",
|
||||
"ManageMessages": "Управлять сообщениями",
|
||||
"EmbedLinks": "Встраивать ссылки",
|
||||
"AttachFiles": "Прикреплять файлы",
|
||||
"ReadMessageHistory": "Читать историю сообщений",
|
||||
"MentionEveryone": "Упоминание *@*everyone, *@*here и всех ролей",
|
||||
"UseExternalEmojis": "Использовать внешние эмодзи",
|
||||
"ViewGuildInsights": "Просматривать статистику сервера",
|
||||
"Connect": "Подключаться",
|
||||
"Speak": "Говорить",
|
||||
"MuteMembers": "Отключать участникам микрофон",
|
||||
"DeafenMembers": "Отключать участникам звук",
|
||||
"MoveMembers": "Перемещать участников",
|
||||
"UseVAD": "Использовать режим активации по голосу",
|
||||
"ChangeNickname": "Изменить никнейм",
|
||||
"ManageNicknames": "Управлять никнеймами",
|
||||
"ManageRoles": "Управлять ролями",
|
||||
"ManageWebhooks": "Управлять вебхуками (webhooks)",
|
||||
"ManageEmojisAndStickers": "Управлять эмодзи и стикерами",
|
||||
"UseApplicationCommands": "Использовать команды приложения",
|
||||
"ManageEvents": "Управление событиями",
|
||||
"ManageThreads": "Управление ветками",
|
||||
"CreatePublicThreads": "Создать публичные ветки",
|
||||
"CreatePrivateThreads": "Создание приватных веток",
|
||||
"UseExternalStickers": "Использовать внешние стикеры",
|
||||
"SendMessagesInThreads": "Отправлять сообщения в ветках",
|
||||
"UseEmbeddedActivities": "Начать активность",
|
||||
"ModerateMembers": "Отправить участников подумать о своём поведении"
|
||||
},
|
||||
|
||||
"NOUNS": {
|
||||
"CREDIT": {
|
||||
"1": "кредит",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"DESCRIPTION": "Выдать предупреждение пользователю",
|
||||
"USAGE": "warn [@пользователь] (причина)",
|
||||
"EXAMPLES": "warn @Jonny_Bro#4226 stupid",
|
||||
"USAGE": "ПКМ на пользователя - Приложения - warn",
|
||||
"EXAMPLES": "",
|
||||
"YOURSELF": "Вы не можете подать жалобу на себя!",
|
||||
"MODAL_TITLE": "Выдать предупреждение {{nickname}}",
|
||||
"REASON": "Причина предупреждения",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"DESCRIPTION": "Показать список нарушений пользователя!",
|
||||
"USAGE": "sanctions [@пользователь]",
|
||||
"EXAMPLES": "sanctions @Jonny_Bro#4226",
|
||||
"USAGE": "ПКМ на пользователя - Приложения - warns",
|
||||
"EXAMPLES": "",
|
||||
"SANCTIONS_OF": "Нарушения {{member}}",
|
||||
"NO_SANCTION": "У **{{member}}** нет нарушений."
|
||||
}
|
|
@ -2,6 +2,5 @@
|
|||
"DESCRIPTION": "Перезагрузить команду!",
|
||||
"COMMAND": "Команда",
|
||||
"EXAMPLES": "reload help",
|
||||
"NOT_FOUND": "Команды `{{search}}` не существует!",
|
||||
"SUCCESS": "Команда `{{command}}` успешно перезагружена!"
|
||||
}
|
|
@ -27,6 +27,51 @@
|
|||
"COOLDOWNED": "Зачекайте **{{seconds}}**, щоб знову використати цю команду!",
|
||||
"CANNOT_DM": "Я не можу надіслати вам особисте повідомлення... Перевірте налаштування конфіденційності!",
|
||||
|
||||
"PERMISSIONS": {
|
||||
"CREATE_INSTANT_INVITE": "Створення запрошення",
|
||||
"KICK_MEMBERS": "Виганяти учасників",
|
||||
"BAN_MEMBERS": "Банити учасників",
|
||||
"ADMINISTRATOR": "Адміністратор",
|
||||
"MANAGE_CHANNELS": "Керувати каналами",
|
||||
"MANAGE_GUILD": "Керувати сервером",
|
||||
"ADD_REACTIONS": "Додавати реакції",
|
||||
"VIEW_AUDIT_LOG": "Перегляд журналу аудиту",
|
||||
"PRIORITY_SPEAKER": "Пріоритетний режим",
|
||||
"STREAM": "Відео",
|
||||
"VIEW_CHANNEL": "Перегляд каналів",
|
||||
"SEND_MESSAGES": "Надсилати повідомлення",
|
||||
"SEND_TTS_MESSAGES": "Надсилання повідомлень text-to-speech",
|
||||
"MANAGE_MESSAGES": "Керувати повідомленнями",
|
||||
"EMBED_LINKS": "Вбудовувати посилання",
|
||||
"ATTACH_FILES": "Прикріплювати файли",
|
||||
"READ_MESSAGE_HISTORY": "Читати історію повідомлень",
|
||||
"MENTION_EVERYONE": "Згадка *@*everyone, *@*here та всіх ролей",
|
||||
"USE_EXTERNAL_EMOJIS": "Використовувати зовнішні емодзі",
|
||||
"VIEW_GUILD_INSIGHTS": "Перегляд статистики сервера",
|
||||
"CONNECT": "Підключатися",
|
||||
"SPEAK": "Говорити",
|
||||
"MUTE_MEMBERS": "Вимкнути учасникам мікрофон",
|
||||
"DEAFEN_MEMBERS": "Вимкнути учасникам звук",
|
||||
"MOVE_MEMBERS": "Переміщувати учасників",
|
||||
"USE_VAD": "Використовувати режим активації за голосом",
|
||||
"CHANGE_NICKNAME": "Змінити нікнейм",
|
||||
"MANAGE_NICKNAMES": "Керувати нікнеймами",
|
||||
"MANAGE_ROLES": "Керувати ролями",
|
||||
"MANAGE_WEBHOOKS": "Керувати вебхуками (webhooks)",
|
||||
"MANAGE_EMOJIS_AND_STICKERS": "Керувати емодзі та стікерами",
|
||||
"USE_APPLICATION_COMMANDS": "Використовувати команди програми",
|
||||
"MANAGE_EVENTS": "Управління подіями",
|
||||
"MANAGE_THREADS": "Керування гілками",
|
||||
"USE_PUBLIC_THREADS": "Використовувати публічні гілки",
|
||||
"CREATE_PUBLIC_THREADS": "Створити публічні гілки",
|
||||
"USE_PRIVATE_THREADS": "Використання приватних гілок",
|
||||
"CREATE_PRIVATE_THREADS": "Створення приватних гілок",
|
||||
"USE_EXTERNAL_STICKERS": "Використовувати зовнішні стікери",
|
||||
"SEND_MESSAGES_IN_THREADS": "Надсилати повідомлення у гілках",
|
||||
"START_EMBEDDED_ACTIVITIES": "Почати активність",
|
||||
"MODERATE_MEMBERS": "Надіслати учасників подумати про свою поведінку"
|
||||
},
|
||||
|
||||
"NOUNS": {
|
||||
"CREDIT": {
|
||||
"1": "кредит",
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
"env": {
|
||||
"commonjs": true,
|
||||
"es6": true,
|
||||
"es2020": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
|
|
Loading…
Reference in a new issue