mirror of
https://github.com/JonnyBro/JaBa.git
synced 2024-11-21 20:54:58 +05:00
Перенесена категория General
Удалён мусор и ненужные комментарии
This commit is contained in:
parent
d11a4a9257
commit
5f4c53b072
67 changed files with 1180 additions and 1337 deletions
|
@ -1,5 +1,4 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Resolvers = require("../../helpers/resolvers");
|
||||
const Command = require("../../base/Command");
|
||||
|
||||
class Autorole extends Command {
|
||||
constructor(client) {
|
||||
|
|
|
@ -31,10 +31,6 @@ class Configuration extends Command {
|
|||
});
|
||||
|
||||
embed.addFields([
|
||||
{ // Guild prefix
|
||||
name: message.translate("administration/configuration:PREFIX_TITLE"),
|
||||
value: guildData.prefix
|
||||
},
|
||||
{ // Ignored channels
|
||||
name: message.translate("administration/configuration:IGNORED_CHANNELS_TITLE"),
|
||||
value: guildData.ignoredChannels.length > 0 ? guildData.ignoredChannels.map((ch) => `<#${ch}>`).join(", ") : message.translate("administration/configuration:NO_IGNORED_CHANNELS")
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Resolvers = require("../../helpers/resolvers");
|
||||
const Command = require("../../base/Command");
|
||||
|
||||
class Goodbye extends Command {
|
||||
constructor(client) {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Resolvers = require("../../helpers/resolvers");
|
||||
const Command = require("../../base/Command");
|
||||
|
||||
class Setbirthdays extends Command {
|
||||
constructor(client) {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Resolvers = require("../../helpers/resolvers");
|
||||
const Command = require("../../base/Command");
|
||||
|
||||
class Setmodlogs extends Command {
|
||||
constructor(client) {
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
const Command = require("../../base/Command");
|
||||
|
||||
class Setprefix extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "setprefix",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: true,
|
||||
aliases: ["setp"],
|
||||
memberPermissions: ["MANAGE_GUILD"],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 1000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
const prefix = args[0];
|
||||
if (!prefix) return message.error("administration/setprefix:MISSING_PREFIX");
|
||||
if (prefix.length > 5) return message.error("administration/setprefix:TOO_LONG");
|
||||
|
||||
data.guild.prefix = prefix;
|
||||
data.guild.save();
|
||||
|
||||
return message.success("administration/setprefix:SUCCESS", {
|
||||
prefix
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Setprefix;
|
|
@ -1,5 +1,4 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Resolvers = require("../../helpers/resolvers");
|
||||
const Command = require("../../base/Command");
|
||||
|
||||
class Setreports extends Command {
|
||||
constructor(client) {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Resolvers = require("../../helpers/resolvers");
|
||||
const Command = require("../../base/Command");
|
||||
|
||||
class Setsuggests extends Command {
|
||||
constructor(client) {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Resolvers = require("../../helpers/resolvers");
|
||||
const Command = require("../../base/Command");
|
||||
|
||||
class Welcome extends Command {
|
||||
constructor(client) {
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
const Command = require("../../base/Command");
|
||||
|
||||
class Avatar extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "avatar",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: [],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS", "ATTACH_FILES"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 3000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args) {
|
||||
let user = await this.client.resolveUser(args[0]);
|
||||
if (!user) user = message.author;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
size: 512
|
||||
});
|
||||
|
||||
if (args[0] === "link") return message.reply({ content: `<${avatarURL}>` });
|
||||
|
||||
message.reply({
|
||||
files: [{
|
||||
attachment: avatarURL
|
||||
}]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Avatar;
|
|
@ -1,57 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
{ EmbedBuilder, parseEmoji } = require("discord.js");
|
||||
|
||||
class EmojiInfo extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "emoji",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["emi"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 2000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
const rawEmoji = args[0];
|
||||
if (!rawEmoji) return message.error("administration/stealemoji:MISSING_EMOJI");
|
||||
|
||||
const parsedEmoji = parseEmoji(rawEmoji);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: message.translate("general/emoji:TITLE", {
|
||||
emoji: parsedEmoji.name
|
||||
})
|
||||
})
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: message.translate("general/emoji:NAME"),
|
||||
value: parsedEmoji.name
|
||||
},
|
||||
{
|
||||
name: message.translate("general/emoji:ANIMATED"),
|
||||
value: parsedEmoji.animated ? message.translate("common:YES") : message.translate("common:NO")
|
||||
},
|
||||
{
|
||||
name: message.translate("general/emoji:ID"),
|
||||
value: parsedEmoji.id ? parsedEmoji.id.toString() : message.translate("general/emoji:STANDART")
|
||||
}
|
||||
]);
|
||||
|
||||
message.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = EmojiInfo;
|
|
@ -1,105 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Discord = require("discord.js"),
|
||||
gamedig = require("gamedig");
|
||||
|
||||
class Minecraft extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "minecraft",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["mc"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 1000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
const ip = args[0];
|
||||
if (!ip) return message.error("general/minecraft:MISSING_IP");
|
||||
|
||||
const favicon = `https://eu.mc-api.net/v3/server/favicon/${ip}`;
|
||||
let options = {
|
||||
type: "minecraft",
|
||||
host: ip
|
||||
};
|
||||
|
||||
if (ip.split(":").length > 1) {
|
||||
const ipp = ip.split(":");
|
||||
options = {
|
||||
type: "minecraft",
|
||||
host: ipp[0],
|
||||
port: ipp[1]
|
||||
};
|
||||
}
|
||||
|
||||
const m = await message.sendT("misc:PLEASE_WAIT", null, {
|
||||
prefixEmoji: "loading"
|
||||
});
|
||||
|
||||
let json = null;
|
||||
|
||||
await gamedig.query(options).then((res) => {
|
||||
json = res;
|
||||
}).catch((err) => {
|
||||
console.error(err);
|
||||
});
|
||||
|
||||
if (!json) {
|
||||
options.type = "minecraftpe";
|
||||
await gamedig.query(options).then((res) => {
|
||||
json = res;
|
||||
}).catch((err) => {
|
||||
console.error(err);
|
||||
});
|
||||
}
|
||||
|
||||
if (!json) return m.error("general/minecraft:FAILED", null, { edit: true });
|
||||
|
||||
const embed = new Discord.EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: json.name
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: message.translate("general/minecraft:FIELD_STATUS"),
|
||||
value: message.translate("general/minecraft:ONLINE")
|
||||
},
|
||||
{
|
||||
name: message.translate("general/minecraft:FIELD_CONNECTED"),
|
||||
value: `**${(json.raw.players ? json.raw.players.online : json.players.length)}** ${message.getNoun((json.raw.players ? json.raw.players.online : json.players.length), message.translate("misc:NOUNS:PLAYERS:1"), message.translate("misc:NOUNS:PLAYERS:2"), message.translate("misc:NOUNS:PLAYERS:5"))} / **${(json.raw.players ? json.raw.players.max : json.maxplayers)}** ${message.getNoun((json.raw.players ? json.raw.players.max : json.maxplayers), message.translate("misc:NOUNS:PLAYERS:1"), message.translate("misc:NOUNS:PLAYERS:2"), message.translate("misc:NOUNS:PLAYERS:5"))}`
|
||||
},
|
||||
{
|
||||
name: message.translate("general/minecraft:FIELD_IP"),
|
||||
value: json.connect,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: message.translate("general/minecraft:FIELD_VERSION"),
|
||||
value: json.raw.vanilla.raw.version.name,
|
||||
inline: true
|
||||
|
||||
},
|
||||
{
|
||||
name: message.translate("general/minecraft:FIELD_PING"),
|
||||
value: json.raw.vanilla.ping.toString()
|
||||
}
|
||||
])
|
||||
.setColor(data.config.embed.color)
|
||||
.setThumbnail(favicon)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
});
|
||||
|
||||
m.edit({
|
||||
content: null,
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Minecraft;
|
|
@ -1,45 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
ms = require("ms");
|
||||
|
||||
class Remindme extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "remindme",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["reminder", "remind", "rem"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 1000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
const time = args[0];
|
||||
if (!time || isNaN(ms(time))) return message.error("misc:INVALID_TIME");
|
||||
|
||||
const msg = args.slice(1).join(" ");
|
||||
if (!msg) return message.error("general/remindme:MISSING_MESSAGE");
|
||||
|
||||
const rData = {
|
||||
message: msg,
|
||||
createdAt: Date.now(),
|
||||
sendAt: Date.now() + ms(time)
|
||||
};
|
||||
|
||||
if (!data.userData.reminds) data.userData.reminds = [];
|
||||
|
||||
|
||||
data.userData.reminds.push(rData);
|
||||
data.userData.markModified("reminds");
|
||||
data.userData.save();
|
||||
this.client.databaseCache.usersReminds.set(message.author.id, data.userData);
|
||||
|
||||
message.success("general/remindme:SAVED");
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Remindme;
|
|
@ -1,86 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
{ EmbedBuilder, parseEmoji} = require("discord.js");
|
||||
|
||||
class Report extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "report",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: true,
|
||||
aliases: ["repo"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 2000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
if (message.author.id === "285109105717280768") return message.reply({ content: "Пошёл нахуй фахон" });
|
||||
|
||||
const repChannel = message.guild.channels.cache.get(data.guild.plugins.reports);
|
||||
if (!repChannel) return message.error("general/report:MISSING_CHANNEL");
|
||||
|
||||
const member = await this.client.resolveMember(args[0], message.guild);
|
||||
if (!member) return message.error("general/report:MISSING_USER");
|
||||
if (member.id === message.author.id) return message.error("general/report:INVALID_USER");
|
||||
|
||||
const rep = args.slice(1).join(" ");
|
||||
if (!rep) return message.error("general/report:MISSING_REASON");
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: message.translate("general/report:TITLE", {
|
||||
user: member.user.tag
|
||||
}),
|
||||
iconURL: message.author.displayAvatarURL({
|
||||
extension: "png",
|
||||
size: 512
|
||||
})
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: message.translate("common:AUTHOR"),
|
||||
value: message.author.tag,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: message.translate("common:DATE"),
|
||||
value: this.client.printDate(new Date(Date.now())),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: message.translate("common:REASON"),
|
||||
value: rep,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: message.translate("common:USER"),
|
||||
value: `\`${member.user.tag}\` (${member.user.toString()})`,
|
||||
inline: true
|
||||
}
|
||||
])
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
});
|
||||
|
||||
const success = parseEmoji(this.client.customEmojis.cool).id;
|
||||
const error = parseEmoji(this.client.customEmojis.notcool).id;
|
||||
|
||||
repChannel.send({
|
||||
embeds: [embed]
|
||||
}).then(async (m) => {
|
||||
await m.react(success);
|
||||
await m.react(error);
|
||||
});
|
||||
|
||||
message.success("general/report:SUCCESS", {
|
||||
channel: repChannel.toString()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Report;
|
|
@ -1,101 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Discord = require("discord.js");
|
||||
|
||||
class Serverinfo extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "serverinfo",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: true,
|
||||
aliases: ["si"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 1000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
let guild = message.guild;
|
||||
|
||||
if (args[0]) {
|
||||
let found = this.client.guilds.cache.get(args[0]);
|
||||
if (!found) {
|
||||
found = this.client.guilds.cache.find(g => g.name.includes(args.join(" ")) || g.id === args[0]);
|
||||
if (found) guild = found;
|
||||
}
|
||||
}
|
||||
|
||||
await guild.members.fetch();
|
||||
const owner = await guild.fetchOwner();
|
||||
|
||||
const embed = new Discord.EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: guild.name,
|
||||
iconURL: guild.iconURL()
|
||||
})
|
||||
.setThumbnail(guild.iconURL())
|
||||
.addFields([
|
||||
{
|
||||
name: this.client.customEmojis.link + " " + message.translate("general/serverinfo:LINK"),
|
||||
value: `[${message.translate("general/serverinfo:LINK_TEXT")}](${this.client.config.dashboard.baseURL}/stats/${guild.id})`
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.title + message.translate("common:NAME"),
|
||||
value: guild.name,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.calendar + message.translate("common:CREATION"),
|
||||
value: this.client.printDate(guild.createdAt),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.users + message.translate("common:MEMBERS"),
|
||||
value: `${guild.members.cache.filter(m => !m.user.bot).size} ${message.getNoun(guild.members.cache.filter(m => !m.user.bot).size, message.translate("misc:NOUNS:MEMBERS:1"), message.translate("misc:NOUNS:MEMBERS:2"), message.translate("misc:NOUNS:MEMBERS:5"))}` +
|
||||
"\n" + `${guild.members.cache.filter(m => m.user.bot).size} ${message.getNoun(guild.members.cache.filter(m => m.user.bot).size, message.translate("misc:NOUNS:BOTS:1"), message.translate("misc:NOUNS:BOTS:2"), message.translate("misc:NOUNS:BOTS:5"))}`,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.afk + message.translate("general/serverinfo:AFK_CHANNEL"),
|
||||
value: guild.afkChannel ? guild.afkChannel.toString() : message.translate("general/serverinfo:NO_AFK_CHANNEL"),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.id + message.translate("common:ID"),
|
||||
value: guild.id,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.crown + message.translate("common:OWNER"),
|
||||
value: owner.toString(),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.boost + message.translate("general/serverinfo:BOOSTS"),
|
||||
value: guild.premiumSubscriptionCount.toString() || "0",
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.channels + message.translate("common:CHANNELS"),
|
||||
value: `${guild.channels.cache.filter(c => c.type === "GUILD_TEXT").size} ${message.getNoun(guild.channels.cache.filter(c => c.type === "GUILD_TEXT").size, message.translate("misc:NOUNS:TEXT:1"), message.translate("misc:NOUNS:TEXT:2"), message.translate("misc:NOUNS:TEXT:5"))}` +
|
||||
"\n" + `${guild.channels.cache.filter(c => c.type === "GUILD_VOICE").size} ${message.getNoun(guild.channels.cache.filter(c => c.type === "GUILD_VOICE").size, message.translate("misc:NOUNS:VOICE:1"), message.translate("misc:NOUNS:VOICE:2"), message.translate("misc:NOUNS:VOICE:5"))}` +
|
||||
"\n" + `${guild.channels.cache.filter(c => c.type === "GUILD_CATEGORY").size} ${message.getNoun(guild.channels.cache.filter(c => c.type === "GUILD_CATEGORY").size, message.translate("misc:NOUNS:CATEGORY:1"), message.translate("misc:NOUNS:CATEGORY:2"), message.translate("misc:NOUNS:CATEGORY:5"))}`,
|
||||
inline: true
|
||||
}
|
||||
])
|
||||
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
});
|
||||
|
||||
message.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Serverinfo;
|
|
@ -1,49 +0,0 @@
|
|||
const Command = require("../../base/Command");
|
||||
|
||||
class Setafk extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "setafk",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["afk"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 2000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
const reason = args.join(" ");
|
||||
if (!reason || reason.length > 250) return message.error("general/setafk:MISSING_REASON");
|
||||
|
||||
if (reason === "delete") {
|
||||
if (data.userData.afk) {
|
||||
data.userData.afk = null;
|
||||
data.userData.save();
|
||||
|
||||
return message.sendT("general/setafk:DELETED", {
|
||||
username: message.author.username
|
||||
});
|
||||
}
|
||||
} else {
|
||||
data.userData.afk = reason;
|
||||
data.userData.save();
|
||||
|
||||
const m = await message.success("general/setafk:SUCCESS", {
|
||||
reason,
|
||||
prefix: message.guild ? data.guild.prefix : ""
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
if (m.deletable) m.delete();
|
||||
if (message.deletable) message.delete();
|
||||
}, 10 * 1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Setafk;
|
|
@ -1,42 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Discord = require("discord.js"),
|
||||
fetch = require("node-fetch");
|
||||
|
||||
class ShortURL extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "shorturl",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["minimize"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 1000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
const url = args[0];
|
||||
if (!url) return message.error("general/shorturl:MISSING_URL");
|
||||
|
||||
const res = await fetch(`https://is.gd/create.php?format=simple&url=${encodeURI(url)}`);
|
||||
const body = await res.text();
|
||||
|
||||
if (body === "Error: Please enter a valid URL to shorten") return message.error("general/shorturl:MISSING_URL");
|
||||
|
||||
const embed = new Discord.EmbedBuilder()
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
})
|
||||
.setDescription(body);
|
||||
message.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ShortURL;
|
|
@ -1,50 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
{ PermissionsBitField, EmbedBuilder } = require("discord.js");
|
||||
|
||||
class Staff extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "staff",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: true,
|
||||
aliases: ["staf"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 1000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
await message.guild.members.fetch();
|
||||
const administrators = message.guild.members.cache.filter((m) => m.permissions.has(PermissionsBitField.Flags.Administrator) && !m.user.bot);
|
||||
const moderators = message.guild.members.cache.filter((m) => !administrators.has(m.id) && m.permissions.has(PermissionsBitField.Flags.ManageMessages) && !m.user.bot);
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: message.translate("general/staff:TITLE", {
|
||||
guild: message.guild.name
|
||||
})
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: message.translate("general/staff:ADMINS"),
|
||||
value: (administrators.size > 0 ? administrators.map((a) => `${a.presence ? this.client.customEmojis.status[a.presence.status] : this.client.customEmojis.status.offline} | <@${a.user.id}>`).join("\n") : message.translate("general/staff:NO_ADMINS"))
|
||||
},
|
||||
{
|
||||
name: message.translate("general/staff:MODS"),
|
||||
value: (moderators.size > 0 ? moderators.map((m) => `${m.presence ? this.client.customEmojis.status[m.presence.status] : this.client.customEmojis.status.offline} | <@${m.user.id}>`).join("\n") : message.translate("general/staff:NO_MODS"))
|
||||
}
|
||||
])
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
});
|
||||
message.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Staff;
|
|
@ -1,90 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
{ PermissionsBitField, EmbedBuilder, version } = require("discord.js");
|
||||
|
||||
class Stats extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "stats",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["stat"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 1000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
const hiddenGuild = await this.client.guilds.fetch("568120814776614924");
|
||||
const users = this.client.users.cache.size - hiddenGuild.memberCount;
|
||||
const servers = this.client.guilds.cache.size - 1;
|
||||
|
||||
const statsEmbed = new EmbedBuilder()
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
})
|
||||
.setAuthor({
|
||||
name: message.translate("common:STATS")
|
||||
})
|
||||
.setDescription(message.translate("general/stats:MADE"))
|
||||
.addFields([
|
||||
{
|
||||
name: this.client.customEmojis.stats + " " + message.translate("general/stats:COUNTS_TITLE"),
|
||||
value: message.translate("general/stats:COUNTS_CONTENT", {
|
||||
servers: servers,
|
||||
users: users
|
||||
}),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.version + " " + message.translate("general/stats:VERSIONS_TITLE"),
|
||||
value: `\`Discord.js: v${version}\`\n\`Nodejs: v${process.versions.node}\``,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.ram + " " + message.translate("general/stats:RAM_TITLE"),
|
||||
value: `\`${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)}MB\``,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.status.online + " " + message.translate("general/stats:ONLINE_TITLE"),
|
||||
value: message.translate("general/stats:ONLINE_CONTENT", {
|
||||
time: this.client.convertTime(Date.now() + this.client.uptime, true, true)
|
||||
})
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.voice + " " + message.translate("general/stats:MUSIC_TITLE"),
|
||||
value: message.translate("general/stats:MUSIC_CONTENT", {
|
||||
count: `${this.client.player.voices.collection.size} ${message.getNoun(this.client.player.voices.collection.size, message.translate("misc:NOUNS:SERVERS:1"), message.translate("misc:NOUNS:SERVERS:2"), message.translate("misc:NOUNS:SERVERS:5"))}`
|
||||
})
|
||||
},
|
||||
{
|
||||
name: message.translate("general/stats:CREDITS_TITLE"),
|
||||
value: message.translate("general/stats:CREDITS_CONTENT", {
|
||||
donators: ["**`Добрый Спецназ#8801`** - Тестер, генератор идей"].join("\n"),
|
||||
translators: ["**`Jonny_Bro#4226`** - :flag_ru:", "**`[ДАННЫЕ УДАЛЕНЫ]#4507`** - :flag_ua: (НЕ ОБНОВЛЕН!)"].join("\n")
|
||||
})
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.link + " " + message.translate("general/stats:LINKS_TITLE"),
|
||||
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
|
||||
})
|
||||
}
|
||||
]);
|
||||
|
||||
message.reply({
|
||||
embeds: [statsEmbed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Stats;
|
|
@ -1,76 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
{ EmbedBuilder, parseEmoji } = require("discord.js");
|
||||
|
||||
class Suggest extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "suggest",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: true,
|
||||
aliases: ["sugg"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 2000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
if (message.author.id === "285109105717280768") return message.reply({ content: "Пошёл нахуй фахон" });
|
||||
|
||||
const suggChannel = message.guild.channels.cache.get(data.guild.plugins.suggestions);
|
||||
if (!suggChannel) return message.error("general/suggest:MISSING_CHANNEL");
|
||||
|
||||
const sugg = args.join(" ");
|
||||
if (!sugg) return message.error("general/suggest:MISSING_CONTENT");
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: message.translate("general/suggest:TITLE", {
|
||||
user: message.author.username
|
||||
}),
|
||||
iconURL: message.author.displayAvatarURL({
|
||||
extension: "png",
|
||||
size: 512,
|
||||
})
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: message.translate("common:AUTHOR"),
|
||||
value: `\`${message.author.username}#${message.author.discriminator}\``,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: message.translate("common:DATE"),
|
||||
value: this.client.printDate(new Date(Date.now())),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: message.translate("common:CONTENT"),
|
||||
value: sugg
|
||||
}
|
||||
])
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
});
|
||||
|
||||
const success = parseEmoji(this.client.customEmojis.cool).id;
|
||||
const error = parseEmoji(this.client.customEmojis.notcool).id;
|
||||
|
||||
suggChannel.send({
|
||||
embeds: [embed]
|
||||
}).then(async (m) => {
|
||||
await m.react(success);
|
||||
await m.react(error);
|
||||
});
|
||||
|
||||
message.success("general/suggest:SUCCESS", {
|
||||
channel: suggChannel.toString()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Suggest;
|
|
@ -1,147 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Discord = require("discord.js");
|
||||
|
||||
class Userinfo extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "userinfo",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["ui"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 1000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
let displayPresence = true;
|
||||
|
||||
const isID = !isNaN(args[0]);
|
||||
|
||||
let user;
|
||||
if (!args[0]) user = message.author;
|
||||
if (message.mentions.users.first()) user = message.mentions.users.first();
|
||||
|
||||
if (isID && !user) {
|
||||
user = this.client.users.cache.get(args[0]);
|
||||
if (!user) {
|
||||
user = await this.client.users.fetch(args[0], true).catch(() => {});
|
||||
displayPresence = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!user) return message.error("general/userinfo:INVALID_USER");
|
||||
|
||||
let member = null;
|
||||
if (message.guild) member = await message.guild.members.fetch(user).catch(() => {});
|
||||
|
||||
const embed = new Discord.EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: `${user.tag} (${user.id})`,
|
||||
iconURL: user.displayAvatarURL({
|
||||
extension: "png",
|
||||
size: 512
|
||||
})
|
||||
})
|
||||
.setThumbnail(user.displayAvatarURL())
|
||||
.addFields([
|
||||
{
|
||||
name: ":man: " + message.translate("common:USERNAME"),
|
||||
value: member.nickname || user.username,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.discriminator + " " + message.translate("common:DISCRIMINATOR"),
|
||||
value: user.discriminator,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.bot + " " + message.translate("common:ROBOT"),
|
||||
value: (user.bot ? message.translate("common:YES") : message.translate("common:NO")),
|
||||
inlinee: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.calendar + " " + message.translate("common:CREATION"),
|
||||
value: this.client.printDate(user.createdAt),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.avatar + " " + message.translate("common:AVATAR"),
|
||||
value: member.displayAvatarURL({
|
||||
extension: "png",
|
||||
size: 512
|
||||
})
|
||||
}
|
||||
])
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
});
|
||||
|
||||
if (displayPresence) {
|
||||
if (member.presence.activities[0].name === "Custom Status") {
|
||||
embed.addFields([
|
||||
{
|
||||
name: this.client.customEmojis.games + " " + message.translate("common:GAME"),
|
||||
value: (member.presence.activities[0] ? `Пользовательский статус\n${member.presence.activities[0].state || message.translate("common:NOT_DEFINED")}` : message.translate("general/userinfo:NO_GAME")),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.status[member.presence.status] + " " + message.translate("common:STATUS"),
|
||||
value: message.translate("common:STATUS_" + (member.presence.status.toUpperCase())),
|
||||
inline: true
|
||||
}
|
||||
]);
|
||||
} else {
|
||||
embed.addFields([
|
||||
{
|
||||
name: this.client.customEmojis.games + " " + message.translate("common:GAME"),
|
||||
value: (member.presence.activities[0] ? `${member.presence.activities[0].name}\n${member.presence.activities[0].details}\n${member.presence.activities[0].state}` : message.translate("general/userinfo:NO_GAME")),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.status[member.presence.status] + " " + message.translate("common:STATUS"),
|
||||
value: message.translate("common:STATUS_" + (member.presence.status.toUpperCase())),
|
||||
inline: true
|
||||
}
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
if (member) {
|
||||
embed.addFields([
|
||||
{
|
||||
name: this.client.customEmojis.calendar2 + " " + message.translate("common:JOIN"),
|
||||
value: this.client.printDate(member.joinedAt),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.color + " " + message.translate("common:COLOR"),
|
||||
value: member.displayHexColor,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.pencil + " " + message.translate("common:NICKNAME"),
|
||||
value: (member.nickname ? member.nickname : message.translate("general/userinfo:NO_NICKNAME")),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: this.client.customEmojis.roles + " " + message.translate("common:ROLES"),
|
||||
value: (member.roles.size > 10 ? member.roles.cache.map((r) => r).slice(0, 9).join(", ") + " " + message.translate("general/userinfo:MORE_ROLES", {
|
||||
count: member.roles.cache.size - 10
|
||||
}) : (member.roles.cache.size < 1) ? message.translate("general/userinfo:NO_ROLE") : member.roles.cache.map((r) => r).join(", "))
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
||||
message.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Userinfo;
|
|
@ -1,73 +0,0 @@
|
|||
const Command = require("../../base/Command"),
|
||||
Discord = require("discord.js"),
|
||||
fetch = require("node-fetch");
|
||||
|
||||
class Whois extends Command {
|
||||
constructor(client) {
|
||||
super(client, {
|
||||
name: "whois",
|
||||
dirname: __dirname,
|
||||
enabled: true,
|
||||
guildOnly: false,
|
||||
aliases: ["ip"],
|
||||
memberPermissions: [],
|
||||
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"],
|
||||
nsfw: false,
|
||||
ownerOnly: false,
|
||||
cooldown: 1000
|
||||
});
|
||||
}
|
||||
|
||||
async run(message, args, data) {
|
||||
if (!args[0]) return message.error("general/whois:NO_IP");
|
||||
|
||||
const whois = await fetch(`http://ip-api.com/json/${args[0]}?fields=status,message,continent,continentCode,country,countryCode,region,regionName,city,zip,timezone,currency,isp,org,as,mobile,proxy,hosting,query`).then(response => response.json());
|
||||
|
||||
if (whois.status === "fail") {
|
||||
const embed = new Discord.EmbedBuilder()
|
||||
.setDescription(whois.message)
|
||||
.setTitle(message.translate("general/whois:ERROR", {
|
||||
ip: args[0]
|
||||
}))
|
||||
.setColor(data.config.embed.color)
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
})
|
||||
.setTimestamp();
|
||||
return message.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
|
||||
const embed = new Discord.EmbedBuilder()
|
||||
.setTitle(message.translate("general/whois:INFO_ABOUT", {
|
||||
ip: args[0]
|
||||
}))
|
||||
.setFooter({
|
||||
text: data.config.embed.footer
|
||||
})
|
||||
.setColor(data.config.embed.color)
|
||||
.addFields(
|
||||
{ name: "IP", value: whois.query, inline: true },
|
||||
{ name: message.translate("general/whois:COUNTRY"), value: `${whois.country || message.translate("common:UNKNOWN")} (${whois.countryCode || message.translate("common:UNKNOWN")})`, inline: true },
|
||||
{ name: message.translate("general/whois:REGION"), value: `${whois.regionName || message.translate("common:UNKNOWN")} (${whois.region || message.translate("common:UNKNOWN")})`, inline: true },
|
||||
{ name: message.translate("general/whois:CITY"), value: `${whois.city || message.translate("common:UNKNOWN")}`, inline: true },
|
||||
{ name: message.translate("general/whois:ZIP"), value: `${whois.zip || message.translate("common:UNKNOWN")}`, inline: true },
|
||||
{ name: message.translate("general/whois:TIMEZONE"), value: `${whois.timezone || message.translate("common:UNKNOWN")}`, inline: true },
|
||||
{ name: message.translate("general/whois:CONTINENT"), value: `${whois.continent || message.translate("common:UNKNOWN")} (${whois.continentCode || message.translate("common:UNKNOWN")})`, inline: true },
|
||||
{ name: message.translate("general/whois:CURRENCY"), value: `${whois.currency || message.translate("common:UNKNOWN")}`, inline: true },
|
||||
{ name: message.translate("general/whois:ISP"), value: `${whois.isp || message.translate("common:UNKNOWN")}`, inline: true }
|
||||
)
|
||||
.setTimestamp();
|
||||
|
||||
if (whois.proxy == true) embed.addFields({ name: message.translate("general/whois:INFO"), value: message.translate("general/whois:PROXY") });
|
||||
else if (whois.mobile == true) embed.addFields({ name: message.translate("general/whois:INFO"), value: message.translate("general/whois:MOBILE") });
|
||||
else if (whois.hosting == true) embed.addFields({ name: message.translate("general/whois:INFO"), value: message.translate("general/whois:HOSTING") });
|
||||
|
||||
message.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Whois;
|
|
@ -3,51 +3,42 @@ const mongoose = require("mongoose"),
|
|||
languages = require("../languages/language-meta.json");
|
||||
|
||||
module.exports = mongoose.model("Guild", new Schema({
|
||||
/* REQUIRED */
|
||||
id: { type: String }, // Discord ID of the guild
|
||||
id: { type: String },
|
||||
|
||||
/* MEMBERSDATA */
|
||||
membersData: { type: Object, default: {} }, // Members data of the guild
|
||||
membersData: { type: Object, default: {} },
|
||||
members: [{ type: Schema.Types.ObjectId, ref: "Member" }],
|
||||
|
||||
/* CONFIGURATION */
|
||||
language: { type: String, default: languages.find((l) => l.default).name }, // Language of the guild
|
||||
plugins: { type: Object, default: { // Plugins data
|
||||
// Welcome messages
|
||||
language: { type: String, default: languages.find((l) => l.default).name },
|
||||
plugins: { type: Object, default: {
|
||||
welcome: {
|
||||
enabled: false, // Whether the welcome messages are enabled
|
||||
message: null, // The welcome message
|
||||
channel: null, // The channel to send the welcome messages
|
||||
withImage: null // Whether the welcome images are enabled
|
||||
enabled: false,
|
||||
message: null,
|
||||
channel: null,
|
||||
withImage: null
|
||||
},
|
||||
// Goodbye messages
|
||||
goodbye: {
|
||||
enabled: false, // Whether the goodbye messages are enabled
|
||||
message: null, // The goodbye message
|
||||
channel: null, // The channel to send the goodbye messages
|
||||
withImage: null // Whether the goodbye images are enabled
|
||||
enabled: false,
|
||||
message: null,
|
||||
channel: null,
|
||||
withImage: null
|
||||
},
|
||||
// Autorole
|
||||
autorole: {
|
||||
enabled: false, // Whether the autorole is enabled
|
||||
role: null // The role to add when a member join the server
|
||||
enabled: false,
|
||||
role: null
|
||||
},
|
||||
// Auto moderation
|
||||
automod: {
|
||||
enabled: false, // Whether the auto moderation is enabled
|
||||
ignored: [] // The channels in which the auto moderation is disabled
|
||||
enabled: false,
|
||||
ignored: []
|
||||
},
|
||||
// Auto sanctions
|
||||
warnsSanctions: {
|
||||
kick: false, // The number of warns required to kick the user
|
||||
ban: false // The number of warns required to ban the user
|
||||
kick: false,
|
||||
ban: false
|
||||
},
|
||||
suggestions: false, // the channel in which the suggestions will be sent
|
||||
modlogs: false, // the channel in which the moderation logs (mute, kick, ban, etc...) will be sent
|
||||
birthdays: false, // the channel in which birtdays announcements will be sent
|
||||
reports: false, // the channel in which the reports will be sent
|
||||
logs: false // the channel in which the logs (message deleted, etc...) will be sent
|
||||
suggestions: false,
|
||||
modlogs: false,
|
||||
birthdays: false,
|
||||
reports: false
|
||||
}},
|
||||
casesCount: { type: Number, default: 0 },
|
||||
autoDeleteModCommands: { type: Boolean, default: false }, // Whether to auto delete moderation commands
|
||||
autoDeleteModCommands: { type: Boolean, default: false },
|
||||
}));
|
32
base/JaBa.js
32
base/JaBa.js
|
@ -1,8 +1,5 @@
|
|||
const {/* EmbedBuilder, */Client, Collection, SlashCommandBuilder, ContextMenuCommandBuilder } = require("discord.js"),
|
||||
const { Client, Collection, SlashCommandBuilder, ContextMenuCommandBuilder } = require("discord.js"),
|
||||
{ GiveawaysManager } = require("discord-giveaways"),
|
||||
// { SoundCloudPlugin } = require("@distube/soundcloud"),
|
||||
// { SpotifyPlugin } = require("@distube/spotify"),
|
||||
// { YtDlpPlugin } = require("@distube/yt-dlp"),
|
||||
{ Player } = require("discord-player"),
|
||||
{ REST } = require("@discordjs/rest"),
|
||||
{ Routes } = require("discord-api-types/v10");
|
||||
|
@ -14,11 +11,10 @@ const BaseEvent = require("./BaseEvent.js"),
|
|||
path = require("path"),
|
||||
fs = require("fs").promises,
|
||||
mongoose = require("mongoose"),
|
||||
// DisTube = require("distube"),
|
||||
moment = require("moment");
|
||||
|
||||
moment.relativeTimeThreshold("s", 60);
|
||||
moment.relativeTimeThreshold("ss", 5);
|
||||
moment.relativeTimeThreshold("s", 60);
|
||||
moment.relativeTimeThreshold("m", 60);
|
||||
moment.relativeTimeThreshold("h", 60);
|
||||
moment.relativeTimeThreshold("d", 24);
|
||||
|
@ -28,18 +24,18 @@ moment.relativeTimeThreshold("M", 12);
|
|||
class JaBa extends Client {
|
||||
constructor(options) {
|
||||
super(options);
|
||||
this.config = require("../config"); // Load the config file
|
||||
this.customEmojis = require("../emojis"); // load the bot's emojis
|
||||
this.languages = require("../languages/language-meta"); // Load the bot's languages
|
||||
this.commands = new Collection(); // Creates new commands collection
|
||||
this.logger = require("../helpers/logger"); // Load the logger file
|
||||
this.wait = require("node:timers/promises").setTimeout; // client.wait(1000) - Wait 1 second
|
||||
this.functions = require("../helpers/functions"); // Load the functions file
|
||||
this.guildsData = require("../base/Guild"); // Guild mongoose model
|
||||
this.usersData = require("../base/User"); // User mongoose model
|
||||
this.membersData = require("../base/Member"); // Member mongoose model
|
||||
this.dashboard = require("../dashboard/app"); // Dashboard app
|
||||
this.states = {}; // Used for the dashboard
|
||||
this.config = require("../config");
|
||||
this.customEmojis = require("../emojis");
|
||||
this.languages = require("../languages/language-meta");
|
||||
this.commands = new Collection();
|
||||
this.logger = require("../helpers/logger");
|
||||
this.wait = require("node:timers/promises").setTimeout;
|
||||
this.functions = require("../helpers/functions");
|
||||
this.guildsData = require("../base/Guild");
|
||||
this.usersData = require("../base/User");
|
||||
this.membersData = require("../base/Member");
|
||||
this.dashboard = require("../dashboard/app");
|
||||
this.states = {};
|
||||
this.knownGuilds = [];
|
||||
|
||||
this.databaseCache = {};
|
||||
|
|
|
@ -1,30 +1,25 @@
|
|||
const mongoose = require("mongoose");
|
||||
|
||||
module.exports = mongoose.model("Member", new mongoose.Schema({
|
||||
/* REQUIRED */
|
||||
id: { type: String }, // Discord ID of the user
|
||||
guildID: { type: String }, // ID of the guild to which the member is connected
|
||||
id: { type: String },
|
||||
guildID: { type: String },
|
||||
|
||||
/* SERVER ECONOMY */
|
||||
money: { type: Number, default: 0 }, // Money of the user
|
||||
workStreak: { type: Number, default: 0 }, // work streak of the user
|
||||
bankSold: { type: Number, default: 0 }, // Bank sold of the user
|
||||
exp: { type: Number, default: 0 }, // Exp points of the user
|
||||
level: { type: Number, default: 0 }, // Level of the user
|
||||
transactions: { type: Array, default: [] }, // Transactions of the user
|
||||
money: { type: Number, default: 0 },
|
||||
workStreak: { type: Number, default: 0 },
|
||||
bankSold: { type: Number, default: 0 },
|
||||
exp: { type: Number, default: 0 },
|
||||
level: { type: Number, default: 0 },
|
||||
transactions: { type: Array, default: [] },
|
||||
|
||||
/* STATS */
|
||||
registeredAt: { type: Number, default: Date.now() }, // Registered date of the member
|
||||
registeredAt: { type: Number, default: Date.now() },
|
||||
|
||||
/* COOLDOWN */
|
||||
cooldowns: { type: Object, default: {
|
||||
work: 0,
|
||||
rob: 0
|
||||
}},
|
||||
|
||||
/* OTHER INFORMATIONS */
|
||||
sanctions: { type: Array, default: [] }, // Array of the member sanctions (mute, ban, kick, etc...)
|
||||
mute: { type: Object, default: { // The member mute infos
|
||||
sanctions: { type: Array, default: [] },
|
||||
mute: { type: Object, default: {
|
||||
muted: false,
|
||||
case: null,
|
||||
endDate: null
|
||||
|
|
26
base/User.js
26
base/User.js
|
@ -11,19 +11,15 @@ const genToken = () => {
|
|||
};
|
||||
|
||||
const userSchema = new mongoose.Schema({
|
||||
/* REQUIRED */
|
||||
id: { type: String }, // Discord ID of the user
|
||||
id: { type: String },
|
||||
|
||||
/* ECONOMY (GLOBAL) */
|
||||
rep: { type: Number, default: 0 }, // Reputation points of the user
|
||||
bio: { type: String }, // Biography of the user
|
||||
birthdate: { type: Number }, // Birthdate of the user (the timestamp)
|
||||
lover: { type: String }, // The person with whom the user is in a relationship
|
||||
rep: { type: Number, default: 0 },
|
||||
bio: { type: String },
|
||||
birthdate: { type: Number },
|
||||
lover: { type: String },
|
||||
|
||||
/* STATS */
|
||||
registeredAt: { type: Number, default: Date.now() }, // Registered date of the user
|
||||
registeredAt: { type: Number, default: Date.now() },
|
||||
|
||||
/* ACHIEVEMENTS */
|
||||
achievements: { type: Object, default: {
|
||||
married: {
|
||||
achieved: false,
|
||||
|
@ -76,16 +72,14 @@ const userSchema = new mongoose.Schema({
|
|||
}
|
||||
}},
|
||||
|
||||
/* COOLDOWN */
|
||||
cooldowns: { type: Object, default: {
|
||||
rep: 0
|
||||
}},
|
||||
|
||||
/* OTHER INFORMATIONS */
|
||||
afk: { type: String, default: null }, // The AFK reason (if any)
|
||||
reminds: { type: Array, default: [] }, // The reminds of the user
|
||||
logged: { type: Boolean, default: false }, // If the user is logged to the dashboard
|
||||
apiToken: { type: String, default: genToken() } // The API token of the user
|
||||
afk: { type: String, default: null },
|
||||
reminds: { type: Array, default: [] },
|
||||
logged: { type: Boolean, default: false },
|
||||
apiToken: { type: String, default: genToken() }
|
||||
});
|
||||
|
||||
userSchema.method("getAchievements", async function() {
|
||||
|
|
48
commands/General/afk.js
Normal file
48
commands/General/afk.js
Normal file
|
@ -0,0 +1,48 @@
|
|||
const { SlashCommandBuilder } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand");
|
||||
|
||||
class Afk extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("afk")
|
||||
.setDescription(client.translate("general/afk:DESCRIPTION"))
|
||||
.addStringOption(option => option.setName("message")
|
||||
.setDescription(client.translate("common:MESSAGE"))
|
||||
.setRequired(true)),
|
||||
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, data) {
|
||||
const reason = interaction.options.getString("message");
|
||||
|
||||
data.userData.afk = reason;
|
||||
data.userData.save();
|
||||
|
||||
interaction.success("general/afk:SUCCESS", {
|
||||
reason
|
||||
}, { ephemeral: true });
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Afk;
|
49
commands/General/avatar.js
Normal file
49
commands/General/avatar.js
Normal file
|
@ -0,0 +1,49 @@
|
|||
const { SlashCommandBuilder } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand");
|
||||
|
||||
class Avatar extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("avatar")
|
||||
.setDescription(client.translate("general/avatar:DESCRIPTION"))
|
||||
.addUserOption(option => option.setName("user")
|
||||
.setDescription(client.translate("common:USER"))),
|
||||
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 user = interaction.options.getUser("user") || interaction.user;
|
||||
const avatarURL = user.displayAvatarURL({
|
||||
size: 512
|
||||
});
|
||||
|
||||
interaction.reply({
|
||||
files: [{
|
||||
attachment: avatarURL
|
||||
}]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Avatar;
|
71
commands/General/emoji.js
Normal file
71
commands/General/emoji.js
Normal file
|
@ -0,0 +1,71 @@
|
|||
const { SlashCommandBuilder, EmbedBuilder, parseEmoji } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand");
|
||||
|
||||
class Emoji extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("emoji")
|
||||
.setDescription(client.translate("general/emoji:DESCRIPTION"))
|
||||
.addStringOption(option => option.setName("emoji")
|
||||
.setDescription(client.translate("common:EMOJI"))
|
||||
.setRequired(true)),
|
||||
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 rawEmoji = interaction.options.getString("emoji");
|
||||
const parsedEmoji = parseEmoji(rawEmoji);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: interaction.translate("general/emoji:TITLE", {
|
||||
emoji: parsedEmoji.name
|
||||
})
|
||||
})
|
||||
.setColor(client.config.embed.color)
|
||||
.setFooter({
|
||||
text: client.config.embed.footer
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: interaction.translate("general/emoji:NAME"),
|
||||
value: parsedEmoji.name
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/emoji:ANIMATED"),
|
||||
value: parsedEmoji.animated ? interaction.translate("common:YES") : interaction.translate("common:NO")
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/emoji:ID"),
|
||||
value: parsedEmoji.id?.toString() || interaction.translate("general/emoji:STANDART")
|
||||
}
|
||||
]);
|
||||
|
||||
interaction.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Emoji;
|
102
commands/General/minecraft.js
Normal file
102
commands/General/minecraft.js
Normal file
|
@ -0,0 +1,102 @@
|
|||
const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand"),
|
||||
gamedig = require("gamedig");
|
||||
|
||||
class Minecraft extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("minecraft")
|
||||
.setDescription(client.translate("general/minecraft:DESCRIPTION"))
|
||||
.addStringOption(option => option.setName("ip")
|
||||
.setDescription(client.translate("common:IP"))
|
||||
.setRequired(true)),
|
||||
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) {
|
||||
await interaction.deferReply();
|
||||
const ip = interaction.options.getString("ip");
|
||||
|
||||
const options = {
|
||||
type: "minecraft",
|
||||
host: ip
|
||||
};
|
||||
|
||||
if (ip.split(":").length > 1) {
|
||||
const splitIp = ip.split(":");
|
||||
options.host = splitIp[0];
|
||||
options.port = splitIp[1];
|
||||
}
|
||||
|
||||
var res = await gamedig.query(options).catch(() => {});
|
||||
|
||||
if (!res) {
|
||||
options.type = "minecraftpe";
|
||||
res = await gamedig.query(options).catch(() => {});
|
||||
}
|
||||
|
||||
if (!res) return interaction.error("general/minecraft:FAILED", null, { edit: true });
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: res.name
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: interaction.translate("general/minecraft:FIELD_STATUS"),
|
||||
value: interaction.translate("general/minecraft:ONLINE")
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/minecraft:FIELD_CONNECTED"),
|
||||
value: `**${(res.raw.players ? res.raw.players.online : res.players.length)}** ${client.getNoun((res.raw.players ? res.raw.players.online : res.players.length), interaction.translate("misc:NOUNS:PLAYERS:1"), interaction.translate("misc:NOUNS:PLAYERS:2"), interaction.translate("misc:NOUNS:PLAYERS:5"))} / **${(res.raw.players ? res.raw.players.max : res.maxplayers)}** ${client.getNoun((res.raw.players ? res.raw.players.max : res.maxplayers), interaction.translate("misc:NOUNS:PLAYERS:1"), interaction.translate("misc:NOUNS:PLAYERS:2"), interaction.translate("misc:NOUNS:PLAYERS:5"))}`
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/minecraft:FIELD_IP"),
|
||||
value: res.connect,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/minecraft:FIELD_VERSION"),
|
||||
value: res.raw.vanilla.raw.version.name,
|
||||
inline: true
|
||||
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/minecraft:FIELD_PING"),
|
||||
value: res.raw.vanilla.ping.toString()
|
||||
}
|
||||
])
|
||||
.setColor(client.config.embed.color)
|
||||
.setThumbnail(`https://eu.mc-api.net/v3/server/favicon/${ip}`)
|
||||
.setFooter({
|
||||
text: client.config.embed.footer
|
||||
});
|
||||
|
||||
interaction.editReply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Minecraft;
|
61
commands/General/remindme.js
Normal file
61
commands/General/remindme.js
Normal file
|
@ -0,0 +1,61 @@
|
|||
const { SlashCommandBuilder } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand"),
|
||||
ms = require("ms");
|
||||
|
||||
class Remindme extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("remindme")
|
||||
.setDescription(client.translate("general/remindme:DESCRIPTION"))
|
||||
.addStringOption(option => option.setName("time")
|
||||
.setDescription(client.translate("owner/remindme:TIME"))
|
||||
.setRequired(true))
|
||||
.addStringOption(option => option.setName("message")
|
||||
.setDescription(client.translate("common:MESSAGE"))
|
||||
.setRequired(true)),
|
||||
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, data) {
|
||||
const time = interaction.options.getString("time");
|
||||
const message = interaction.options.getString("message");
|
||||
const dateNow = Date.now();
|
||||
if (!data.userData.reminds) data.userData.reminds = [];
|
||||
|
||||
const rData = {
|
||||
message: message,
|
||||
createdAt: dateNow,
|
||||
sendAt: dateNow + ms(time)
|
||||
};
|
||||
|
||||
data.userData.reminds.push(rData);
|
||||
data.userData.markModified("reminds");
|
||||
data.userData.save();
|
||||
client.databaseCache.usersReminds.set(message.author.id, data.userData);
|
||||
|
||||
interaction.success("general/remindme:SAVED");
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Remindme;
|
99
commands/General/report.js
Normal file
99
commands/General/report.js
Normal file
|
@ -0,0 +1,99 @@
|
|||
const { SlashCommandBuilder, EmbedBuilder, parseEmoji } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand");
|
||||
|
||||
class Report extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("report")
|
||||
.setDescription(client.translate("general/report:DESCRIPTION"))
|
||||
.addUserOption(option => option.setName("user")
|
||||
.setDescription(client.translate("common:USER"))
|
||||
.setRequired(true))
|
||||
.addStringOption(option => option.setName("message")
|
||||
.setDescription(client.translate("common:MESSAGE"))
|
||||
.setRequired(true)),
|
||||
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) {
|
||||
if (interaction.user.id === "285109105717280768") return interaction.reply({ content: "Пошёл нахуй фахон" });
|
||||
const repChannel = interaction.guild.channels.cache.get(interaction.guild.data.plugins.reports);
|
||||
if (!repChannel) return interaction.error("general/report:MISSING_CHANNEL");
|
||||
const member = interaction.options.getMember("user");
|
||||
if (member.id === interaction.user.id) return interaction.error("general/report:INVALID_USER");
|
||||
const rep = interaction.options.getString("message");
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: interaction.translate("general/report:TITLE", {
|
||||
user: member.user.tag
|
||||
}),
|
||||
iconURL: interaction.user.displayAvatarURL({
|
||||
extension: "png",
|
||||
size: 512
|
||||
})
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: interaction.translate("common:DATE"),
|
||||
value: client.printDate(new Date(Date.now()))
|
||||
},
|
||||
{
|
||||
name: interaction.translate("common:AUTHOR"),
|
||||
value: interaction.user.toString(),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: interaction.translate("common:USER"),
|
||||
value: member.user.toString(),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: interaction.translate("common:REASON"),
|
||||
value: rep,
|
||||
inline: true
|
||||
}
|
||||
])
|
||||
.setColor(client.config.embed.color)
|
||||
.setFooter({
|
||||
text: client.config.embed.footer
|
||||
});
|
||||
|
||||
const success = parseEmoji(client.customEmojis.cool).id;
|
||||
const error = parseEmoji(client.customEmojis.notcool).id;
|
||||
|
||||
repChannel.send({
|
||||
embeds: [embed]
|
||||
}).then(async (m) => {
|
||||
await m.react(success);
|
||||
await m.react(error);
|
||||
});
|
||||
|
||||
interaction.success("general/report:SUCCESS", {
|
||||
channel: repChannel.toString()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Report;
|
106
commands/General/serverinfo.js
Normal file
106
commands/General/serverinfo.js
Normal file
|
@ -0,0 +1,106 @@
|
|||
const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand");
|
||||
|
||||
class Serverinfo extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("serverinfo")
|
||||
.setDescription(client.translate("general/serverinfo:DESCRIPTION")),
|
||||
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 guild = interaction.guild;
|
||||
|
||||
await guild.members.fetch();
|
||||
const owner = await guild.fetchOwner();
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: guild.name,
|
||||
iconURL: guild.iconURL()
|
||||
})
|
||||
.setThumbnail(guild.iconURL())
|
||||
.addFields([
|
||||
{
|
||||
name: client.customEmojis.link + " " + interaction.translate("general/serverinfo:LINK"),
|
||||
value: `[${interaction.translate("general/serverinfo:LINK_TEXT")}](${client.config.dashboard.baseURL}/stats/${guild.id})`
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.title + interaction.translate("common:NAME"),
|
||||
value: guild.name,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.calendar + interaction.translate("common:CREATION"),
|
||||
value: client.printDate(guild.createdAt),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.users + interaction.translate("common:MEMBERS"),
|
||||
value: `${guild.members.cache.filter(m => !m.user.bot).size} ${client.getNoun(guild.members.cache.filter(m => !m.user.bot).size, interaction.translate("misc:NOUNS:MEMBERS:1"), interaction.translate("misc:NOUNS:MEMBERS:2"), interaction.translate("misc:NOUNS:MEMBERS:5"))}` +
|
||||
"\n" + `${guild.members.cache.filter(m => m.user.bot).size} ${client.getNoun(guild.members.cache.filter(m => m.user.bot).size, interaction.translate("misc:NOUNS:BOTS:1"), interaction.translate("misc:NOUNS:BOTS:2"), interaction.translate("misc:NOUNS:BOTS:5"))}`,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.afk + interaction.translate("general/serverinfo:AFK_CHANNEL"),
|
||||
value: guild.afkChannel?.toString() || interaction.translate("common:MISSING"),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.id + interaction.translate("common:ID"),
|
||||
value: guild.id,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.crown + interaction.translate("common:OWNER"),
|
||||
value: owner.toString(),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.boost + interaction.translate("general/serverinfo:BOOSTS"),
|
||||
value: guild.premiumSubscriptionCount?.toString() || "0",
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.channels + interaction.translate("common:CHANNELS"),
|
||||
value: `${guild.channels.cache.filter(c => c.type === "GUILD_TEXT").size} ${client.getNoun(guild.channels.cache.filter(c => c.type === "GUILD_TEXT").size, interaction.translate("misc:NOUNS:TEXT:1"), interaction.translate("misc:NOUNS:TEXT:2"), interaction.translate("misc:NOUNS:TEXT:5"))}` +
|
||||
"\n" + `${guild.channels.cache.filter(c => c.type === "GUILD_VOICE").size} ${client.getNoun(guild.channels.cache.filter(c => c.type === "GUILD_VOICE").size, interaction.translate("misc:NOUNS:VOICE:1"), interaction.translate("misc:NOUNS:VOICE:2"), interaction.translate("misc:NOUNS:VOICE:5"))}` +
|
||||
"\n" + `${guild.channels.cache.filter(c => c.type === "GUILD_CATEGORY").size} ${client.getNoun(guild.channels.cache.filter(c => c.type === "GUILD_CATEGORY").size, interaction.translate("misc:NOUNS:CATEGORY:1"), interaction.translate("misc:NOUNS:CATEGORY:2"), interaction.translate("misc:NOUNS:CATEGORY:5"))}`,
|
||||
inline: true
|
||||
}
|
||||
])
|
||||
|
||||
.setColor(client.config.embed.color)
|
||||
.setFooter({
|
||||
text: client.config.embed.footer
|
||||
});
|
||||
|
||||
interaction.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Serverinfo;
|
48
commands/General/shorturl.js
Normal file
48
commands/General/shorturl.js
Normal file
|
@ -0,0 +1,48 @@
|
|||
const { SlashCommandBuilder } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand"),
|
||||
fetch = require("node-fetch");
|
||||
|
||||
class Shorturl extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("shorturl")
|
||||
.setDescription(client.translate("general/shorturl:DESCRIPTION"))
|
||||
.addStringOption(option => option.setName("url")
|
||||
.setDescription(client.translate("general/shorturl:URL"))
|
||||
.setRequired(true)),
|
||||
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 url = interaction.options.getString("url");
|
||||
const res = await fetch(`https://is.gd/create.php?format=simple&url=${encodeURI(url)}`).then(res => res.text());
|
||||
|
||||
interaction.reply({
|
||||
content: `<${res}>`,
|
||||
ephemeral: true
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Shorturl;
|
64
commands/General/staff.js
Normal file
64
commands/General/staff.js
Normal file
|
@ -0,0 +1,64 @@
|
|||
const { SlashCommandBuilder, EmbedBuilder, PermissionsBitField } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand");
|
||||
|
||||
class Staff extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("staff")
|
||||
.setDescription(client.translate("general/staff:DESCRIPTION")),
|
||||
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) {
|
||||
await interaction.guild.members.fetch();
|
||||
const administrators = interaction.guild.members.cache.filter((m) => m.permissions.has(PermissionsBitField.Flags.Administrator) && !m.user.bot);
|
||||
const moderators = interaction.guild.members.cache.filter((m) => !administrators.has(m.id) && m.permissions.has(PermissionsBitField.Flags.ManageMessages) && !m.user.bot);
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: interaction.translate("general/staff:TITLE", {
|
||||
guild: interaction.guild.name
|
||||
})
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: interaction.translate("general/staff:ADMINS"),
|
||||
value: (administrators.size > 0 ? administrators.map((a) => `${a.presence ? client.customEmojis.status[a.presence.status] : client.customEmojis.status.offline} | <@${a.user.id}>`).join("\n") : interaction.translate("general/staff:NO_ADMINS"))
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/staff:MODS"),
|
||||
value: (moderators.size > 0 ? moderators.map((m) => `${m.presence ? client.customEmojis.status[m.presence.status] : client.customEmojis.status.offline} | <@${m.user.id}>`).join("\n") : interaction.translate("general/staff:NO_MODS"))
|
||||
}
|
||||
])
|
||||
.setColor(client.config.embed.color)
|
||||
.setFooter({
|
||||
text: client.config.embed.footer
|
||||
});
|
||||
|
||||
interaction.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Staff;
|
104
commands/General/stats.js
Normal file
104
commands/General/stats.js
Normal file
|
@ -0,0 +1,104 @@
|
|||
|
||||
const { SlashCommandBuilder, EmbedBuilder, PermissionsBitField, version } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand");
|
||||
|
||||
class Stats extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("stats")
|
||||
.setDescription(client.translate("general/stats:DESCRIPTION")),
|
||||
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 hiddenGuild = await client.guilds.fetch("568120814776614924");
|
||||
const users = client.users.cache.size - hiddenGuild.memberCount;
|
||||
const servers = client.guilds.cache.size - 1;
|
||||
|
||||
const statsEmbed = new EmbedBuilder()
|
||||
.setColor(client.config.embed.color)
|
||||
.setFooter({
|
||||
text: client.config.embed.footer
|
||||
})
|
||||
.setAuthor({
|
||||
name: interaction.translate("common:STATS")
|
||||
})
|
||||
.setDescription(interaction.translate("general/stats:MADE"))
|
||||
.addFields([
|
||||
{
|
||||
name: client.customEmojis.stats + " " + interaction.translate("general/stats:COUNTS_TITLE"),
|
||||
value: interaction.translate("general/stats:COUNTS_CONTENT", {
|
||||
servers: servers,
|
||||
users: users
|
||||
}),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.version + " " + interaction.translate("general/stats:VERSIONS_TITLE"),
|
||||
value: `\`Discord.js: v${version}\`\n\`Nodejs: v${process.versions.node}\``,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.ram + " " + interaction.translate("general/stats:RAM_TITLE"),
|
||||
value: `\`${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)}MB\``,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.status.online + " " + interaction.translate("general/stats:ONLINE_TITLE"),
|
||||
value: interaction.translate("general/stats:ONLINE_CONTENT", {
|
||||
time: client.convertTime(Date.now() + client.uptime, true, true)
|
||||
})
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.voice + " " + interaction.translate("general/stats:MUSIC_TITLE"),
|
||||
value: interaction.translate("general/stats:MUSIC_CONTENT", {
|
||||
count: `${client.player.queues.size} ${client.getNoun(client.player.queues.size, interaction.translate("misc:NOUNS:SERVERS:1"), interaction.translate("misc:NOUNS:SERVERS:2"), interaction.translate("misc:NOUNS:SERVERS:5"))}`
|
||||
})
|
||||
},
|
||||
{
|
||||
name: interaction.translate("general/stats:CREDITS_TITLE"),
|
||||
value: interaction.translate("general/stats:CREDITS_CONTENT", {
|
||||
donators: ["**`Добрый Спецназ#8801`** - Тестер, генератор идей"].join("\n"),
|
||||
translators: ["**`[ДАННЫЕ УДАЛЕНЫ]#4507`** - :flag_ua: (НЕ ОБНОВЛЕН!)"].join("\n")
|
||||
})
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.link + " " + interaction.translate("general/stats:LINKS_TITLE"),
|
||||
value: interaction.translate("misc:STATS_FOOTER", {
|
||||
dashboardLink: client.config.dashboard.baseURL,
|
||||
docsLink: `${client.config.dashboard.baseURL}/docs/`,
|
||||
inviteLink: client.generateInvite({ scopes: ["bot", "applications.commands"], permissions: [ PermissionsBitField.Flags.Administrator ] }),
|
||||
donateLink: "https://qiwi.com/n/JONNYBRO/",
|
||||
owner: client.config.owner.id
|
||||
})
|
||||
}
|
||||
]);
|
||||
|
||||
interaction.reply({
|
||||
embeds: [statsEmbed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Stats;
|
88
commands/General/suggest.js
Normal file
88
commands/General/suggest.js
Normal file
|
@ -0,0 +1,88 @@
|
|||
const { SlashCommandBuilder, EmbedBuilder, parseEmoji } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand");
|
||||
|
||||
class Suggest extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("suggest")
|
||||
.setDescription(client.translate("general/suggest:DESCRIPTION"))
|
||||
.addStringOption(option => option.setName("message")
|
||||
.setDescription(client.translate("common:MESSAGE"))
|
||||
.setRequired(true)),
|
||||
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) {
|
||||
if (interaction.user.id === "285109105717280768") return interaction.reply({ content: "Пошёл нахуй фахон" });
|
||||
const suggChannel = interaction.guild.channels.cache.get(interaction.guild.data.plugins.suggestions);
|
||||
if (!suggChannel) return interaction.error("general/suggest:MISSING_CHANNEL");
|
||||
const suggestion = interaction.options.getString("message");
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: interaction.translate("general/suggest:TITLE", {
|
||||
user: interaction.user.tag
|
||||
}),
|
||||
iconURL: interaction.member.displayAvatarURL({
|
||||
size: 512
|
||||
})
|
||||
})
|
||||
.addFields([
|
||||
{
|
||||
name: interaction.translate("common:DATE"),
|
||||
value: client.printDate(new Date(Date.now()))
|
||||
},
|
||||
{
|
||||
name: interaction.translate("common:AUTHOR"),
|
||||
value: interaction.user.toString(),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: interaction.translate("common:CONTENT"),
|
||||
value: suggestion,
|
||||
inline: true
|
||||
}
|
||||
])
|
||||
.setColor(client.config.embed.color)
|
||||
.setFooter({
|
||||
text: client.config.embed.footer
|
||||
});
|
||||
|
||||
const success = parseEmoji(client.customEmojis.cool).id;
|
||||
const error = parseEmoji(client.customEmojis.notcool).id;
|
||||
|
||||
suggChannel.send({
|
||||
embeds: [embed]
|
||||
}).then(async (m) => {
|
||||
await m.react(success);
|
||||
await m.react(error);
|
||||
});
|
||||
|
||||
interaction.success("general/suggest:SUCCESS", {
|
||||
channel: suggChannel.toString()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Suggest;
|
120
commands/General/userinfo.js
Normal file
120
commands/General/userinfo.js
Normal file
|
@ -0,0 +1,120 @@
|
|||
const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand");
|
||||
|
||||
class Userinfo extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("userinfo")
|
||||
.setDescription(client.translate("general/userinfo:DESCRIPTION"))
|
||||
.addUserOption(option => option.setName("user")
|
||||
.setDescription(client.translate("common:USER"))),
|
||||
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 member = interaction.options.getMember("user") || interaction.member;
|
||||
const embed = new EmbedBuilder()
|
||||
.setAuthor({
|
||||
name: `${member.user.tag} (${member.id})`,
|
||||
iconURL: member.displayAvatarURL({
|
||||
size: 512
|
||||
})
|
||||
})
|
||||
.setThumbnail(member.displayAvatarURL({
|
||||
size: 512
|
||||
}))
|
||||
.addFields([
|
||||
{
|
||||
name: ":man: " + interaction.translate("common:USERNAME"),
|
||||
value: member.user.tag,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.pencil + " " + interaction.translate("common:NICKNAME"),
|
||||
value: member.nickname || interaction.translate("general/userinfo:NO_NICKNAME"),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.status[member.presence.status] + " " + interaction.translate("common:STATUS"),
|
||||
value: interaction.translate(`common:STATUS_${member.presence.status.toUpperCase()}`),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.bot + " " + interaction.translate("common:ROBOT"),
|
||||
value: member.user.bot ? interaction.translate("common:YES") : interaction.translate("common:NO"),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.calendar + " " + interaction.translate("common:CREATION"),
|
||||
value: client.printDate(member.user.createdAt),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.calendar2 + " " + interaction.translate("common:JOIN"),
|
||||
value: client.printDate(member.joinedAt),
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.color + " " + interaction.translate("common:COLOR"),
|
||||
value: member.displayHexColor,
|
||||
inline: true
|
||||
},
|
||||
{
|
||||
name: client.customEmojis.roles + " " + interaction.translate("common:ROLES"),
|
||||
value: (member.roles.size > 10 ? member.roles.cache.map((r) => r).slice(0, 10).join(", ") + " " + interaction.translate("general/userinfo:MORE_ROLES", {
|
||||
count: member.roles.cache.size - 10
|
||||
}) : (member.roles.cache.size < 1) ? interaction.translate("general/userinfo:NO_ROLE") : member.roles.cache.map((r) => r).join(", ")),
|
||||
inline: true
|
||||
}
|
||||
])
|
||||
.setColor(client.config.embed.color)
|
||||
.setFooter({
|
||||
text: client.config.embed.footer
|
||||
});
|
||||
|
||||
if (member.presence.activities[0].name === "Custom Status") {
|
||||
embed.addFields([
|
||||
{
|
||||
name: client.customEmojis.games + " " + interaction.translate("common:ACTIVITY"),
|
||||
value: member.presence.activities[0] ? `${interaction.translate("general/userinfo:CUSTOM")}\n${member.presence.activities[0].state || interaction.translate("common:NOT_DEFINED")}` : interaction.translate("general/userinfo:NO_ACTIVITY"),
|
||||
inline: true
|
||||
}
|
||||
]);
|
||||
} else {
|
||||
embed.addFields([
|
||||
{
|
||||
name: client.customEmojis.games + " " + interaction.translate("common:ACTIVITY"),
|
||||
value: member.presence.activities[0] ? `${member.presence.activities[0].name}\n${member.presence.activities[0].details}\n${member.presence.activities[0].state}` : interaction.translate("general/userinfo:NO_GAME"),
|
||||
inline: true
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
||||
interaction.reply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Userinfo;
|
73
commands/General/whois.js
Normal file
73
commands/General/whois.js
Normal file
|
@ -0,0 +1,73 @@
|
|||
const { SlashCommandBuilder, EmbedBuilder } = require("discord.js");
|
||||
const BaseCommand = require("../../base/BaseCommand"),
|
||||
fetch = require("node-fetch");
|
||||
|
||||
class Whois extends BaseCommand {
|
||||
/**
|
||||
*
|
||||
* @param {import("../base/JaBa")} client
|
||||
*/
|
||||
constructor(client) {
|
||||
super({
|
||||
command: new SlashCommandBuilder()
|
||||
.setName("whois")
|
||||
.setDescription(client.translate("general/whois:DESCRIPTION"))
|
||||
.addStringOption(option => option.setName("ip")
|
||||
.setDescription(client.translate("common:IP"))
|
||||
.setRequired(true)),
|
||||
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) {
|
||||
await interaction.deferReply();
|
||||
const ip = interaction.options.getString("ip");
|
||||
const whois = await fetch(`http://ip-api.com/json/${ip}?fields=status,message,continent,continentCode,country,countryCode,region,regionName,city,zip,timezone,currency,isp,org,as,mobile,proxy,hosting,query`).then(response => response.json());
|
||||
if (whois.status === "fail") return interaction.reply({ content: interaction.translate("general/whois:ERROR", { ip }) });
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(interaction.translate("general/whois:INFO_ABOUT", {
|
||||
ip
|
||||
}))
|
||||
.setFooter({
|
||||
text: client.config.embed.footer
|
||||
})
|
||||
.setColor(client.config.embed.color)
|
||||
.addFields(
|
||||
{ name: interaction.translate("common:IP"), value: whois.query, inline: true },
|
||||
{ name: interaction.translate("general/whois:COUNTRY"), value: `${whois.country || interaction.translate("common:UNKNOWN")} (${whois.countryCode || interaction.translate("common:UNKNOWN")})`, inline: true },
|
||||
{ name: interaction.translate("general/whois:REGION"), value: `${whois.regionName || interaction.translate("common:UNKNOWN")} (${whois.region || interaction.translate("common:UNKNOWN")})`, inline: true },
|
||||
{ name: interaction.translate("general/whois:CITY"), value: `${whois.city || interaction.translate("common:UNKNOWN")}`, inline: true },
|
||||
{ name: interaction.translate("general/whois:ZIP"), value: `${whois.zip || interaction.translate("common:UNKNOWN")}`, inline: true },
|
||||
{ name: interaction.translate("general/whois:TIMEZONE"), value: `${whois.timezone || interaction.translate("common:UNKNOWN")}`, inline: true },
|
||||
{ name: interaction.translate("general/whois:CONTINENT"), value: `${whois.continent || interaction.translate("common:UNKNOWN")} (${whois.continentCode || interaction.translate("common:UNKNOWN")})`, inline: true },
|
||||
{ name: interaction.translate("general/whois:CURRENCY"), value: `${whois.currency || interaction.translate("common:UNKNOWN")}`, inline: true },
|
||||
{ name: interaction.translate("general/whois:ISP"), value: `${whois.isp || interaction.translate("common:UNKNOWN")}`, inline: true }
|
||||
)
|
||||
.setTimestamp();
|
||||
|
||||
if (whois.proxy) embed.addFields({ name: interaction.translate("general/whois:INFO"), value: interaction.translate("general/whois:PROXY") });
|
||||
else if (whois.mobile) embed.addFields({ name: interaction.translate("general/whois:INFO"), value: interaction.translate("general/whois:MOBILE") });
|
||||
else if (whois.hosting) embed.addFields({ name: interaction.translate("general/whois:INFO"), value: interaction.translate("general/whois:HOSTING") });
|
||||
|
||||
interaction.editReply({
|
||||
embeds: [embed]
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Whois;
|
|
@ -35,8 +35,8 @@ class Queue extends BaseCommand {
|
|||
if (!queue) return interaction.error("music/play:NOT_PLAYING");
|
||||
|
||||
const currentTrack = queue.current;
|
||||
const tracks = queue.tracks.slice(0, 10).map((t, i) => {
|
||||
return `${i}. [${t.title}](${t.url})\n> ${interaction.translate("music/queue:ADDED")} ${t.requestedBy}`;
|
||||
const tracks = queue.tracks.slice(0, 10).map(track => {
|
||||
return `${queue.tracks.indexOf(track)}. [${track.title}](${track.url})\n> ${interaction.translate("music/queue:ADDED")} ${track.requestedBy}`;
|
||||
});
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
|
|
|
@ -11,10 +11,9 @@ class Announcement extends BaseCommand {
|
|||
command: new SlashCommandBuilder()
|
||||
.setName("announcement")
|
||||
.setDescription(client.translate("owner/announcement:DESCRIPTION"))
|
||||
.addStringOption(option =>
|
||||
option.setName("message")
|
||||
.setDescription(client.translate("owner/say:MESSAGE"))
|
||||
.setRequired(true)),
|
||||
.addStringOption(option => option.setName("message")
|
||||
.setDescription(client.translate("common:MESSAGE"))
|
||||
.setRequired(true)),
|
||||
aliases: [],
|
||||
dirname: __dirname,
|
||||
guildOnly: true,
|
||||
|
|
|
@ -11,51 +11,43 @@ class Debug extends BaseCommand {
|
|||
command: new SlashCommandBuilder()
|
||||
.setName("debug")
|
||||
.setDescription(client.translate("owner/debug:DESCRIPTION"))
|
||||
.addSubcommand(subcommand =>
|
||||
subcommand.setName("set")
|
||||
.setDescription(client.translate("owner/debug:SET"))
|
||||
.addStringOption(option =>
|
||||
option.setName("type")
|
||||
.setDescription(client.translate("owner/debug:TYPE"))
|
||||
.setRequired(true)
|
||||
.addChoices(
|
||||
{ name: client.translate("common:LEVEL"), value: "level" },
|
||||
{ name: client.translate("common:XP"), value: "xp" },
|
||||
{ name: client.translate("common:CREDITS"), value: "credits" },
|
||||
{ name: client.translate("economy/transactions:BANK"), value: "bank" },
|
||||
{ name: client.translate("common:REP"), value: "rep" },
|
||||
))
|
||||
.addUserOption(option =>
|
||||
option.setName("target")
|
||||
.setDescription(client.translate("owner/debug:TARGET"))
|
||||
.setRequired(true))
|
||||
.addIntegerOption(option =>
|
||||
option.setName("int")
|
||||
.setDescription(client.translate("owner/debug:INT"))
|
||||
.setRequired(true))
|
||||
.addSubcommand(subcommand => subcommand.setName("set")
|
||||
.setDescription(client.translate("owner/debug:SET"))
|
||||
.addStringOption(option => option.setName("type")
|
||||
.setDescription(client.translate("owner/debug:TYPE"))
|
||||
.setRequired(true)
|
||||
.addChoices(
|
||||
{ name: client.translate("common:LEVEL"), value: "level" },
|
||||
{ name: client.translate("common:XP"), value: "xp" },
|
||||
{ name: client.translate("common:CREDITS"), value: "credits" },
|
||||
{ name: client.translate("economy/transactions:BANK"), value: "bank" },
|
||||
{ name: client.translate("common:REP"), value: "rep" },
|
||||
))
|
||||
.addUserOption(option => option.setName("target")
|
||||
.setDescription(client.translate("owner/debug:TARGET"))
|
||||
.setRequired(true))
|
||||
.addIntegerOption(option => option.setName("int")
|
||||
.setDescription(client.translate("owner/debug:INT"))
|
||||
.setRequired(true))
|
||||
)
|
||||
.addSubcommand(subcommand =>
|
||||
subcommand.setName("add")
|
||||
.setDescription(client.translate("owner/debug:ADD"))
|
||||
.addStringOption(option =>
|
||||
option.setName("type")
|
||||
.setDescription(client.translate("owner/debug:TYPE"))
|
||||
.setRequired(true)
|
||||
.addChoices(
|
||||
{ name: client.translate("common:LEVEL"), value: "level" },
|
||||
{ name: client.translate("common:XP"), value: "xp" },
|
||||
{ name: client.translate("common:CREDITS"), value: "credits" },
|
||||
{ name: client.translate("economy/transactions:BANK"), value: "bank" },
|
||||
{ name: client.translate("common:REP"), value: "rep" },
|
||||
))
|
||||
.addUserOption(option =>
|
||||
option.setName("user")
|
||||
.setDescription(client.translate("common:USER"))
|
||||
.setRequired(true))
|
||||
.addIntegerOption(option =>
|
||||
option.setName("int")
|
||||
.setDescription(client.translate("owner/debug:INT"))
|
||||
.setRequired(true))
|
||||
.addSubcommand(subcommand => subcommand.setName("add")
|
||||
.setDescription(client.translate("owner/debug:ADD"))
|
||||
.addStringOption(option => option.setName("type")
|
||||
.setDescription(client.translate("owner/debug:TYPE"))
|
||||
.setRequired(true)
|
||||
.addChoices(
|
||||
{ name: client.translate("common:LEVEL"), value: "level" },
|
||||
{ name: client.translate("common:XP"), value: "xp" },
|
||||
{ name: client.translate("common:CREDITS"), value: "credits" },
|
||||
{ name: client.translate("economy/transactions:BANK"), value: "bank" },
|
||||
{ name: client.translate("common:REP"), value: "rep" },
|
||||
))
|
||||
.addUserOption(option => option.setName("user")
|
||||
.setDescription(client.translate("common:USER"))
|
||||
.setRequired(true))
|
||||
.addIntegerOption(option => option.setName("int")
|
||||
.setDescription(client.translate("owner/debug:INT"))
|
||||
.setRequired(true))
|
||||
),
|
||||
aliases: [],
|
||||
dirname: __dirname,
|
||||
|
|
|
@ -11,10 +11,9 @@ class Eval extends BaseCommand {
|
|||
command: new SlashCommandBuilder()
|
||||
.setName("eval")
|
||||
.setDescription(client.translate("owner/eval:DESCRIPTION"))
|
||||
.addStringOption(option =>
|
||||
option.setName("code")
|
||||
.setDescription(client.translate("owner/eval:CODE"))
|
||||
.setRequired(true)),
|
||||
.addStringOption(option => option.setName("code")
|
||||
.setDescription(client.translate("owner/eval:CODE"))
|
||||
.setRequired(true)),
|
||||
aliases: [],
|
||||
dirname: __dirname,
|
||||
guildOnly: true,
|
||||
|
|
|
@ -13,10 +13,9 @@ class Reload extends BaseCommand {
|
|||
command: new SlashCommandBuilder()
|
||||
.setName("reload")
|
||||
.setDescription(client.translate("owner/reload:DESCRIPTION"))
|
||||
.addStringOption(option =>
|
||||
option.setName("command")
|
||||
.setDescription(client.translate("owner/reload:COMMAND"))
|
||||
.setRequired(true)),
|
||||
.addStringOption(option => option.setName("command")
|
||||
.setDescription(client.translate("owner/reload:COMMAND"))
|
||||
.setRequired(true)),
|
||||
aliases: [],
|
||||
dirname: __dirname,
|
||||
guildOnly: true,
|
||||
|
|
|
@ -11,13 +11,11 @@ class Say extends BaseCommand {
|
|||
command: new SlashCommandBuilder()
|
||||
.setName("say")
|
||||
.setDescription(client.translate("owner/say:DESCRIPTION"))
|
||||
.addStringOption(option =>
|
||||
option.setName("message")
|
||||
.setDescription(client.translate("owner/say:MESSAGE"))
|
||||
.setRequired(true))
|
||||
.addChannelOption(option =>
|
||||
option.setName("channel")
|
||||
.setDescription(client.translate("owner/say:CHANNEL"))),
|
||||
.addStringOption(option => option.setName("message")
|
||||
.setDescription(client.translate("common:MESSAGE"))
|
||||
.setRequired(true))
|
||||
.addChannelOption(option => option.setName("channel")
|
||||
.setDescription(client.translate("common:CHANNEL"))),
|
||||
aliases: [],
|
||||
dirname: __dirname,
|
||||
guildOnly: true,
|
||||
|
|
|
@ -98,17 +98,11 @@
|
|||
<form role="form" action="/manage/<%= guild.id %>/" method="POST">
|
||||
<!-- /.box-header -->
|
||||
<div class="box-body">
|
||||
<!-- text input -->
|
||||
<div class="form-group">
|
||||
<label><%= translate("common:PREFIX") %></label>
|
||||
<input type="text" name="prefix" class="form-control"
|
||||
placeholder="<%= guild.prefix %>">
|
||||
</div>
|
||||
<!-- select -->
|
||||
<div class="form-group">
|
||||
<label><%= translate("common:LANGUAGE") %></label>
|
||||
<select class="form-control" name="language">
|
||||
<% bot.languages.forEach((language) => { %>
|
||||
<% bot.languages.forEach(language => { %>
|
||||
<% if (guild.language === language.name) { %>
|
||||
<option selected="selected"><%= language.nativeName %></option>
|
||||
<% } else { %>
|
||||
|
|
|
@ -68,7 +68,7 @@ class MessageCreate extends BaseEvent {
|
|||
if (afkReason) {
|
||||
data.userData.afk = null;
|
||||
await data.userData.save();
|
||||
message.replyT("general/setafk:DELETED", {
|
||||
message.replyT("general/afk:DELETED", {
|
||||
username: message.author.username
|
||||
});
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ class MessageCreate extends BaseEvent {
|
|||
const userData = await client.findOrCreateUser({
|
||||
id: u.id
|
||||
});
|
||||
if (userData.afk) message.error("general/setafk:IS_AFK", { user: u.tag, reason: userData.afk });
|
||||
if (userData.afk) message.error("general/afk:IS_AFK", { user: u.tag, reason: userData.afk });
|
||||
});
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -1,100 +0,0 @@
|
|||
/**
|
||||
*
|
||||
* @param {import("discord.js").Guild} guild
|
||||
* @param {String} search
|
||||
* @param {String} channelType
|
||||
* @returns
|
||||
*/
|
||||
const resolveChannel = async ({ guild, search, channelType }) => {
|
||||
if (!search || typeof search !== "string") return;
|
||||
|
||||
// Try by parsing the search
|
||||
if (search.match(/^<#([0-9]{18})>/)) {
|
||||
const [, channelId] = search.match(/^<#([0-9]{18})>/);
|
||||
const channelFound = guild.channels.cache.get(channelId);
|
||||
if (channelFound && channelType && channelFound.type === channelType) return channelFound;
|
||||
}
|
||||
|
||||
// Try with ID
|
||||
if (guild.channels.cache.has(search)) {
|
||||
const channelFound = guild.channels.cache.get(search);
|
||||
if (channelFound && channelType && channelFound.type === channelType) return channelFound;
|
||||
}
|
||||
|
||||
// Try with name with #
|
||||
if (guild.channels.cache.some(channel => `#${channel.name}` === search || channel.name === search)) {
|
||||
const channelFound = guild.channels.cache.find(channel => `#${channel.name}` === search || channel.name === search);
|
||||
if (channelFound && channelType && channelFound.type === channelType) return channelFound;
|
||||
}
|
||||
|
||||
return;
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {import("discord.js").Guild} guild
|
||||
* @param {String} search
|
||||
* @returns
|
||||
*/
|
||||
const resolveMember = async ({ guild, search }) => {
|
||||
if (!search || typeof search !== "string") return;
|
||||
|
||||
// Try by parsing the search
|
||||
if (search.match(/^<@!?(\d+)>$/)) {
|
||||
const [, userId] = search.match(/^<@!?(\d+)>$/);
|
||||
const memberFound = await guild.members.fetch(userId).catch(() => {});
|
||||
if (memberFound) return memberFound;
|
||||
}
|
||||
|
||||
// Try with ID
|
||||
if (await guild.members.fetch(search).catch(() => {})) {
|
||||
const memberFound = await guild.members.fetch(search);
|
||||
if (memberFound) return memberFound;
|
||||
}
|
||||
|
||||
// Try with name with @
|
||||
await guild.members.fetch({
|
||||
query: search
|
||||
});
|
||||
|
||||
if (guild.members.cache.some(member => member.user.tag === search || member.user.username === search)) {
|
||||
const memberFound = guild.members.cache.find(member => member.user.tag === search || member.user.username === search);
|
||||
if (memberFound) return memberFound;
|
||||
}
|
||||
|
||||
return;
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {import("discord.js").Guild} guild
|
||||
* @param {String} search
|
||||
* @returns
|
||||
*/
|
||||
const resolveRole = async ({ guild, search }) => {
|
||||
if (!search || typeof search !== "string") return;
|
||||
|
||||
// Try by parsing the search
|
||||
if (search.match(/^<@&([0-9]{18})>/)) {
|
||||
const [, roleId] = search.match(/^<@&([0-9]{18})>/);
|
||||
const roleFound = guild.roles.cache.get(roleId);
|
||||
if (roleFound)
|
||||
return roleFound;
|
||||
}
|
||||
|
||||
// Try with ID
|
||||
if (guild.roles.cache.has(search)) {
|
||||
const roleFound = guild.roles.cache.get(search);
|
||||
if (roleFound) return roleFound;
|
||||
}
|
||||
|
||||
// Try with name with @
|
||||
if (guild.roles.cache.some(role => `@${role.name}` === search || role.name === search)) {
|
||||
const roleFound = guild.roles.cache.find(role => `@${role.name}` === search || role.name === search);
|
||||
if (roleFound) return roleFound;
|
||||
}
|
||||
|
||||
return;
|
||||
};
|
||||
|
||||
module.exports = { resolveChannel, resolveMember, resolveRole };
|
|
@ -15,10 +15,8 @@
|
|||
"ID": "ID",
|
||||
"OWNER": "Owner",
|
||||
"USERNAME": "Username",
|
||||
"DISCRIMINATOR": "Discriminator",
|
||||
"STATS": "Stats",
|
||||
"ROBOT": "Robot",
|
||||
"AVATAR": "Avatar",
|
||||
"GAME": "Game",
|
||||
"STATUS": "Status",
|
||||
"STATUS_ONLINE": "Online",
|
||||
|
@ -49,7 +47,6 @@
|
|||
"MESSAGE": "Message",
|
||||
"PROFILE": "Profile",
|
||||
"CONFIGURATION": "Configuration",
|
||||
"PREFIX": "Prefix",
|
||||
"LANGUAGE": "Language",
|
||||
"CHANNEL": "Channel",
|
||||
"UPDATE": "Update",
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"DESCRIPTION": "Установить префикс на сервере!",
|
||||
"USAGE": "setprefix [префикс]",
|
||||
"EXAMPLES": "setprefix $",
|
||||
"MISSING_PREFIX": "Укажите префикс!",
|
||||
"TOO_LONG": "Префикс не может быть длиннее 5 символов!",
|
||||
"SUCCESS": "Префикс бота изменён на ``!"
|
||||
}
|
|
@ -2,7 +2,6 @@
|
|||
"DESCRIPTION": "Украсть эмодзи на данный сервер с другого!",
|
||||
"USAGE": "stealemoji [эмодзи]",
|
||||
"EXAMPLES": "stealemoji :coolstorybob:",
|
||||
"MISSING_EMOJI": "Укажите эмодзи!",
|
||||
"SUCCESS": "{{emoji}} добавлен!",
|
||||
"ERROR": "{{emoji}} не был добавлен. Проверьте, есть ли место для добавления эмодзи!"
|
||||
}
|
|
@ -5,6 +5,7 @@
|
|||
"AND_MORE": "И т.д...",
|
||||
"AUTHOR": "Автор",
|
||||
"DATE": "Дата",
|
||||
"MISSING": "Отсутствует",
|
||||
"CONTENT": "Содержимое",
|
||||
"REASON": "Причина",
|
||||
"USER": "Пользователь",
|
||||
|
@ -15,11 +16,9 @@
|
|||
"ID": "ID сервера",
|
||||
"OWNER": "Владелец",
|
||||
"USERNAME": "Имя пользователя",
|
||||
"DISCRIMINATOR": "Тег",
|
||||
"STATS": "Статистика",
|
||||
"ROBOT": "Бот",
|
||||
"AVATAR": "Аватар",
|
||||
"GAME": "Активность",
|
||||
"ACTIVITY": "Активность",
|
||||
"STATUS": "Статус",
|
||||
"STATUS_ONLINE": "В сети",
|
||||
"STATUS_OFFLINE": "Не в сети",
|
||||
|
@ -29,7 +28,7 @@
|
|||
"ROLES": "Роли",
|
||||
"JOIN": "Присоеденился",
|
||||
"COLOR": "Цвет",
|
||||
"NICKNAME": "Ник",
|
||||
"NICKNAME": "Ник на сервере",
|
||||
"DESCRIPTION": "Описание",
|
||||
"WEBSITE": "Сайт",
|
||||
"INVITE": "Пригласить",
|
||||
|
@ -50,7 +49,8 @@
|
|||
"MESSAGE": "Сообщение",
|
||||
"PROFILE": "Профиль",
|
||||
"CONFIGURATION": "Настройки",
|
||||
"PREFIX": "Префикс",
|
||||
"EMOJI": "Эмодзи",
|
||||
"IP": "IP адрес",
|
||||
"LANGUAGE": "Язык",
|
||||
"CHANNEL": "Канал",
|
||||
"UPDATE": "Обновить",
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"FIRST_LOGIN": "{{user}} авторизовался в панели управления в первый раз! :tada:",
|
||||
"NOT_FOUND": "Упс! Страница не найдена.",
|
||||
"NOT_FOUND_CONTENT": "Я не нашёл то, что вы искали. А пока вы можете вернуться в панель управления или попробовать использовать форму поиска.",
|
||||
"NOT_FOUND_CONTENT": "Я не нашёл то, что вы искали. А пока вы можете вернуться в панель управления.",
|
||||
"ERR_OCCURRED": "Упс! Что-то пошло не так.",
|
||||
"ERR_OCCURRED_CONTENT": "Мы постараемся исправить это как можно скорее (можете сообщить владельцу о проблеме). А пока вы можете вернуться в панель управления или попробовать использовать форму поиска.",
|
||||
"ERR_OCCURRED_CONTENT": "Я постараюсь исправить это как можно скорее (можете сообщить владельцу о проблеме). А пока вы можете вернуться в панель управления.",
|
||||
"SEARCH": "Поиск по серверам...",
|
||||
"SERVERS_LIST": "Список серверов",
|
||||
"SERVERS_MANAGEMENT": "Управление серверами",
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
{
|
||||
"DESCRIPTION": "Установить AFK статус (пользователь который упомянет вас получит сообщение)",
|
||||
"USAGE": "setafk [причина/delete]",
|
||||
"EXAMPLES": "setafk Сру =)",
|
||||
"MISSING_REASON": "Укажите причину AFK! (не больше 250 символов)",
|
||||
"SUCCESS": "Теперь вы AFK по причине: **{{reason}}**\nНапишите afk delete, чтобы принудительно отключить AFK",
|
||||
"USAGE": "afk [причина]",
|
||||
"EXAMPLES": "afk Сру =)",
|
||||
"SUCCESS": "Теперь вы AFK по причине: **{{reason}}**",
|
||||
"DELETED": "**{{username}}**, ваш AFK статус удалён!",
|
||||
"IS_AFK": "**{{user}}** сейчас AFK, причина:\n**`{{reason}}`**"
|
||||
}
|
|
@ -2,7 +2,6 @@
|
|||
"DESCRIPTION": "Показать информацию о Minecraft сервере",
|
||||
"USAGE": "minecraft [IP]",
|
||||
"EXAMPLES": "minecraft mc.hypixel.net",
|
||||
"MISSING_IP": "Укажите IP сервера!",
|
||||
"FAILED": "Сервер недоступен или доступ запрещён!",
|
||||
"ONLINE": "Онлайн",
|
||||
"OFFLINE": "Оффлайн",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"DESCRIPTION": "Создать напоминание",
|
||||
"USAGE": "remindme [время] [сообщение]",
|
||||
"EXAMPLES": "remindme 24h Использовать команду work\nremindme 3m Достать курицу из морозилки!",
|
||||
"MISSING_MESSAGE": "Введите сообщение!",
|
||||
"TIME": "Время (Например: 10s, 5m, 2h, 1d, 3w)",
|
||||
"SAVED": "Напоминание сохранено!",
|
||||
"TITLE": "Напоминание от JaBa",
|
||||
"CREATED": "Сообщение создано {{time}}"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
"USAGE": "report [@пользователь] (причина)",
|
||||
"EXAMPLES": "report @Jonny_Bro#4226 Нарушение правил",
|
||||
"MISSING_CHANNEL": "Канал для жалоб не настроен!",
|
||||
"MISSING_REASON": "Введите причину!",
|
||||
"MISSING_USER": "Вы должны упомянуть пользователя!",
|
||||
"INVALID_USER": "Вы не можете пожаловаться на себя",
|
||||
"SUCCESS": "Ваша жалоба отправлена в {{channel}}!",
|
||||
"TITLE": "Жалоба - {{user}}"
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
{
|
||||
"DESCRIPTION": "Показать информацию о сервере",
|
||||
"USAGE": "serverinfo [ID/название]",
|
||||
"EXAMPLES": "serverinfo кык\nserverinfo",
|
||||
"USAGE": "serverinfo",
|
||||
"EXAMPLES": "serverinfo",
|
||||
"AFK_CHANNEL": "AFK канал",
|
||||
"NO_AFK_CHANNEL": "Нет AFK канала",
|
||||
"BOOSTS": "Кол-во бустов",
|
||||
"LINK": "Статистика сервера",
|
||||
"LINK_TEXT": "Нажмите сюда, чтобы открыть статистику сервера!"
|
||||
|
|
|
@ -2,5 +2,5 @@
|
|||
"DESCRIPTION": "Укоротить ссылку",
|
||||
"USAGE": "shorturl [URL]",
|
||||
"EXAMPLES": "shorturl https://google.com",
|
||||
"MISSING_URL": "Введите ссылку!"
|
||||
"URL": "Ссылка"
|
||||
}
|
|
@ -4,14 +4,14 @@
|
|||
"EXAMPLES": "stats",
|
||||
"COUNTS_TITLE": "• __Статистика__",
|
||||
"COUNTS_CONTENT": "`Сервера: {{servers}}`\n`Пользователи: {{users}}`",
|
||||
"VERSIONS_TITLE": "• __Использует__",
|
||||
"VERSIONS_TITLE": "• __Используется__",
|
||||
"RAM_TITLE": "• __Использование ОЗУ__",
|
||||
"ONLINE_TITLE": "• __Онлайн__",
|
||||
"ONLINE_CONTENT": "Работает {{time}}",
|
||||
"ONLINE_CONTENT": "Работаю уже {{time}}",
|
||||
"MUSIC_TITLE": "• __Музыка__",
|
||||
"MUSIC_CONTENT": "Играет музыку на {{count}}",
|
||||
"CREDITS_TITLE": ":heart: • __Доп. информация и ссылки__",
|
||||
"CREDITS_CONTENT": "Спасибо [Icons8](https://icons8.com/) за эмодзи!\n__**Поддержавшие**__:\n{{donators}}\n__**Переводчики**__:\n{{translators}}",
|
||||
"MUSIC_CONTENT": "Играю музыку на {{count}}",
|
||||
"CREDITS_TITLE": ":heart: • __Доп. информация__",
|
||||
"CREDITS_CONTENT": "__**Поддержавшие**__:\n{{donators}}\n__**Переводчики**__:\n{{translators}}",
|
||||
"LINKS_TITLE": "• __Ссылки__",
|
||||
"MADE": "Бот создан Jonny_Bro#4226!"
|
||||
}
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"DESCRIPTION": "Показать информацию о пользователе",
|
||||
"USAGE": "userinfo (@пользователь/ID)",
|
||||
"EXAMPLES": "userinfo\nuserinfo @Jonny_Bro#4226\nuserinfo 281361531411890186",
|
||||
"INVALID_USER": "Пользователь с ID `{{search}}` не найден!",
|
||||
"NO_GAME": "Не играет",
|
||||
"USAGE": "userinfo (@пользователь)",
|
||||
"EXAMPLES": "userinfo\nuserinfo @Jonny_Bro#4226",
|
||||
"CUSTOM": "Пользовательский статус",
|
||||
"NO_ACTIVITY": "Не играет",
|
||||
"NO_ROLE": "Нет роли",
|
||||
"ROLE": "Высшая роль",
|
||||
"NO_NICKNAME": "Нет никнейма",
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
{
|
||||
"DESCRIPTION": "Получить информацию об IP адресе",
|
||||
"USAGE": "whois (IP)",
|
||||
"EXAMPLES": "whois 1.1.1.1",
|
||||
"NO_IP": "Укажите IP адрес!",
|
||||
"EXAMPLES": "whois 8.8.8.8",
|
||||
"ERROR": "Произошла ошибка при получении данных об {{ip}}",
|
||||
"INFO_ABOUT": "Информация об {{ip}}",
|
||||
"COUNTRY": "Страна",
|
||||
|
|
|
@ -1,29 +1,14 @@
|
|||
{
|
||||
"ERR_OCCURRED": "Что-то пошло не так... Попробуйте позже!",
|
||||
"COMMAND_DISABLED": "Эта команда на данный момент отключена!",
|
||||
"CLICK_HERE": "Нажмите сюда, чтобы начать {{activity}} в {{channel}}",
|
||||
"TIMES_UP": "Время вышло! Используйте команду снова!",
|
||||
"INVALID_YES_NO": "Отправьте `да` или `нет` (регистр не важен)!",
|
||||
"INVALID_CHANNEL": "Укажите существующий канал!",
|
||||
"INVALID_TIME": "Укажите действительное время! Доступные единицы: `s`, `m`, `h` или `d`.",
|
||||
"INVALID_NUMBER": "Укажите число!",
|
||||
"INVALID_NUMBER_RANGE": "Укажите число от **{{min}}** до **{{max}}**!",
|
||||
"FORCE_STOP": "Игра принудительно окончена {{user}}, никто не победил!",
|
||||
"STATS_FOOTER": "● [Панель управления]({{dashboardLink}})\n● [Документация]({{docsLink}})\n● [Пригласить JaBa на свой сервер]({{inviteLink}})\n● [Поддержать]({{donateLink}}) (укажите ваш Discord тэг для выдачи ачивки, для других способов поддержки пишите в ЛС <@{{owner}}>)",
|
||||
"BOT_USER": "Вы не можете сделать это с ботом!",
|
||||
"NO_PERMS": "Недостаточно прав для выполнения данного действия!",
|
||||
"NO_REASON_PROVIDED": "Причина не указана",
|
||||
"NO_USER_FOUND_ID": "Пользователя с ID `{{id}}` не существует!",
|
||||
"HELLO_SERVER": "Привет, **{{username}}**! Все мои команды доступны через **/** Используйте `/help`, чтобы получить список команд!",
|
||||
"GUILD_ONLY": "Данную команду можно использовать только на сервере!",
|
||||
"MISSING_BOT_PERMS": "Мне необходимы следующие права для выполнения данной команды: {{list}}",
|
||||
"MISSING_MEMBER_PERMS": "Вам необходимы следующие права для выполнения данной команды: {{list}}",
|
||||
"RESTRICTED_CHANNEL": "Использование команд в {{channel}} запрещено!",
|
||||
"EVERYONE_MENTION": "Вы не имеете прав для упоминания here и everyone.",
|
||||
"NSFW_COMMAND": "Данную команду можно использовать только в NSFW канале!",
|
||||
"OWNER_ONLY": "Данную команду может использовать только владелец бота!",
|
||||
"COOLDOWNED": "Подождите **{{seconds}}**, чтобы снова использовать эту команду!",
|
||||
"CANNOT_DM": "Я не могу отправить вам личное сообщение... Проверьте свои настройки конфиденциальности!",
|
||||
|
||||
"PERMISSIONS": {
|
||||
"CreateInstantInvite": "Создание приглашения",
|
||||
|
|
|
@ -2,7 +2,5 @@
|
|||
"DESCRIPTION": "Написать сообщение от имени бота",
|
||||
"USAGE": "[текст] (#канал)",
|
||||
"EXAMPLES": "say Hello World!\nsay Hello World! #новости",
|
||||
"DONE": "Сообщение `{{message}}` отправлено в {{channel}}!",
|
||||
"MESSAGE": "Сообщение",
|
||||
"CHANNEL": "Канал"
|
||||
"DONE": "Сообщение `{{message}}` отправлено в {{channel}}!"
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
"DESCRIPTION": "Встановити префікс на сервері!",
|
||||
"USAGE": "setprefix [префікс]",
|
||||
"EXAMPLES": "setprefix $",
|
||||
"MISSING_PREFIX": "Вкажіть префікс!",
|
||||
"TOO_LONG": "Префікс не може бути довшим за 5 символів!",
|
||||
"SUCCESS": "Префікс бота змінено на ``!"
|
||||
}
|
|
@ -15,10 +15,8 @@
|
|||
"ID": "ID серверу",
|
||||
"OWNER": "Власник",
|
||||
"USERNAME": "Ім'я користувача",
|
||||
"DISCRIMINATOR": "Тег",
|
||||
"STATS": "Статистика",
|
||||
"ROBOT": "Бот",
|
||||
"AVATAR": "Аватар",
|
||||
"GAME": "Активність",
|
||||
"STATUS": "Статус",
|
||||
"STATUS_ONLINE": "В мережі",
|
||||
|
@ -49,7 +47,6 @@
|
|||
"MESSAGE": "Повідомлення",
|
||||
"PROFILE": "Профіль",
|
||||
"CONFIGURATION": "Налаштування",
|
||||
"PREFIX": "Префікс",
|
||||
"LANGUAGE": "Мова",
|
||||
"CHANNEL": "Канал",
|
||||
"UPDATE": "Обоновити",
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"FIRST_LOGIN": "{{user}} авторизувався в панелі керування вперше! :tada:",
|
||||
"NOT_FOUND": "Йой! Сторінку не знайдено.",
|
||||
"NOT_FOUND_CONTENT": "Я не знайшов, що ви шукали. А поки що, ви можете повернутися в панель керування або спробувати використати форму пошуку.",
|
||||
"NOT_FOUND_CONTENT": "Я не знайшов, що ви шукали. А поки що, ви можете повернутися в панель керування.",
|
||||
"ERR_OCCURRED": "Йой! Щось пішло не так.",
|
||||
"ERR_OCCURRED_CONTENT": "Ми постараємося виправити це якнайшвидше (можете повідомити розробника про проблему). А поки що, ви можете повернутися в панель керування або спробувати використати форму пошуку.",
|
||||
"ERR_OCCURRED_CONTENT": "Ми постараємося виправити це якнайшвидше (можете повідомити розробника про проблему). А поки що, ви можете повернутися в панель керування.",
|
||||
"SEARCH": "Пошук по серверам...",
|
||||
"SERVERS_LIST": "Список серверів",
|
||||
"SERVERS_MANAGEMENT": "Управлління серверами",
|
||||
|
|
Loading…
Reference in a new issue