mirror of
https://github.com/JonnyBro/JaBa.git
synced 2024-11-24 06:04:57 +05:00
some tickets stuff
This commit is contained in:
parent
c3dca64be4
commit
aaa0d01c54
83 changed files with 931 additions and 113 deletions
|
@ -42,6 +42,10 @@ module.exports = mongoose.model("Guild", new Schema({
|
||||||
memberUpdate: null,
|
memberUpdate: null,
|
||||||
messageUpdate: null,
|
messageUpdate: null,
|
||||||
},
|
},
|
||||||
|
tickets: {
|
||||||
|
ticketLogs: null,
|
||||||
|
transcriptionLogs: null,
|
||||||
|
},
|
||||||
suggestions: null,
|
suggestions: null,
|
||||||
reports: null,
|
reports: null,
|
||||||
birthdays: null,
|
birthdays: null,
|
||||||
|
|
82
commands/!DISABLED/ban.js
Normal file
82
commands/!DISABLED/ban.js
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
const { SlashCommandBuilder, PermissionsBitField } = require("discord.js");
|
||||||
|
const BaseCommand = require("../../base/BaseCommand");
|
||||||
|
|
||||||
|
class Ban extends BaseCommand {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {import("../../base/JaBa")} client
|
||||||
|
*/
|
||||||
|
constructor(client) {
|
||||||
|
super({
|
||||||
|
command: new SlashCommandBuilder()
|
||||||
|
.setName("ban")
|
||||||
|
.setDescription(client.translate("moderation/ban:DESCRIPTION"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("moderation/ban:DESCRIPTION", null, "uk-UA"),
|
||||||
|
ru: client.translate("moderation/ban:DESCRIPTION", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setDMPermission(false)
|
||||||
|
.setDefaultMemberPermissions(PermissionsBitField.Flags.BanMembers)
|
||||||
|
.addUserOption(option =>
|
||||||
|
option
|
||||||
|
.setName("user")
|
||||||
|
.setDescription(client.translate("common:USER"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("common:USER", null, "uk-UA"),
|
||||||
|
ru: client.translate("common:USER", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setRequired(true),
|
||||||
|
)
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setName("reason")
|
||||||
|
.setDescription(client.translate("common:REASON"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("common:REASON", null, "uk-UA"),
|
||||||
|
ru: client.translate("common:REASON", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setRequired(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) {
|
||||||
|
await interaction.deferReply();
|
||||||
|
|
||||||
|
const member = interaction.options.getMember("user"),
|
||||||
|
reason = interaction.options.getString("reason"),
|
||||||
|
memberPosition = member.roles.highest.position,
|
||||||
|
moderationPosition = interaction.member.roles.highest.position;
|
||||||
|
|
||||||
|
if (member.user.bot) return interaction.error("misc:BOT_USER", null, { ephemeral: true, edit: true });
|
||||||
|
if (member.id === interaction.member.id) return interaction.error("moderation/ban:YOURSELF", null, { ephemeral: true, edit: true });
|
||||||
|
if (interaction.guild.ownerId !== interaction.member.id && !(moderationPosition > memberPosition) && member.bannable) return interaction.error("moderation/ban:SUPERIOR", null, { ephemeral: true, edit: true });
|
||||||
|
|
||||||
|
await member.ban({
|
||||||
|
reason,
|
||||||
|
});
|
||||||
|
|
||||||
|
interaction.success("moderation/ban:SUCCESS", {
|
||||||
|
user: member.user.toString(),
|
||||||
|
reason,
|
||||||
|
}, { edit: true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Ban;
|
82
commands/!DISABLED/kick.js
Normal file
82
commands/!DISABLED/kick.js
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
const { SlashCommandBuilder, PermissionsBitField } = require("discord.js");
|
||||||
|
const BaseCommand = require("../../base/BaseCommand");
|
||||||
|
|
||||||
|
class Kick extends BaseCommand {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {import("../../base/JaBa")} client
|
||||||
|
*/
|
||||||
|
constructor(client) {
|
||||||
|
super({
|
||||||
|
command: new SlashCommandBuilder()
|
||||||
|
.setName("kick")
|
||||||
|
.setDescription(client.translate("moderation/kick:DESCRIPTION"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("moderation/kick:DESCRIPTION", null, "uk-UA"),
|
||||||
|
ru: client.translate("moderation/kick:DESCRIPTION", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setDMPermission(false)
|
||||||
|
.setDefaultMemberPermissions(PermissionsBitField.Flags.KickMembers)
|
||||||
|
.addUserOption(option =>
|
||||||
|
option
|
||||||
|
.setName("user")
|
||||||
|
.setDescription(client.translate("common:USER"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("common:USER", null, "uk-UA"),
|
||||||
|
ru: client.translate("common:USER", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setRequired(true),
|
||||||
|
)
|
||||||
|
.addStringOption(option =>
|
||||||
|
option
|
||||||
|
.setName("reason")
|
||||||
|
.setDescription(client.translate("common:REASON"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("common:REASON", null, "uk-UA"),
|
||||||
|
ru: client.translate("common:REASON", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setRequired(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) {
|
||||||
|
await interaction.deferReply();
|
||||||
|
|
||||||
|
const member = interaction.options.getMember("user"),
|
||||||
|
reason = interaction.options.getString("reason"),
|
||||||
|
memberPosition = member.roles.highest.position,
|
||||||
|
moderationPosition = interaction.member.roles.highest.position;
|
||||||
|
|
||||||
|
if (member.user.bot) return interaction.error("misc:BOT_USER", null, { ephemeral: true, edit: true });
|
||||||
|
if (member.id === interaction.member.id) return interaction.error("moderation/kick:YOURSELF", null, { ephemeral: true, edit: true });
|
||||||
|
if (interaction.guild.ownerId !== interaction.member.id && !(moderationPosition > memberPosition) && member.kickable) return interaction.error("moderation/kick:SUPERIOR", null, { ephemeral: true, edit: true });
|
||||||
|
|
||||||
|
await member.kick({
|
||||||
|
reason,
|
||||||
|
});
|
||||||
|
|
||||||
|
interaction.success("moderation/kick:SUCCESS", {
|
||||||
|
user: member.user.toString(),
|
||||||
|
reason,
|
||||||
|
}, { edit: true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Kick;
|
|
@ -60,6 +60,7 @@ class Checkjar extends BaseCommand {
|
||||||
.setFooter({
|
.setFooter({
|
||||||
text: client.config.embed.footer,
|
text: client.config.embed.footer,
|
||||||
})
|
})
|
||||||
|
.setTimestamp()
|
||||||
.setDescription(`Текущий баланс: **${jar.balance / Math.pow(10, 2)}** грн\nТребуется на след. месяц: **379,18** грн (по курсу евро на 02.07.2023).\nЗдесь указаны последние 10 транзакций.`);
|
.setDescription(`Текущий баланс: **${jar.balance / Math.pow(10, 2)}** грн\nТребуется на след. месяц: **379,18** грн (по курсу евро на 02.07.2023).\nЗдесь указаны последние 10 транзакций.`);
|
||||||
|
|
||||||
jarTransactions.length = 10;
|
jarTransactions.length = 10;
|
||||||
|
|
67
commands/Moderation/untimeout.js
Normal file
67
commands/Moderation/untimeout.js
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
const { SlashCommandBuilder, PermissionsBitField } = require("discord.js");
|
||||||
|
const BaseCommand = require("../../base/BaseCommand");
|
||||||
|
|
||||||
|
class Ban extends BaseCommand {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {import("../../base/JaBa")} client
|
||||||
|
*/
|
||||||
|
constructor(client) {
|
||||||
|
super({
|
||||||
|
command: new SlashCommandBuilder()
|
||||||
|
.setName("untimeout")
|
||||||
|
.setDescription(client.translate("moderation/untimeout:DESCRIPTION"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("moderation/untimeout:DESCRIPTION", null, "uk-UA"),
|
||||||
|
ru: client.translate("moderation/untimeout:DESCRIPTION", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setDMPermission(false)
|
||||||
|
.setDefaultMemberPermissions(PermissionsBitField.Flags.ModerateMembers)
|
||||||
|
.addUserOption(option =>
|
||||||
|
option
|
||||||
|
.setName("user")
|
||||||
|
.setDescription(client.translate("common:USER"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("common:USER", null, "uk-UA"),
|
||||||
|
ru: client.translate("common:USER", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setRequired(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) {
|
||||||
|
await interaction.deferReply();
|
||||||
|
|
||||||
|
const member = interaction.options.getMember("user"),
|
||||||
|
timedout = member.isCommunicationDisabled();
|
||||||
|
|
||||||
|
if (member.user.bot) return interaction.error("misc:BOT_USER", null, { ephemeral: true, edit: true });
|
||||||
|
if (member.id === interaction.member.id) return interaction.error("moderation/untimeout:YOURSELF", null, { ephemeral: true, edit: true });
|
||||||
|
if (!timedout) return interaction.error("moderation/untimeout:NOT_TIMEDOUT", null, { ephemeral: true, edit: true });
|
||||||
|
|
||||||
|
await member.timeout(null);
|
||||||
|
|
||||||
|
interaction.success("moderation/untimeout:SUCCESS", {
|
||||||
|
user: member.user.toString(),
|
||||||
|
}, { edit: true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Ban;
|
|
@ -34,7 +34,7 @@ class Warn extends BaseCommand {
|
||||||
|
|
||||||
if (member.user.bot) return interaction.error("misc:BOT_USER", null, { ephemeral: true });
|
if (member.user.bot) return interaction.error("misc:BOT_USER", null, { ephemeral: true });
|
||||||
if (member.id === interaction.member.id) return interaction.error("moderation/warn:YOURSELF", null, { ephemeral: true });
|
if (member.id === interaction.member.id) return interaction.error("moderation/warn:YOURSELF", null, { ephemeral: true });
|
||||||
if (interaction.guild.ownerId !== interaction.member.id && !(moderationPosition > memberPosition)) return interaction.error("moderation/ban:SUPERIOR", null, { ephemeral: true });
|
if (interaction.guild.ownerId !== interaction.member.id && !(moderationPosition > memberPosition)) return interaction.error("moderation/warn:SUPERIOR", null, { ephemeral: true });
|
||||||
|
|
||||||
const memberData = await client.findOrCreateMember({
|
const memberData = await client.findOrCreateMember({
|
||||||
id: member.id,
|
id: member.id,
|
||||||
|
|
65
commands/Tickets/adduser.js
Normal file
65
commands/Tickets/adduser.js
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
const { SlashCommandBuilder, PermissionsBitField } = require("discord.js");
|
||||||
|
const BaseCommand = require("../../base/BaseCommand");
|
||||||
|
|
||||||
|
class Adduser extends BaseCommand {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {import("../../base/JaBa")} client
|
||||||
|
*/
|
||||||
|
constructor(client) {
|
||||||
|
super({
|
||||||
|
command: new SlashCommandBuilder()
|
||||||
|
.setName("adduser")
|
||||||
|
.setDescription(client.translate("tickets/adduser:DESCRIPTION"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("tickets/adduser:DESCRIPTION", null, "uk-UA"),
|
||||||
|
ru: client.translate("tickets/adduser:DESCRIPTION", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setDMPermission(false)
|
||||||
|
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages)
|
||||||
|
.addUserOption(option =>
|
||||||
|
option
|
||||||
|
.setName("user")
|
||||||
|
.setDescription(client.translate("common:USER"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("common:USER", null, "uk-UA"),
|
||||||
|
ru: client.translate("common:USER", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setRequired(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) {
|
||||||
|
await interaction.deferReply();
|
||||||
|
|
||||||
|
const member = interaction.options.getMember("user");
|
||||||
|
|
||||||
|
if (member.user.bot) return interaction.error("misc:BOT_USER", null, { ephemeral: true, edit: true });
|
||||||
|
if (!interaction.channel.name.includes("support") && !interaction.channel.name.includes("application")) return interaction.error("tickets/adduser:NOT_TICKET", null, { ephemeral: true, edit: true });
|
||||||
|
|
||||||
|
await interaction.channel.permissionOverwrites.edit(member, { ViewChannel: true, SendMessages: true });
|
||||||
|
|
||||||
|
interaction.success("tickets/adduser:SUCCESS", {
|
||||||
|
user: member.user.toString(),
|
||||||
|
}, { edit: true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Adduser;
|
122
commands/Tickets/closeticket.js
Normal file
122
commands/Tickets/closeticket.js
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
const { SlashCommandBuilder, PermissionsBitField, EmbedBuilder, ButtonBuilder, ButtonStyle, ActionRowBuilder } = require("discord.js");
|
||||||
|
const BaseCommand = require("../../base/BaseCommand");
|
||||||
|
|
||||||
|
class CloseTicket extends BaseCommand {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {import("../../base/JaBa")} client
|
||||||
|
*/
|
||||||
|
constructor(client) {
|
||||||
|
super({
|
||||||
|
command: new SlashCommandBuilder()
|
||||||
|
.setName("closeticket")
|
||||||
|
.setDescription(client.translate("tickets/closeticket:DESCRIPTION"))
|
||||||
|
.setDescriptionLocalizations({
|
||||||
|
uk: client.translate("tickets/closeticket:DESCRIPTION", null, "uk-UA"),
|
||||||
|
ru: client.translate("tickets/closeticket:DESCRIPTION", null, "ru-RU"),
|
||||||
|
})
|
||||||
|
.setDMPermission(false)
|
||||||
|
.setDefaultMemberPermissions(PermissionsBitField.Flags.ManageMessages),
|
||||||
|
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, data) {
|
||||||
|
await interaction.deferReply();
|
||||||
|
|
||||||
|
if (!interaction.channel.name.includes("support") && !interaction.channel.name.includes("application")) return interaction.error("tickets/adduser:NOT_TICKET", null, { ephemeral: true, edit: true });
|
||||||
|
|
||||||
|
const embed = new EmbedBuilder()
|
||||||
|
.setTitle(interaction.translate("tickets/closeticket:CLOSING_TITLE"))
|
||||||
|
.setDescription(interaction.translate("tickets/closeticket:CLOSING_DESC"))
|
||||||
|
.addFields(
|
||||||
|
{
|
||||||
|
name: interaction.translate("common:TICKET"),
|
||||||
|
value: interaction.channel.name,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: interaction.translate("tickets/closeticket:CLOSING_BY"),
|
||||||
|
value: interaction.user.getUsetname(),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.setColor(client.config.embed.color)
|
||||||
|
.setFooter(client.config.embed.footer)
|
||||||
|
.setTimestamp();
|
||||||
|
|
||||||
|
const button = new ButtonBuilder().setCustomId("cancel").setLabel(interaction.translate("common:CANCEL")).setStyle(ButtonStyle.Danger);
|
||||||
|
const row = new ActionRowBuilder().addComponents(button);
|
||||||
|
|
||||||
|
await interaction.reply({
|
||||||
|
embeds: [embed],
|
||||||
|
components: [row],
|
||||||
|
});
|
||||||
|
|
||||||
|
const filter = i => i.customId === "cancel";
|
||||||
|
const collector = interaction.channel.createMessageComponentCollector({ filter, time: 5000 });
|
||||||
|
|
||||||
|
collector.on("collect", async i => {
|
||||||
|
await i.update({ content: interaction.translate("tickets/closeticket:CLOSING_CANCELED"), components: [] });
|
||||||
|
collector.stop("canceled");
|
||||||
|
});
|
||||||
|
|
||||||
|
collector.on("end", async (_, reason) => {
|
||||||
|
if (reason === "canceled") {
|
||||||
|
const transcriptionLogs = data.guildData.plugins.tickets.transcriptionLogs;
|
||||||
|
if (transcriptionLogs) interaction.guild.channels.cache.get(transcriptionLogs).send({ content: interaction.translate("tickets/closeticket:TRANSCRIPT", { channel: `<#${transcriptionLogs}>` }), files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }] });
|
||||||
|
const reversedMessages = await interaction.channel.messages.fetch();
|
||||||
|
|
||||||
|
const messages = Array.from(reversedMessages.values()).reverse();
|
||||||
|
|
||||||
|
let transcript = "";
|
||||||
|
messages.forEach(message => {
|
||||||
|
transcript += `${message.author.username}: ${message.content}\n`;
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
await interaction.user.send({ content: `Here is the transcript for your ticket: ${interaction.channel.name}`, files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }] });
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
await interaction.reply("An error occurred while trying to send the transcript to the user.");
|
||||||
|
}
|
||||||
|
|
||||||
|
await interaction.channel.delete();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const ticketLogs = data.guildData.plugins.tickets.ticketLogs;
|
||||||
|
const logEmbed = new EmbedBuilder()
|
||||||
|
.setTitle(interaction.translate("tickets/closeticket:CLOSED_TITLE"))
|
||||||
|
.addFields(
|
||||||
|
{
|
||||||
|
name: interaction.translate("common:TICKET"),
|
||||||
|
value: interaction.channel.name,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: interaction.translate("tickets/closeticket:CLOSING_BY"),
|
||||||
|
value: interaction.user.getUsetname(),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.setColor(client.config.embed.color)
|
||||||
|
.setFooter(client.config.embed.footer)
|
||||||
|
.setTimestamp();
|
||||||
|
|
||||||
|
if (ticketLogs) interaction.guild.channels.cache.get(ticketLogs).send({ embeds: [logEmbed] });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = CloseTicket;
|
10
commands/Tickets/empty.js
Normal file
10
commands/Tickets/empty.js
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
const { SlashCommandBuilder } = require('discord.js');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
data: new SlashCommandBuilder()
|
||||||
|
.setName('test')
|
||||||
|
.setDescription('Replies with test'),
|
||||||
|
async execute(interaction) {
|
||||||
|
await interaction.reply('test');
|
||||||
|
},
|
||||||
|
};
|
32
commands/Tickets/openTicketChannel.js
Normal file
32
commands/Tickets/openTicketChannel.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
const { SlashCommandBuilder, EmbedBuilder, ButtonBuilder, ButtonStyle, ActionRowBuilder, PermissionFlagsBits } = require('discord.js');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
data: new SlashCommandBuilder()
|
||||||
|
.setName('openticketchannel')
|
||||||
|
.setDescription('Creates an embed with buttons to open a ticket')
|
||||||
|
.setDefaultMemberPermissions(PermissionFlagsBits.ManageGuild),
|
||||||
|
async execute(interaction) {
|
||||||
|
// create embed for ticket
|
||||||
|
const embed = new EmbedBuilder()
|
||||||
|
.setTitle('Tickets')
|
||||||
|
.setDescription('Open a ticket by choosing a category below');
|
||||||
|
|
||||||
|
// add button for support and application
|
||||||
|
const supportButton = new ButtonBuilder()
|
||||||
|
.setCustomId('support')
|
||||||
|
.setLabel('Support')
|
||||||
|
.setStyle(ButtonStyle.Primary);
|
||||||
|
|
||||||
|
const applicationButton = new ButtonBuilder()
|
||||||
|
.setCustomId('application')
|
||||||
|
.setLabel('Application')
|
||||||
|
.setStyle(ButtonStyle.Primary);
|
||||||
|
|
||||||
|
const row = new ActionRowBuilder()
|
||||||
|
.addComponents(supportButton, applicationButton);
|
||||||
|
|
||||||
|
// send message with buttons
|
||||||
|
await interaction.channel.send({ embeds: [embed], components: [row] });
|
||||||
|
await interaction.reply('Done');
|
||||||
|
},
|
||||||
|
};
|
35
commands/Tickets/removeuser.js
Normal file
35
commands/Tickets/removeuser.js
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
data: new SlashCommandBuilder()
|
||||||
|
.setName('removeuser')
|
||||||
|
.setDescription('Remove a user from a ticket')
|
||||||
|
.addMentionableOption(option =>
|
||||||
|
option.setName('user')
|
||||||
|
.setDescription('The user to remove')
|
||||||
|
.setRequired(true))
|
||||||
|
.setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages),
|
||||||
|
async execute(interaction) {
|
||||||
|
try {
|
||||||
|
const user = interaction.options.getMentionable('user');
|
||||||
|
const currentChannel = interaction.channel;
|
||||||
|
|
||||||
|
if (currentChannel) {
|
||||||
|
if (!interaction.channel.name.includes('support') && !interaction.channel.name.includes('application')) {
|
||||||
|
interaction.reply('This command can only be used in a ticket channel.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const member = await interaction.guild.members.fetch(user.id);
|
||||||
|
await interaction.channel.permissionOverwrites.edit(member, { ViewChannel: false });
|
||||||
|
interaction.reply(`Removed ${user} to the ticket.`);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
interaction.reply('This channel is not a ticket.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
interaction.reply('Error adding user to ticket.');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
27
commands/Tickets/rename.js
Normal file
27
commands/Tickets/rename.js
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
const { SlashCommandBuilder, PermissionFlagsBits } = require('discord.js');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
data: new SlashCommandBuilder()
|
||||||
|
.setName('rename')
|
||||||
|
.setDescription('Renames the ticket channel. Usage: /rename <new name>')
|
||||||
|
.addStringOption(option =>
|
||||||
|
option.setName('newname')
|
||||||
|
.setDescription('The new name for the ticket channel')
|
||||||
|
.setRequired(true))
|
||||||
|
.setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages),
|
||||||
|
async execute(interaction) {
|
||||||
|
try {
|
||||||
|
const newName = interaction.options.getString('newname');
|
||||||
|
if (!interaction.channel.name.includes('support') && !interaction.channel.name.includes('application')) {
|
||||||
|
interaction.reply('This command can only be used in a ticket channel.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await interaction.channel.setName(newName + '-' + interaction.channel.name.split('-')[1]);
|
||||||
|
interaction.reply(`Renamed the ticket channel to ${newName}`);
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
interaction.reply('An error occurred while trying to rename the ticket channel.');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
241
interactions.js
Normal file
241
interactions.js
Normal file
|
@ -0,0 +1,241 @@
|
||||||
|
if (interaction.isModalSubmit()) {
|
||||||
|
const age = interaction.fields.getTextInputValue('age');
|
||||||
|
const location = interaction.fields.getTextInputValue('location');
|
||||||
|
const experience = interaction.fields.getTextInputValue('experience');
|
||||||
|
const why = interaction.fields.getTextInputValue('why');
|
||||||
|
|
||||||
|
const embed = new EmbedBuilder()
|
||||||
|
.setTitle('Application')
|
||||||
|
.setDescription('Thank you for applying to the server!')
|
||||||
|
.addFields(
|
||||||
|
{ name: 'Age', value: age },
|
||||||
|
{ name: 'Location', value: location },
|
||||||
|
{ name: 'Experience', value: experience },
|
||||||
|
{ name: 'Why', value: why },
|
||||||
|
)
|
||||||
|
.setColor('#00ff00')
|
||||||
|
.setTimestamp();
|
||||||
|
|
||||||
|
// create ticket channel in application category
|
||||||
|
const channel = await interaction.guild.channels.create({
|
||||||
|
name: `${interaction.user.username}-application`,
|
||||||
|
type: ChannelType.GuildText,
|
||||||
|
parent: applicationTicketCategory,
|
||||||
|
permissionOverwrites: [
|
||||||
|
{
|
||||||
|
id: interaction.user.id,
|
||||||
|
allow: [PermissionsBitField.Flags.ViewChannel],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: interaction.guild.roles.everyone,
|
||||||
|
deny: [PermissionsBitField.Flags.ViewChannel],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
// for each role in config access_to_ticket array add permission to view channel
|
||||||
|
for (const role of access_to_ticket) {
|
||||||
|
await channel.permissionOverwrites.edit(role, { ViewChannel: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
const pingMessage = access_to_ticket.map(role => `||<@&${role}>||`).join(' ') + ` ||${interaction.user}||`;
|
||||||
|
await channel.send(pingMessage);
|
||||||
|
|
||||||
|
|
||||||
|
// send message to ticket log channel
|
||||||
|
const logChannel = interaction.guild.channels.cache.get(ticketLogChannel);
|
||||||
|
await logChannel.send(`Ticket created by ${interaction.user} in ${channel}`);
|
||||||
|
|
||||||
|
await interaction.reply({ content: `Your application has been submitted. Please wait for a response from a staff member. ${channel}`, ephemeral: true });
|
||||||
|
|
||||||
|
const closeButton = new ButtonBuilder()
|
||||||
|
.setCustomId('close')
|
||||||
|
.setLabel('Close')
|
||||||
|
.setStyle(ButtonStyle.Danger);
|
||||||
|
|
||||||
|
const row = new ActionRowBuilder()
|
||||||
|
.addComponents(closeButton);
|
||||||
|
|
||||||
|
await channel.send({ embeds: [embed], components: [row] });
|
||||||
|
}
|
||||||
|
else if (interaction.isButton()) {
|
||||||
|
// handle openTicketChannel button interactions here
|
||||||
|
|
||||||
|
// application button ----------------------------------------------------------------------------------------
|
||||||
|
const button = interaction.component;
|
||||||
|
if (button.customId === 'application') {
|
||||||
|
// TODO: Create application embed builder by taking user input
|
||||||
|
|
||||||
|
const modal = new ModalBuilder()
|
||||||
|
.setCustomId('application')
|
||||||
|
.setTitle('Application');
|
||||||
|
|
||||||
|
const ageInput = new TextInputBuilder()
|
||||||
|
.setCustomId('age')
|
||||||
|
.setLabel('Enter your age')
|
||||||
|
.setStyle(TextInputStyle.Short);
|
||||||
|
|
||||||
|
const locationInput = new TextInputBuilder()
|
||||||
|
.setCustomId('location')
|
||||||
|
.setLabel('Enter your time zone and country')
|
||||||
|
.setStyle(TextInputStyle.Short);
|
||||||
|
|
||||||
|
const experienceInput = new TextInputBuilder()
|
||||||
|
.setCustomId('experience')
|
||||||
|
.setLabel('Enter your experience with Minecraft')
|
||||||
|
.setStyle(TextInputStyle.Paragraph);
|
||||||
|
|
||||||
|
const whyInput = new TextInputBuilder()
|
||||||
|
.setCustomId('why')
|
||||||
|
.setLabel('Why do you want to join this server?')
|
||||||
|
.setStyle(TextInputStyle.Paragraph);
|
||||||
|
|
||||||
|
const modalRow1 = new ActionRowBuilder()
|
||||||
|
.addComponents(ageInput);
|
||||||
|
|
||||||
|
const modalRow2 = new ActionRowBuilder()
|
||||||
|
.addComponents(locationInput);
|
||||||
|
|
||||||
|
const modalRow3 = new ActionRowBuilder()
|
||||||
|
.addComponents(experienceInput);
|
||||||
|
|
||||||
|
const modalRow4 = new ActionRowBuilder()
|
||||||
|
.addComponents(whyInput);
|
||||||
|
|
||||||
|
modal.addComponents(modalRow1, modalRow2, modalRow3, modalRow4);
|
||||||
|
|
||||||
|
await interaction.showModal(modal);
|
||||||
|
}
|
||||||
|
// support button ----------------------------------------------------------------------------------------
|
||||||
|
if (button.customId === 'support') {
|
||||||
|
const channel = await interaction.guild.channels.create({
|
||||||
|
name: `${interaction.user.username}-support`,
|
||||||
|
type: ChannelType.GuildText,
|
||||||
|
parent: supportTicketCategory,
|
||||||
|
permissionOverwrites: [
|
||||||
|
{
|
||||||
|
id: interaction.user.id,
|
||||||
|
allow: [PermissionsBitField.Flags.ViewChannel],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: interaction.guild.roles.everyone,
|
||||||
|
deny: [PermissionsBitField.Flags.ViewChannel],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
const logChannel = interaction.guild.channels.cache.get(ticketLogChannel);
|
||||||
|
const logEmbed = new EmbedBuilder()
|
||||||
|
.setTitle('Ticket Created')
|
||||||
|
.setDescription(`Ticket created by ${interaction.user} in ${channel}`)
|
||||||
|
.setTimestamp()
|
||||||
|
.setFooter({ text: 'Bot created by dylancanada' });
|
||||||
|
|
||||||
|
await logChannel.send({ embeds: [logEmbed] });
|
||||||
|
await interaction.reply({ content: `Ticket created at ${channel}`, ephemeral: true });
|
||||||
|
|
||||||
|
for (const role of access_to_ticket) {
|
||||||
|
await channel.permissionOverwrites.edit(role, { ViewChannel: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
const pingMessage = access_to_ticket.map(role => `||<@&${role}>||`).join(' ');
|
||||||
|
await channel.send(pingMessage);
|
||||||
|
|
||||||
|
const embed = new EmbedBuilder()
|
||||||
|
.setTitle('Support Ticket')
|
||||||
|
.setDescription('Ticket created, click the button below to close the ticket')
|
||||||
|
.setAuthor({ name: interaction.user.username, iconURL: interaction.user.displayAvatarURL() })
|
||||||
|
.addFields({ name: 'Ticket', value: `Please explain your issue ${interaction.user} and someone will be with you shortly`, inline: false })
|
||||||
|
.setTimestamp()
|
||||||
|
.setFooter({ text: 'Bot created by dylancanada' });
|
||||||
|
|
||||||
|
const closeButton = new ButtonBuilder()
|
||||||
|
.setCustomId('close')
|
||||||
|
.setLabel('Close')
|
||||||
|
.setStyle(ButtonStyle.Danger);
|
||||||
|
|
||||||
|
const row = new ActionRowBuilder()
|
||||||
|
.addComponents(closeButton);
|
||||||
|
|
||||||
|
await channel.send({ embeds: [embed], components: [row] });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (button.customId === 'close') {
|
||||||
|
const closeEmbed = new EmbedBuilder()
|
||||||
|
.setTitle('Closing Ticket')
|
||||||
|
.setDescription('This ticket will be closed in 5 seconds.')
|
||||||
|
.addFields(
|
||||||
|
{ name: 'Ticket', value: interaction.channel.name },
|
||||||
|
{ name: 'Closed By', value: interaction.user.username },
|
||||||
|
)
|
||||||
|
.setColor('#ff0000');
|
||||||
|
|
||||||
|
const closeButton = new ButtonBuilder()
|
||||||
|
.setCustomId('cancel')
|
||||||
|
.setLabel('Cancel')
|
||||||
|
.setStyle(ButtonStyle.Danger);
|
||||||
|
|
||||||
|
const row = new ActionRowBuilder()
|
||||||
|
.addComponents(closeButton);
|
||||||
|
|
||||||
|
await interaction.reply({ embeds: [closeEmbed], components: [row] });
|
||||||
|
|
||||||
|
const filter = i => i.customId === 'cancel';
|
||||||
|
const collector = interaction.channel.createMessageComponentCollector({ filter, time: 5000 });
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
collector.on('collect', async i => {
|
||||||
|
await i.update({ content: 'Ticket close cancelled.', components: [] });
|
||||||
|
collector.stop();
|
||||||
|
});
|
||||||
|
|
||||||
|
collector.on('end', async collected => {
|
||||||
|
if (collected.size === 0) {
|
||||||
|
const transcriptChannel = interaction.guild.channels.cache.get(ticketTranscriptChannel);
|
||||||
|
const reversedMessages = await interaction.channel.messages.fetch({ limit: 100 });
|
||||||
|
|
||||||
|
const messages = Array.from(reversedMessages.values()).reverse();
|
||||||
|
|
||||||
|
let transcript = '';
|
||||||
|
messages.forEach(message => {
|
||||||
|
transcript += `${message.author.getUsername()}: ${message.content}\n`;
|
||||||
|
});
|
||||||
|
|
||||||
|
transcriptChannel.send({ content: `Transcript for ${interaction.channel.name}`, files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }] });
|
||||||
|
|
||||||
|
try {
|
||||||
|
await interaction.user.send({ content: `Here is the transcript for your ticket: ${interaction.channel.name}`, files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }] });
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
await interaction.reply('An error occurred while trying to send the transcript to the user.');
|
||||||
|
}
|
||||||
|
|
||||||
|
await interaction.channel.delete();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (button.customId === 'transcript') {
|
||||||
|
const transcriptChannel = interaction.guild.channels.cache.get(ticketTranscriptChannel);
|
||||||
|
const reversedMessages = await interaction.channel.messages.fetch({ limit: 100 });
|
||||||
|
|
||||||
|
const messages = Array.from(reversedMessages.values()).reverse();
|
||||||
|
|
||||||
|
let transcript = '';
|
||||||
|
messages.forEach(message => {
|
||||||
|
transcript += `${message.author.username}: ${message.content}\n`;
|
||||||
|
});
|
||||||
|
|
||||||
|
transcriptChannel.send({ content: `Transcript for ${interaction.channel.name}`, files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }] });
|
||||||
|
|
||||||
|
try {
|
||||||
|
await interaction.user.send({ content: `Here is the transcript for your ticket: ${interaction.channel.name}`, files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }] });
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
await interaction.reply('An error occurred while trying to send the transcript to the user.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Modify a user's experience, level, credits, or bank",
|
"DESCRIPTION": "Modify a user's experience, level, credits, or bank",
|
||||||
"USAGE": "[type] [@user] [int]",
|
"USAGE": "[type] [@user] [int]",
|
||||||
"EXAMPLES": "set type:Level user:@Jonny_Bro#4226 int:10",
|
"EXAMPLES": "set type:Level user:@jonny_bro int:10",
|
||||||
"INVALID_NUMBER": "The value must be greater than zero"
|
"INVALID_NUMBER": "The value must be greater than zero"
|
||||||
}
|
}
|
|
@ -60,6 +60,7 @@
|
||||||
"STATUS_IDLE": "Idle",
|
"STATUS_IDLE": "Idle",
|
||||||
"STATUS_OFFLINE": "Offline",
|
"STATUS_OFFLINE": "Offline",
|
||||||
"STATUS_ONLINE": "Online",
|
"STATUS_ONLINE": "Online",
|
||||||
|
"TICKET": "Ticket",
|
||||||
"UNKNOWN": "Unknown",
|
"UNKNOWN": "Unknown",
|
||||||
"USER": "User",
|
"USER": "User",
|
||||||
"USERNAME": "Username",
|
"USERNAME": "Username",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Shows a user's list of achievements",
|
"DESCRIPTION": "Shows a user's list of achievements",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "achievements\nachievements user:@Jonny_Bro#4226",
|
"EXAMPLES": "achievements\nachievements user:@jonny_bro",
|
||||||
"SEND_CMD": "Use your first command",
|
"SEND_CMD": "Use your first command",
|
||||||
"CLAIM_SALARY": "Claim your salary 10 times",
|
"CLAIM_SALARY": "Claim your salary 10 times",
|
||||||
"MARRY": "Find a partner",
|
"MARRY": "Find a partner",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Marry the one you love",
|
"DESCRIPTION": "Marry the one you love",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "marry user:@Jonny_Bro#4226",
|
"EXAMPLES": "marry user:@jonny_bro",
|
||||||
"BOT_USER": "Bots are forever alone ;(",
|
"BOT_USER": "Bots are forever alone ;(",
|
||||||
"ALREADY_MARRIED": "You are already married! You can divorce using the `divorce` command",
|
"ALREADY_MARRIED": "You are already married! You can divorce using the `divorce` command",
|
||||||
"ALREADY_MARRIED_USER": "You're too late! {{user}} is already married",
|
"ALREADY_MARRIED_USER": "You're too late! {{user}} is already married",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Shows the amount of credits for a user",
|
"DESCRIPTION": "Shows the amount of credits for a user",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "money\nmoney user:@Jonny_Bro#4226",
|
"EXAMPLES": "money\nmoney user:@jonny_bro",
|
||||||
"BOT_USER": "He has too much money, I can't output that number",
|
"BOT_USER": "He has too much money, I can't output that number",
|
||||||
"TITLE": "{{user}}'s Credits"
|
"TITLE": "{{user}}'s Credits"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Sends credits to a user",
|
"DESCRIPTION": "Sends credits to a user",
|
||||||
"USAGE": "[@user] [amount]",
|
"USAGE": "[@user] [amount]",
|
||||||
"EXAMPLES": "pay user:@Jonny_Bro#4226 amount:1000",
|
"EXAMPLES": "pay user:@jonny_bro amount:1000",
|
||||||
"BOT_USER": "Bots don't need money B)",
|
"BOT_USER": "Bots don't need money B)",
|
||||||
"YOURSELF": "You cannot transfer credits to yourself",
|
"YOURSELF": "You cannot transfer credits to yourself",
|
||||||
"INVALID_AMOUNT": "Please specify an amount",
|
"INVALID_AMOUNT": "Please specify an amount",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Shows user profile",
|
"DESCRIPTION": "Shows user profile",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "profile\nprofile user:@Jonny_Bro#4226",
|
"EXAMPLES": "profile\nprofile user:@jonny_bro",
|
||||||
"BOT_USER": "Bots don't have a profile",
|
"BOT_USER": "Bots don't have a profile",
|
||||||
"TITLE": "{{user}}'s Profile",
|
"TITLE": "{{user}}'s Profile",
|
||||||
"LINK": "Profile",
|
"LINK": "Profile",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Gives reputation to a user",
|
"DESCRIPTION": "Gives reputation to a user",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "rep user:@Jonny_Bro#4226",
|
"EXAMPLES": "rep user:@jonny_bro",
|
||||||
"COOLDOWN": "You must wait **{{time}}** before using it again",
|
"COOLDOWN": "You must wait **{{time}}** before using it again",
|
||||||
"BOT_USER": "Bots are already cool B)",
|
"BOT_USER": "Bots are already cool B)",
|
||||||
"YOURSELF": "You cannot give reputation to yourself",
|
"YOURSELF": "You cannot give reputation to yourself",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Attempts to rob a user",
|
"DESCRIPTION": "Attempts to rob a user",
|
||||||
"USAGE": "[@user] [amount]",
|
"USAGE": "[@user] [amount]",
|
||||||
"EXAMPLES": "rob user:@Jonny_Bro#4226 amount:100",
|
"EXAMPLES": "rob user:@jonny_bro amount:100",
|
||||||
"BOT_USER": "You cannot rob a bot",
|
"BOT_USER": "You cannot rob a bot",
|
||||||
"YOURSELF": "You cannot rob yourself",
|
"YOURSELF": "You cannot rob yourself",
|
||||||
"NOT_ENOUGH_AUTHOR": "You must have at least {{moneyMin}} to rob this user (you currently have {{moneyCurrent}})",
|
"NOT_ENOUGH_AUTHOR": "You must have at least {{moneyMin}} to rob this user (you currently have {{moneyCurrent}})",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Love Calculator",
|
"DESCRIPTION": "Love Calculator",
|
||||||
"USAGE": "[@first_member] (@second_member)",
|
"USAGE": "[@first_member] (@second_member)",
|
||||||
"EXAMPLES": "lovecalc first_member:@Jonny_Bro#4226\nlovecalc first_member:@Jonny_Bro#4226 second_member:@JaBa#9042",
|
"EXAMPLES": "lovecalc first_member:@jonny_bro\nlovecalc first_member:@jonny_bro second_member:@JaBa#9042",
|
||||||
"CONTENT": "{{firstMember}} loves {{secondMember}} at **{{percent}}%**"
|
"CONTENT": "{{firstMember}} loves {{secondMember}} at **{{percent}}%**"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Play Tic Tac Toe",
|
"DESCRIPTION": "Play Tic Tac Toe",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "tictactoe user:@Jonny_Bro#4226",
|
"EXAMPLES": "tictactoe user:@jonny_bro",
|
||||||
"BOT_USER": "You cannot play against a bot!",
|
"BOT_USER": "You cannot play against a bot!",
|
||||||
"YOURSELF": "You cannot play against yourself!",
|
"YOURSELF": "You cannot play against yourself!",
|
||||||
"INVITE_USER": "<@{{opponent}}>, you have been invited to play Tic Tac Toe!",
|
"INVITE_USER": "<@{{opponent}}>, you have been invited to play Tic Tac Toe!",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Gets user's avatar",
|
"DESCRIPTION": "Gets user's avatar",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "avatar\navatar user:@Jonny_Bro#4226",
|
"EXAMPLES": "avatar\navatar user:@jonny_bro",
|
||||||
"SERVER": "Server avatar?"
|
"SERVER": "Server avatar?"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Sends a report to a designated channel",
|
"DESCRIPTION": "Sends a report to a designated channel",
|
||||||
"USAGE": "[@user] (message)",
|
"USAGE": "[@user] (message)",
|
||||||
"EXAMPLES": "report user:@Jonny_Bro#4226 message:Violation of rules",
|
"EXAMPLES": "report user:@jonny_bro message:Violation of rules",
|
||||||
"MISSING_CHANNEL": "The report channel is not set up",
|
"MISSING_CHANNEL": "The report channel is not set up",
|
||||||
"INVALID_USER": "You cannot report yourself",
|
"INVALID_USER": "You cannot report yourself",
|
||||||
"SUCCESS": "Your report has been sent to {{channel}}",
|
"SUCCESS": "Your report has been sent to {{channel}}",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Shows user information",
|
"DESCRIPTION": "Shows user information",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "userinfo\nuserinfo user:@Jonny_Bro#4226",
|
"EXAMPLES": "userinfo\nuserinfo user:@jonny_bro",
|
||||||
"CUSTOM": "Custom Status",
|
"CUSTOM": "Custom Status",
|
||||||
"NO_ACTIVITY": "Not playing",
|
"NO_ACTIVITY": "Not playing",
|
||||||
"NO_ROLE": "No role",
|
"NO_ROLE": "No role",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"BOT_USER": "You cannot do this with the bot.",
|
"BOT_USER": "You cannot do this with the bot.",
|
||||||
|
"CANT_DM": "I cannot DM you. Please check your privacy settings.",
|
||||||
"FORCE_STOP": "The game has been forcibly ended, {{user}}, nobody won (the number was {{number}}).",
|
"FORCE_STOP": "The game has been forcibly ended, {{user}}, nobody won (the number was {{number}}).",
|
||||||
"LEVEL_UP": "You have reached the next level! Your new level is: **{{level}}**",
|
"LEVEL_UP": "You have reached the next level! Your new level is: **{{level}}**",
|
||||||
"GUILD_ONLY": "This command can only be used on a server.",
|
"GUILD_ONLY": "This command can only be used on a server.",
|
||||||
|
|
8
languages/en-US/moderation/ban.json
Normal file
8
languages/en-US/moderation/ban.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Bans a user",
|
||||||
|
"USAGE": "[@user] [reason]",
|
||||||
|
"EXAMPLES": "ban user:@jonny_bro reason:Violation of server rules",
|
||||||
|
"YOURSELF": "You cannot ban yourself",
|
||||||
|
"SUPERIOR": "You cannot ban this user (or I am unable to do so)",
|
||||||
|
"SUCCESS": "{{user}} has been banned for **{{reason}}**"
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Clears messages in a channel",
|
"DESCRIPTION": "Clears messages in a channel",
|
||||||
"USAGE": "[option] (@user)",
|
"USAGE": "[option] (@user)",
|
||||||
"EXAMPLES": "clear option:10\nclear option:10 user:@Jonny_Bro#4226\nclear option:all",
|
"EXAMPLES": "clear option:10\nclear option:10 user:@jonny_bro\nclear option:all",
|
||||||
"OPTION": "Integer / all",
|
"OPTION": "Integer / all",
|
||||||
"REQUIRE_ID_USER": "Specify a user or ID",
|
"REQUIRE_ID_USER": "Specify a user or ID",
|
||||||
"ALL_CONFIRM": "**All messages in the channel will be deleted! Are you sure?**",
|
"ALL_CONFIRM": "**All messages in the channel will be deleted! Are you sure?**",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Removes all warnings from a user",
|
"DESCRIPTION": "Removes all warnings from a user",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "clearwarns user:@Jonny_Bro#4226",
|
"EXAMPLES": "clearwarns user:@jonny_bro",
|
||||||
"SUCCESS": "Warnings of user {{user}} have been cleared"
|
"SUCCESS": "Warnings of user {{user}} have been cleared"
|
||||||
}
|
}
|
8
languages/en-US/moderation/kick.json
Normal file
8
languages/en-US/moderation/kick.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Kicks a user",
|
||||||
|
"USAGE": "[@user] [reason]",
|
||||||
|
"EXAMPLES": "kick user:@jonny_bro reason:Come back tomorrow when I stop getting offended",
|
||||||
|
"YOURSELF": "You cannot kick yourself",
|
||||||
|
"SUPERIOR": "You cannot kick this user (or I am unable to do so)",
|
||||||
|
"SUCCESS": "{{user}} has been kicked for **{{reason}}**"
|
||||||
|
}
|
8
languages/en-US/moderation/untimeout.json
Normal file
8
languages/en-US/moderation/untimeout.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Removes timeout from a user",
|
||||||
|
"USAGE": "[@user]",
|
||||||
|
"EXAMPLES": "untimeout user:@jonny_bro",
|
||||||
|
"YOURSELF": "You cannot remove timeout from yourself",
|
||||||
|
"NOT_TIMEDOUT": "This user is not currently timed out",
|
||||||
|
"SUCCESS": "Timeout for {{user}} has been removed"
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Shows a list of user's violations",
|
"DESCRIPTION": "Shows a list of user's violations",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "warns user:@Jonny_Bro#4226",
|
"EXAMPLES": "warns user:@jonny_bro",
|
||||||
"SANCTIONS_OF": "Violations of {{member}}",
|
"SANCTIONS_OF": "Violations of {{member}}",
|
||||||
"NO_SANCTIONS": "**{{member}}** has no violations"
|
"NO_SANCTIONS": "**{{member}}** has no violations"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Allows you to modify user's data",
|
"DESCRIPTION": "Allows you to modify user's data",
|
||||||
"USAGE": "[set/add] [type] [@user] [int]",
|
"USAGE": "[set/add] [type] [@user] [int]",
|
||||||
"EXAMPLES": "debug set type:Level user:@Jonny_Bro#4226 int:100",
|
"EXAMPLES": "debug set type:Level user:@jonny_bro int:100",
|
||||||
"TYPE": "Type of data",
|
"TYPE": "Type of data",
|
||||||
"SET": "Set the value",
|
"SET": "Set the value",
|
||||||
"ADD": "Add to the value",
|
"ADD": "Add to the value",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Изменить пользователю опыт, уровень, кредиты или банк",
|
"DESCRIPTION": "Изменить пользователю опыт, уровень, кредиты или банк",
|
||||||
"USAGE": "[type] [@user] [int]",
|
"USAGE": "[type] [@user] [int]",
|
||||||
"EXAMPLES": "set type:Уровень user:@Jonny_Bro#4226 int:10",
|
"EXAMPLES": "set type:Уровень user:@jonny_bro int:10",
|
||||||
"INVALID_NUMBER": "Значение должно быть больше нуля"
|
"INVALID_NUMBER": "Значение должно быть больше нуля"
|
||||||
}
|
}
|
|
@ -60,6 +60,7 @@
|
||||||
"STATUS_IDLE": "Неактивен",
|
"STATUS_IDLE": "Неактивен",
|
||||||
"STATUS_OFFLINE": "Не в сети",
|
"STATUS_OFFLINE": "Не в сети",
|
||||||
"STATUS_ONLINE": "В сети",
|
"STATUS_ONLINE": "В сети",
|
||||||
|
"TICKET": "Тикет",
|
||||||
"UNKNOWN": "Неизвестно",
|
"UNKNOWN": "Неизвестно",
|
||||||
"USER": "Пользователь",
|
"USER": "Пользователь",
|
||||||
"USERNAME": "Имя пользователя",
|
"USERNAME": "Имя пользователя",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Показать список достижений пользователя",
|
"DESCRIPTION": "Показать список достижений пользователя",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "achievements\nachievements user:@Jonny_Bro#4226",
|
"EXAMPLES": "achievements\nachievements user:@jonny_bro",
|
||||||
"SEND_CMD": "Используйте свою первую команду",
|
"SEND_CMD": "Используйте свою первую команду",
|
||||||
"CLAIM_SALARY": "Получите зарплату 10 раз",
|
"CLAIM_SALARY": "Получите зарплату 10 раз",
|
||||||
"MARRY": "Найдите вторую половинку",
|
"MARRY": "Найдите вторую половинку",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Женитесь на том, кого любите",
|
"DESCRIPTION": "Женитесь на том, кого любите",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "marry user:@Jonny_Bro#4226",
|
"EXAMPLES": "marry user:@jonny_bro",
|
||||||
"BOT_USER": "Боты вечно одиноки ;(",
|
"BOT_USER": "Боты вечно одиноки ;(",
|
||||||
"ALREADY_MARRIED": "Вы уже состоите в браке! Вы можете развестить с помощью команды `divorce`",
|
"ALREADY_MARRIED": "Вы уже состоите в браке! Вы можете развестить с помощью команды `divorce`",
|
||||||
"ALREADY_MARRIED_USER": "Вы опоздали! {{user}} уже состоит в браке",
|
"ALREADY_MARRIED_USER": "Вы опоздали! {{user}} уже состоит в браке",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Показать количество кредитов у пользователя",
|
"DESCRIPTION": "Показать количество кредитов у пользователя",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "money\nmoney user:@Jonny_Bro#4226",
|
"EXAMPLES": "money\nmoney user:@jonny_bro",
|
||||||
"BOT_USER": "У него слишком много денег, я не могу вывести это число",
|
"BOT_USER": "У него слишком много денег, я не могу вывести это число",
|
||||||
"TITLE": "Кредиты {{user}}"
|
"TITLE": "Кредиты {{user}}"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Отправить кредиты пользователю",
|
"DESCRIPTION": "Отправить кредиты пользователю",
|
||||||
"USAGE": "[@user] [amount]",
|
"USAGE": "[@user] [amount]",
|
||||||
"EXAMPLES": "pay user:@Jonny_Bro#4226 amount:1000",
|
"EXAMPLES": "pay user:@jonny_bro amount:1000",
|
||||||
"BOT_USER": "Ботам не нужны деньги B)",
|
"BOT_USER": "Ботам не нужны деньги B)",
|
||||||
"YOURSELF": "Вы не можете перевести кредиты самому себе",
|
"YOURSELF": "Вы не можете перевести кредиты самому себе",
|
||||||
"INVALID_AMOUNT": "Укажите сумму",
|
"INVALID_AMOUNT": "Укажите сумму",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Показать профиль пользователя",
|
"DESCRIPTION": "Показать профиль пользователя",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "profile\nprofile user:@Jonny_Bro#4226",
|
"EXAMPLES": "profile\nprofile user:@jonny_bro",
|
||||||
"BOT_USER": "У ботов нет профиля",
|
"BOT_USER": "У ботов нет профиля",
|
||||||
"TITLE": "Профиль {{user}}",
|
"TITLE": "Профиль {{user}}",
|
||||||
"LINK": "Профиль",
|
"LINK": "Профиль",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Дать репутацию пользователю",
|
"DESCRIPTION": "Дать репутацию пользователю",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "rep user:@Jonny_Bro#4226",
|
"EXAMPLES": "rep user:@jonny_bro",
|
||||||
"COOLDOWN": "Вы должны подождать **{{time}}** до следующего использования",
|
"COOLDOWN": "Вы должны подождать **{{time}}** до следующего использования",
|
||||||
"BOT_USER": "Боты и так крутые B)",
|
"BOT_USER": "Боты и так крутые B)",
|
||||||
"YOURSELF": "Вы не можете дать очко репутации самому себе",
|
"YOURSELF": "Вы не можете дать очко репутации самому себе",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Попытаться ограбить пользователя",
|
"DESCRIPTION": "Попытаться ограбить пользователя",
|
||||||
"USAGE": "[@user] [amount]",
|
"USAGE": "[@user] [amount]",
|
||||||
"EXAMPLES": "rob user:@Jonny_Bro#4226 amount:100",
|
"EXAMPLES": "rob user:@jonny_bro amount:100",
|
||||||
"BOT_USER": "Вы не можете ограбить бота",
|
"BOT_USER": "Вы не можете ограбить бота",
|
||||||
"YOURSELF": "Вы не можете ограбить себя",
|
"YOURSELF": "Вы не можете ограбить себя",
|
||||||
"NOT_ENOUGH_AUTHOR": "У вас должно быть хотя бы {{moneyMin}}, чтобы грабить данного пользователя (сейчас у вас {{moneyCurrent}})",
|
"NOT_ENOUGH_AUTHOR": "У вас должно быть хотя бы {{moneyMin}}, чтобы грабить данного пользователя (сейчас у вас {{moneyCurrent}})",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Калькулятор любви",
|
"DESCRIPTION": "Калькулятор любви",
|
||||||
"USAGE": "[@first_member] (@second_member)",
|
"USAGE": "[@first_member] (@second_member)",
|
||||||
"EXAMPLES": "lovecalc first_member:@Jonny_Bro#4226\nlovecalc first_member:@Jonny_Bro#4226 second_member:@JaBa#9042",
|
"EXAMPLES": "lovecalc first_member:@jonny_bro\nlovecalc first_member:@jonny_bro second_member:@JaBa#9042",
|
||||||
"CONTENT": "{{firstMember}} любит {{secondMember}} на **{{percent}}%**"
|
"CONTENT": "{{firstMember}} любит {{secondMember}} на **{{percent}}%**"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Крестики-нолики",
|
"DESCRIPTION": "Крестики-нолики",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "tictactoe user:@Jonny_Bro#4226",
|
"EXAMPLES": "tictactoe user:@jonny_bro",
|
||||||
"BOT_USER": "Вы не можете играть против бота!",
|
"BOT_USER": "Вы не можете играть против бота!",
|
||||||
"YOURSELF": "Вы не можете играть с самим собой!",
|
"YOURSELF": "Вы не можете играть с самим собой!",
|
||||||
"INVITE_USER": "<@{{opponent}}>, вам предложили сыграть в крестики-нолики!",
|
"INVITE_USER": "<@{{opponent}}>, вам предложили сыграть в крестики-нолики!",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Возвращает аватар пользователя",
|
"DESCRIPTION": "Возвращает аватар пользователя",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "avatar\navatar user:@Jonny_Bro#4226",
|
"EXAMPLES": "avatar\navatar user:@jonny_bro",
|
||||||
"SERVER": "Аватар сервера?"
|
"SERVER": "Аватар сервера?"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Отправить жалобу в специальный канал",
|
"DESCRIPTION": "Отправить жалобу в специальный канал",
|
||||||
"USAGE": "[@user] (message)",
|
"USAGE": "[@user] (message)",
|
||||||
"EXAMPLES": "report user:@Jonny_Bro#4226 message:Нарушение правил",
|
"EXAMPLES": "report user:@jonny_bro message:Нарушение правил",
|
||||||
"MISSING_CHANNEL": "Канал для жалоб не настроен",
|
"MISSING_CHANNEL": "Канал для жалоб не настроен",
|
||||||
"INVALID_USER": "Вы не можете пожаловаться на себя",
|
"INVALID_USER": "Вы не можете пожаловаться на себя",
|
||||||
"SUCCESS": "Ваша жалоба отправлена в {{channel}}",
|
"SUCCESS": "Ваша жалоба отправлена в {{channel}}",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Показать информацию о пользователе",
|
"DESCRIPTION": "Показать информацию о пользователе",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "userinfo\nuserinfo user:@Jonny_Bro#4226",
|
"EXAMPLES": "userinfo\nuserinfo user:@jonny_bro",
|
||||||
"CUSTOM": "Пользовательский статус",
|
"CUSTOM": "Пользовательский статус",
|
||||||
"NO_ACTIVITY": "Не играет",
|
"NO_ACTIVITY": "Не играет",
|
||||||
"NO_ROLE": "Нет роли",
|
"NO_ROLE": "Нет роли",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"BOT_USER": "Вы не можете сделать это с ботом",
|
"BOT_USER": "Вы не можете сделать это с ботом",
|
||||||
|
"CANT_DM": "Я не могу отправить Вам личное сообщение, проверьте настройки конфиденциальности",
|
||||||
"FORCE_STOP": "Игра принудительно окончена {{user}}, никто не победил (загаданное число - {{number}})",
|
"FORCE_STOP": "Игра принудительно окончена {{user}}, никто не победил (загаданное число - {{number}})",
|
||||||
"LEVEL_UP": "Вы достигли следующего уровня! Ваш новый уровень: **{{level}}**",
|
"LEVEL_UP": "Вы достигли следующего уровня! Ваш новый уровень: **{{level}}**",
|
||||||
"GUILD_ONLY": "Данную команду можно использовать только на сервере",
|
"GUILD_ONLY": "Данную команду можно использовать только на сервере",
|
||||||
|
|
8
languages/ru-RU/moderation/ban.json
Normal file
8
languages/ru-RU/moderation/ban.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Забанить пользователя",
|
||||||
|
"USAGE": "[@user] [reason]",
|
||||||
|
"EXAMPLES": "ban user:@jonny_bro reason:Нарушение правил сервера",
|
||||||
|
"YOURSELF": "Вы не можете забанить себя",
|
||||||
|
"SUPERIOR": "Вы не можете забанить данного пользователя (или я не могу сделать этого)",
|
||||||
|
"SUCCESS": "{{user}} был забанен по причине **{{reason}}**"
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Очистка сообщений в канале",
|
"DESCRIPTION": "Очистка сообщений в канале",
|
||||||
"USAGE": "[option] (@user)",
|
"USAGE": "[option] (@user)",
|
||||||
"EXAMPLES": "clear option:10\nclear option:10 user:@Jonny_Bro#4226\nclear option:all",
|
"EXAMPLES": "clear option:10\nclear option:10 user:@jonny_bro\nclear option:all",
|
||||||
"OPTION": "Целое число / all",
|
"OPTION": "Целое число / all",
|
||||||
"REQUIRE_ID_USER": "Укажите пользователя или ID",
|
"REQUIRE_ID_USER": "Укажите пользователя или ID",
|
||||||
"ALL_CONFIRM": "**Все сообщения в канале будут удалены! Вы уверены?**",
|
"ALL_CONFIRM": "**Все сообщения в канале будут удалены! Вы уверены?**",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Снять все предупреждения с пользователя",
|
"DESCRIPTION": "Снять все предупреждения с пользователя",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "clearwarns user:@Jonny_Bro#4226",
|
"EXAMPLES": "clearwarns user:@jonny_bro",
|
||||||
"SUCCESS": "Предупреждения пользователя {{user}} удалены"
|
"SUCCESS": "Предупреждения пользователя {{user}} удалены"
|
||||||
}
|
}
|
8
languages/ru-RU/moderation/kick.json
Normal file
8
languages/ru-RU/moderation/kick.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Кикнуть пользователя",
|
||||||
|
"USAGE": "[@user] [reason]",
|
||||||
|
"EXAMPLES": "kick user:@jonny_bro reason:Зайдёшь завтра когда я перестану обижаться",
|
||||||
|
"YOURSELF": "Вы не можете кикнуть себя",
|
||||||
|
"SUPERIOR": "Вы не можете кикнуть данного пользователя (или я не могу сделать этого)",
|
||||||
|
"SUCCESS": "{{user}} был кикнут по причине **{{reason}}**"
|
||||||
|
}
|
8
languages/ru-RU/moderation/untimeout.json
Normal file
8
languages/ru-RU/moderation/untimeout.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Снять таймаут с пользователя",
|
||||||
|
"USAGE": "[@user]",
|
||||||
|
"EXAMPLES": "untimeout user:@jonny_bro",
|
||||||
|
"YOURSELF": "Вы не можете снять с себя таймаут",
|
||||||
|
"NOT_TIMEDOUT": "Данный пользователь не находится в таймауте",
|
||||||
|
"SUCCESS": "Таймаут с {{user}} снят"
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Показать список нарушений пользователя",
|
"DESCRIPTION": "Показать список нарушений пользователя",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "warns user:@Jonny_Bro#4226",
|
"EXAMPLES": "warns user:@jonny_bro",
|
||||||
"SANCTIONS_OF": "Нарушения {{member}}",
|
"SANCTIONS_OF": "Нарушения {{member}}",
|
||||||
"NO_SANCTIONS": "У **{{member}}** нет нарушений"
|
"NO_SANCTIONS": "У **{{member}}** нет нарушений"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Позволяет изменять данные пользователя",
|
"DESCRIPTION": "Позволяет изменять данные пользователя",
|
||||||
"USAGE": "[set/add] [type] [@user] [int]",
|
"USAGE": "[set/add] [type] [@user] [int]",
|
||||||
"EXAMPLES": "debug set type:Уровень user:@Jonny_Bro#4226 int:100",
|
"EXAMPLES": "debug set type:Уровень user:@jonny_bro int:100",
|
||||||
"TYPE": "Тип данных",
|
"TYPE": "Тип данных",
|
||||||
"SET": "Установить значение",
|
"SET": "Установить значение",
|
||||||
"ADD": "Добавить к значению",
|
"ADD": "Добавить к значению",
|
||||||
|
|
7
languages/ru-RU/tickets/adduser.json
Normal file
7
languages/ru-RU/tickets/adduser.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Добавить пользователя в тикет",
|
||||||
|
"USAGE": "[@user]",
|
||||||
|
"EXAMPLES": "adduser user:@jonny_bro",
|
||||||
|
"NOT_TICKET": "Данный канал не является тикетом",
|
||||||
|
"SUCCESS": "{{user}} добавлен в тикет"
|
||||||
|
}
|
11
languages/ru-RU/tickets/closeticket.json
Normal file
11
languages/ru-RU/tickets/closeticket.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Закрыть тикет",
|
||||||
|
"USAGE": "",
|
||||||
|
"EXAMPLES": "closeticket",
|
||||||
|
"CLOSING_TITLE": "Закрытие тикета",
|
||||||
|
"CLOSING_DESC": "Тикет закроется через 5 секунд",
|
||||||
|
"CLOSING_BY": "Тикет закрыл",
|
||||||
|
"CLOSING_CANCELED": "Закрытие тикета отменено",
|
||||||
|
"CLOSED_TITLE": "Тикет закрыт",
|
||||||
|
"TRANSCRIPT": "Копия сообщений из {{channel}}"
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Змінити користувачу досвід, рівень, кредити або банк",
|
"DESCRIPTION": "Змінити користувачу досвід, рівень, кредити або банк",
|
||||||
"USAGE": "[type] [@user] [int]",
|
"USAGE": "[type] [@user] [int]",
|
||||||
"EXAMPLES": "set type:Рівень user:@Jonny_Bro#4226 int:10",
|
"EXAMPLES": "set type:Рівень user:@jonny_bro int:10",
|
||||||
"INVALID_NUMBER": "Значення має бути більшим за нуль"
|
"INVALID_NUMBER": "Значення має бути більшим за нуль"
|
||||||
}
|
}
|
|
@ -59,6 +59,7 @@
|
||||||
"STATUS_IDLE": "Неактивний",
|
"STATUS_IDLE": "Неактивний",
|
||||||
"STATUS_OFFLINE": "Не в мережі",
|
"STATUS_OFFLINE": "Не в мережі",
|
||||||
"STATUS_ONLINE": "У мережі",
|
"STATUS_ONLINE": "У мережі",
|
||||||
|
"TICKET": "Тікет",
|
||||||
"UNKNOWN": "Невідомо",
|
"UNKNOWN": "Невідомо",
|
||||||
"USER": "Користувач",
|
"USER": "Користувач",
|
||||||
"USERNAME": "Ім'я користувача",
|
"USERNAME": "Ім'я користувача",
|
||||||
|
|
|
@ -70,12 +70,12 @@
|
||||||
},
|
},
|
||||||
"sweetalert": {
|
"sweetalert": {
|
||||||
"errors": {
|
"errors": {
|
||||||
"settingsSave": "Произошла ошибка при сохранении настроек."
|
"settingsSave": "Сталася помилка при збереженні налаштувань."
|
||||||
},
|
},
|
||||||
"success": {
|
"success": {
|
||||||
"settingsSave": "Настройки успешно сохранены.",
|
"settingsSave": "Налаштування успішно збережені.",
|
||||||
"login": "Вход успешно выполнен.",
|
"login": "Успішний вхід.",
|
||||||
"logout": "Выход успешно выполнен."
|
"logout": "Успішний вихід."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"preloader": {
|
"preloader": {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Показати список досягнень користувача",
|
"DESCRIPTION": "Показати список досягнень користувача",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "achievements\nachievements user:@Jonny_Bro#4226",
|
"EXAMPLES": "achievements\nachievements user:@jonny_bro",
|
||||||
"SEND_CMD": "Використовуйте свою першу команду",
|
"SEND_CMD": "Використовуйте свою першу команду",
|
||||||
"CLAIM_SALARY": "Отримайте зарплату 10 разів",
|
"CLAIM_SALARY": "Отримайте зарплату 10 разів",
|
||||||
"MARRY": "Знайдіть другу половинку",
|
"MARRY": "Знайдіть другу половинку",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Одружуйтеся з тим, кого любите",
|
"DESCRIPTION": "Одружуйтеся з тим, кого любите",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "marry user:@Jonny_Bro#4226",
|
"EXAMPLES": "marry user:@jonny_bro",
|
||||||
"BOT_USER": "Боти завжди самотні ;(",
|
"BOT_USER": "Боти завжди самотні ;(",
|
||||||
"ALREADY_MARRIED": "Ви вже одружені! Ви можете розвести за допомогою команди `divorce`",
|
"ALREADY_MARRIED": "Ви вже одружені! Ви можете розвести за допомогою команди `divorce`",
|
||||||
"ALREADY_MARRIED_USER": "Ви запізнилися! {{user}} вже одружений",
|
"ALREADY_MARRIED_USER": "Ви запізнилися! {{user}} вже одружений",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Показати кількість кредитів у користувача",
|
"DESCRIPTION": "Показати кількість кредитів у користувача",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "money\nmoney user:@Jonny_Bro#4226",
|
"EXAMPLES": "money\nmoney user:@jonny_bro",
|
||||||
"BOT_USER": "У нього занадто багато грошей, я не можу написати це число",
|
"BOT_USER": "У нього занадто багато грошей, я не можу написати це число",
|
||||||
"TITLE": "{{user}} Кредити"
|
"TITLE": "{{user}} Кредити"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Надіслати кредити користувачу",
|
"DESCRIPTION": "Надіслати кредити користувачу",
|
||||||
"USAGE": "[@user] [amount]",
|
"USAGE": "[@user] [amount]",
|
||||||
"EXAMPLES": "pay user:@Jonny_Bro#4226 amount:1000",
|
"EXAMPLES": "pay user:@jonny_bro amount:1000",
|
||||||
"BOT_USER": "Ботам не потрібні гроші B)",
|
"BOT_USER": "Ботам не потрібні гроші B)",
|
||||||
"YOURSELF": "Ви не можете переказати кредити самому собі",
|
"YOURSELF": "Ви не можете переказати кредити самому собі",
|
||||||
"INVALID_AMOUNT": "Вкажіть суму",
|
"INVALID_AMOUNT": "Вкажіть суму",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Показати профіль користувача",
|
"DESCRIPTION": "Показати профіль користувача",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "profile\nprofile user:@Jonny_Bro#4226",
|
"EXAMPLES": "profile\nprofile user:@jonny_bro",
|
||||||
"BOT_USER": "Боти не мають профілю",
|
"BOT_USER": "Боти не мають профілю",
|
||||||
"TITLE": "Профіль {{user}}",
|
"TITLE": "Профіль {{user}}",
|
||||||
"LINK": "Профіль",
|
"LINK": "Профіль",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Дати репутацію користувачеві",
|
"DESCRIPTION": "Дати репутацію користувачеві",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "rep user:@Jonny_Bro#4226",
|
"EXAMPLES": "rep user:@jonny_bro",
|
||||||
"COOLDOWN": "Ви повинні почекати **{{time}}** до наступного використання",
|
"COOLDOWN": "Ви повинні почекати **{{time}}** до наступного використання",
|
||||||
"BOT_USER": "Боти і так круті B)",
|
"BOT_USER": "Боти і так круті B)",
|
||||||
"YOURSELF": "Ви не можете дати поінт репутації самому собі",
|
"YOURSELF": "Ви не можете дати поінт репутації самому собі",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Спробувати пограбувати користувача",
|
"DESCRIPTION": "Спробувати пограбувати користувача",
|
||||||
"USAGE": "[@user] [amount]",
|
"USAGE": "[@user] [amount]",
|
||||||
"EXAMPLES": "rob user:@Jonny_Bro#4226 amount:100",
|
"EXAMPLES": "rob user:@jonny_bro amount:100",
|
||||||
"BOT_USER": "Ви не можете пограбувати бота",
|
"BOT_USER": "Ви не можете пограбувати бота",
|
||||||
"YOURSELF": "Ви не можете пограбувати себе",
|
"YOURSELF": "Ви не можете пограбувати себе",
|
||||||
"NOT_ENOUGH_AUTHOR": "У вас має бути хоча б {{moneyMin}}, щоб грабувати цього користувача (зараз у вас {{moneyCurrent}})",
|
"NOT_ENOUGH_AUTHOR": "У вас має бути хоча б {{moneyMin}}, щоб грабувати цього користувача (зараз у вас {{moneyCurrent}})",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Калькулятор кохання",
|
"DESCRIPTION": "Калькулятор кохання",
|
||||||
"USAGE": "[@first_member] (@second_member)",
|
"USAGE": "[@first_member] (@second_member)",
|
||||||
"EXAMPLES": "lovecalc first_member:@Jonny_Bro#4226\nlovecalc first_member:@Jonny_Bro#4226 second_member:@JaBa#9042",
|
"EXAMPLES": "lovecalc first_member:@jonny_bro\nlovecalc first_member:@jonny_bro second_member:@JaBa#9042",
|
||||||
"CONTENT": "{{firstMember}} кохає {{secondMember}} на **{{percent}}%**"
|
"CONTENT": "{{firstMember}} кохає {{secondMember}} на **{{percent}}%**"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Хрестики-нуліки",
|
"DESCRIPTION": "Хрестики-нуліки",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "tictactoe user:@Jonny_Bro#4226",
|
"EXAMPLES": "tictactoe user:@jonny_bro",
|
||||||
"BOT_USER": "Ви не можете грати проти бота",
|
"BOT_USER": "Ви не можете грати проти бота",
|
||||||
"YOURSELF": "Ви не можете грати із самим собою",
|
"YOURSELF": "Ви не можете грати із самим собою",
|
||||||
"INVITE_USER": "<@{{opponent}}>, вам запропонували зіграти в хрестики-нуліки",
|
"INVITE_USER": "<@{{opponent}}>, вам запропонували зіграти в хрестики-нуліки",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Повертає аватар користувача",
|
"DESCRIPTION": "Повертає аватар користувача",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "avatar\navatar user:@Jonny_Bro#4226",
|
"EXAMPLES": "avatar\navatar user:@jonny_bro",
|
||||||
"SERVER": "Аватар сервера?"
|
"SERVER": "Аватар сервера?"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Надіслати скаргу до спеціального каналу",
|
"DESCRIPTION": "Надіслати скаргу до спеціального каналу",
|
||||||
"USAGE": "[@user] (message)",
|
"USAGE": "[@user] (message)",
|
||||||
"EXAMPLES": "report user:@Jonny_Bro#4226 message:Порушення правил",
|
"EXAMPLES": "report user:@jonny_bro message:Порушення правил",
|
||||||
"MISSING_CHANNEL": "Канал для скарг не налаштований",
|
"MISSING_CHANNEL": "Канал для скарг не налаштований",
|
||||||
"INVALID_USER": "Ви не можете поскаржитися на себе",
|
"INVALID_USER": "Ви не можете поскаржитися на себе",
|
||||||
"SUCCESS": "Ваша скарга надіслана в {{channel}}",
|
"SUCCESS": "Ваша скарга надіслана в {{channel}}",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Показати інформацію про користувача",
|
"DESCRIPTION": "Показати інформацію про користувача",
|
||||||
"USAGE": "(@user)",
|
"USAGE": "(@user)",
|
||||||
"EXAMPLES": "userinfo\nuserinfo user:@Jonny_Bro#4226",
|
"EXAMPLES": "userinfo\nuserinfo user:@jonny_bro",
|
||||||
"CUSTOM": "Стан користувача",
|
"CUSTOM": "Стан користувача",
|
||||||
"NO_ACTIVITY": "Не грає",
|
"NO_ACTIVITY": "Не грає",
|
||||||
"NO_ROLE": "Немає ролі",
|
"NO_ROLE": "Немає ролі",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"BOT_USER": "Ви не можете зробити це з ботом",
|
"BOT_USER": "Ви не можете зробити це з ботом",
|
||||||
|
"CANT_DM": "Я не можу надіслати Вам особисте повідомлення, перевірте налаштування конфіденційності.",
|
||||||
"FORCE_STOP": "Гра примусово закінчена, {{user}}, ніхто не переміг (загадане число - {{number}}).",
|
"FORCE_STOP": "Гра примусово закінчена, {{user}}, ніхто не переміг (загадане число - {{number}}).",
|
||||||
"LEVEL_UP": "Ви досягли наступного рівня! Ваш новий рівень: **{{level}}**",
|
"LEVEL_UP": "Ви досягли наступного рівня! Ваш новий рівень: **{{level}}**",
|
||||||
"GUILD_ONLY": "Цю команду можна використовувати лише на сервері",
|
"GUILD_ONLY": "Цю команду можна використовувати лише на сервері",
|
||||||
|
|
8
languages/uk-UA/moderation/ban.json
Normal file
8
languages/uk-UA/moderation/ban.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Забанити користувача",
|
||||||
|
"USAGE": "[@user] [reason]",
|
||||||
|
"EXAMPLES": "ban user:@jonny_bro reason:Порушення правил сервера",
|
||||||
|
"YOURSELF": "Ви не можете забанити себе",
|
||||||
|
"SUPERIOR": "Ви не можете забанити даного користувача (або я не можу цього зробити)",
|
||||||
|
"SUCCESS": "{{user}} був забанений з причини **{{reason}}**"
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Очищення повідомлень у каналі",
|
"DESCRIPTION": "Очищення повідомлень у каналі",
|
||||||
"USAGE": "[option] (@user)",
|
"USAGE": "[option] (@user)",
|
||||||
"EXAMPLES": "clear option:10\nclear option:10 user:@Jonny_Bro#4226\nclear option:all",
|
"EXAMPLES": "clear option:10\nclear option:10 user:@jonny_bro\nclear option:all",
|
||||||
"OPTION": "Ціле число / all",
|
"OPTION": "Ціле число / all",
|
||||||
"REQUIRE_ID_USER": "Вкажіть користувача або ID",
|
"REQUIRE_ID_USER": "Вкажіть користувача або ID",
|
||||||
"ALL_CONFIRM": "**Всі повідомлення в каналі будуть видалені! Ви впевнені?**",
|
"ALL_CONFIRM": "**Всі повідомлення в каналі будуть видалені! Ви впевнені?**",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Зняти усі попередження з користувача",
|
"DESCRIPTION": "Зняти усі попередження з користувача",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "clearwarns user:@Jonny_Bro#4226",
|
"EXAMPLES": "clearwarns user:@jonny_bro",
|
||||||
"SUCCESS": "Попередження користувача {{user}} видалено"
|
"SUCCESS": "Попередження користувача {{user}} видалено"
|
||||||
}
|
}
|
8
languages/uk-UA/moderation/kick.json
Normal file
8
languages/uk-UA/moderation/kick.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Вигнати користувача",
|
||||||
|
"USAGE": "[@user] [reason]",
|
||||||
|
"EXAMPLES": "kick user:@jonny_bro reason:Зайдеш завтра коли я перестану ображатись",
|
||||||
|
"YOURSELF": "Ви не можете вигнати себе",
|
||||||
|
"SUPERIOR": "Ви не можете вигнати даного користувача (або я не можу цього зробити)",
|
||||||
|
"SUCCESS": "{{user}} був вигнаний з причини **{{reason}}**"
|
||||||
|
}
|
8
languages/uk-UA/moderation/untimeout.json
Normal file
8
languages/uk-UA/moderation/untimeout.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"DESCRIPTION": "Зняти таймаут з користувача",
|
||||||
|
"USAGE": "[@user]",
|
||||||
|
"EXAMPLES": "untimeout user:@jonny_bro",
|
||||||
|
"YOURSELF": "Ви не можете зняти таймаут з себе",
|
||||||
|
"NOT_TIMEDOUT": "Даний користувач не перебуває у таймауті",
|
||||||
|
"SUCCESS": "Таймаут з {{user}} знятий"
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Показати список порушень користувача",
|
"DESCRIPTION": "Показати список порушень користувача",
|
||||||
"USAGE": "[@user]",
|
"USAGE": "[@user]",
|
||||||
"EXAMPLES": "warns user:@Jonny_Bro#4226",
|
"EXAMPLES": "warns user:@jonny_bro",
|
||||||
"SANCTIONS_OF": "Порушення {{member}}",
|
"SANCTIONS_OF": "Порушення {{member}}",
|
||||||
"NO_SANCTIONS": "**{{member}}** не має порушень"
|
"NO_SANCTIONS": "**{{member}}** не має порушень"
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"DESCRIPTION": "Дозволяє змінювати дані користувача",
|
"DESCRIPTION": "Дозволяє змінювати дані користувача",
|
||||||
"USAGE": "[set/add] [type] [@user] [int]",
|
"USAGE": "[set/add] [type] [@user] [int]",
|
||||||
"EXAMPLES": "debug set type:Рівень user:@Jonny_Bro#4226 int:100",
|
"EXAMPLES": "debug set type:Рівень user:@jonny_bro int:100",
|
||||||
"TYPE": "Тип даних",
|
"TYPE": "Тип даних",
|
||||||
"SET": "Встановити значення",
|
"SET": "Встановити значення",
|
||||||
"ADD": "Додати до значення",
|
"ADD": "Додати до значення",
|
||||||
|
|
68
package.json
68
package.json
|
@ -51,71 +51,25 @@
|
||||||
"ecmaVersion": 2020
|
"ecmaVersion": 2020
|
||||||
},
|
},
|
||||||
"rules": {
|
"rules": {
|
||||||
"arrow-spacing": [
|
"arrow-spacing": ["warn", { "before": true, "after": true }],
|
||||||
"warn",
|
"comma-dangle": ["error", "always-multiline"],
|
||||||
{
|
|
||||||
"before": true,
|
|
||||||
"after": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"comma-dangle": [
|
|
||||||
"error",
|
|
||||||
"always-multiline"
|
|
||||||
],
|
|
||||||
"comma-spacing": "error",
|
"comma-spacing": "error",
|
||||||
"comma-style": "error",
|
"comma-style": "error",
|
||||||
"dot-location": [
|
"dot-location": ["error", "property"],
|
||||||
"error",
|
|
||||||
"property"
|
|
||||||
],
|
|
||||||
"handle-callback-err": "off",
|
"handle-callback-err": "off",
|
||||||
"indent": [
|
"indent": ["error", "tab", { "SwitchCase": 1 }],
|
||||||
"error",
|
|
||||||
"tab",
|
|
||||||
{
|
|
||||||
"SwitchCase": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"keyword-spacing": "error",
|
"keyword-spacing": "error",
|
||||||
"max-nested-callbacks": [
|
"max-nested-callbacks": ["error", { "max": 4 }],
|
||||||
"error",
|
"max-statements-per-line": ["error", { "max": 2 }],
|
||||||
{
|
|
||||||
"max": 4
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"max-statements-per-line": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"max": 2
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"no-console": "off",
|
"no-console": "off",
|
||||||
"no-multi-spaces": "error",
|
"no-multi-spaces": "error",
|
||||||
"no-multiple-empty-lines": [
|
"no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 1, "maxBOF": 0 }],
|
||||||
"error",
|
"no-trailing-spaces": ["error"],
|
||||||
{
|
|
||||||
"max": 2,
|
|
||||||
"maxEOF": 1,
|
|
||||||
"maxBOF": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"no-trailing-spaces": [
|
|
||||||
"error"
|
|
||||||
],
|
|
||||||
"no-var": "error",
|
"no-var": "error",
|
||||||
"object-curly-spacing": [
|
"object-curly-spacing": ["error", "always"],
|
||||||
"error",
|
|
||||||
"always"
|
|
||||||
],
|
|
||||||
"prefer-const": "error",
|
"prefer-const": "error",
|
||||||
"quotes": [
|
"quotes": ["error", "double"],
|
||||||
"error",
|
"semi": ["error", "always"],
|
||||||
"double"
|
|
||||||
],
|
|
||||||
"semi": [
|
|
||||||
"error",
|
|
||||||
"always"
|
|
||||||
],
|
|
||||||
"space-in-parens": "error",
|
"space-in-parens": "error",
|
||||||
"space-infix-ops": "error",
|
"space-infix-ops": "error",
|
||||||
"space-unary-ops": "error",
|
"space-unary-ops": "error",
|
||||||
|
|
Loading…
Reference in a new issue