From ea7b8835098c8928d19a79fc88d33f84f1fcc38b Mon Sep 17 00:00:00 2001 From: JonnyBro Date: Wed, 5 Jan 2022 00:24:57 +0500 Subject: [PATCH] =?UTF-8?q?=D0=90=20=D0=BF=D0=BE=D1=87=D0=B5=D0=BC=D1=83?= =?UTF-8?q?=20=D0=BE=D0=BD=D0=BE=20=D0=BD=D0=B5=20=D0=BF=D1=80=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=BB=D0=BE=D1=81=D1=8C=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/JaBa.js | 20 ++-- base/User.js | 1 + commands/Administration/addemoji.js | 8 +- commands/Administration/automod.js | 2 +- commands/Administration/backup.js | 5 +- commands/Administration/configuration.js | 15 ++- commands/Administration/goodbye.js | 4 +- commands/Administration/ignore.js | 2 +- commands/Administration/setfortniteshop.js | 74 ------------ commands/Administration/slowmode.js | 2 +- commands/Administration/welcome.js | 7 +- commands/Economy/achievements.js | 12 +- commands/Economy/deposit.js | 4 +- commands/Economy/leaderboard.js | 20 +++- commands/Economy/marry.js | 6 +- commands/Economy/money.js | 29 +++-- commands/Economy/pay.js | 4 - commands/Economy/profile.js | 31 +++-- commands/Economy/rob.js | 9 +- commands/Economy/slots.js | 38 +++--- commands/Economy/withdraw.js | 4 +- commands/Economy/work.js | 17 ++- commands/Fun/8ball.js | 4 +- commands/Fun/ascii.js | 4 +- commands/Fun/choice.js | 4 +- commands/Fun/findwords.js | 4 +- commands/Fun/fml.js | 10 +- commands/Fun/joke.js | 10 +- commands/Fun/lmg.js | 4 +- commands/Fun/lovecalc.js | 16 ++- commands/Fun/number.js | 4 +- commands/General/activity.js | 130 ++++++++++++++------- commands/General/fortnite.js | 77 ------------ commands/General/fortniteshop.js | 61 ---------- commands/General/github.js | 21 ++-- commands/General/hastebin.js | 8 +- commands/General/help.js | 43 ++++--- commands/General/invitations.js | 14 ++- commands/General/invite.js | 21 +++- commands/General/minecraft.js | 18 ++- commands/General/permissions.js | 4 +- commands/General/ping.js | 4 +- commands/General/quote.js | 29 +++-- commands/General/report.js | 25 ++-- commands/General/serverinfo.js | 23 ++-- commands/General/shorturl.js | 8 +- commands/General/someone.js | 4 +- commands/General/staff.js | 20 ++-- commands/General/stats.js | 12 +- commands/General/suggest.js | 25 ++-- commands/General/translate.js | 26 +++-- commands/General/userinfo.js | 27 +++-- commands/Images/approved.js | 7 +- commands/Images/avatar.js | 9 +- commands/Images/batslap.js | 7 +- commands/Images/beautiful.js | 7 +- commands/Images/bed.js | 8 +- commands/Images/brazzers.js | 9 +- commands/Images/burn.js | 7 +- commands/Images/captcha.js | 8 +- commands/Images/challenger.js | 7 +- commands/Images/clyde.js | 7 +- commands/Images/dictator.js | 7 +- commands/Images/facepalm.js | 8 +- commands/Images/fire.js | 7 +- commands/Images/jail.js | 7 +- commands/Images/love.js | 7 +- commands/Images/mission.js | 7 +- commands/Images/phcomment.js | 8 +- commands/Images/qrcode.js | 6 +- commands/Images/rip.js | 7 +- commands/Images/scary.js | 7 +- commands/Images/tobecontinued.js | 7 +- commands/Images/trash.js | 7 +- commands/Images/triggered.js | 7 +- commands/Images/tweet.js | 7 +- commands/Images/wanted.js | 7 +- commands/Images/wasted.js | 7 +- commands/Images/youtube-comment.js | 7 +- commands/Moderation/announcement.js | 23 +++- commands/Moderation/ban.js | 16 ++- commands/Moderation/checkinvites.js | 49 -------- commands/Moderation/clear.js | 7 +- commands/Moderation/giveaway.js | 2 +- commands/Moderation/kick.js | 14 ++- commands/Moderation/mute.js | 16 ++- commands/Moderation/poll.js | 19 ++- commands/Moderation/sanctions.js | 25 ++-- commands/Moderation/unban.js | 2 +- commands/Moderation/unmute.js | 2 +- commands/Moderation/warn.js | 30 +++-- commands/Music/back.js | 18 ++- commands/Music/clips.js | 10 +- commands/Music/filters.js | 4 +- commands/Music/jump.js | 16 ++- commands/Music/lyrics.js | 8 +- commands/Music/np.js | 12 +- commands/Music/play.js | 5 +- commands/Music/queue.js | 22 ++-- commands/Music/seek.js | 5 - commands/Music/skip.js | 16 ++- commands/Music/stop.js | 16 ++- commands/NSFW/hentai.js | 8 +- commands/Owner/eval.js | 14 +-- commands/Owner/say.js | 32 ++--- commands/Owner/servers-list.js | 43 ++++--- dashboard/routes/discord.js | 4 +- dashboard/utils.js | 8 +- dashboard/views/docs.ejs | 3 - dashboard/views/includes/sidebar.ejs | 5 +- dashboard/views/manager/guild.ejs | 49 +++----- events/guildCreate.js | 18 +-- events/guildDelete.js | 2 +- events/guildMemberAdd.js | 6 +- events/guildMemberRemove.js | 4 +- events/{message.js => messageCreate.js} | 15 ++- events/messageUpdate.js | 2 +- events/ready.js | 5 +- helpers/autoUpdateDocs.js | 6 +- helpers/birthdays.js | 8 +- helpers/checkReminds.js | 2 +- helpers/checkUnmutes.js | 4 +- helpers/discordbots.org.js | 10 +- helpers/extenders.js | 4 +- helpers/fortniteShop.js | 47 -------- helpers/functions.js | 5 +- helpers/resolvers.js | 12 +- index.js | 3 +- languages/en-US/administration/backup.json | 1 + languages/ru-RU/administration/backup.json | 9 +- languages/ru-RU/owner/eval.json | 2 +- package.json | 9 +- 132 files changed, 975 insertions(+), 872 deletions(-) delete mode 100644 commands/Administration/setfortniteshop.js delete mode 100644 commands/General/fortnite.js delete mode 100644 commands/General/fortniteshop.js delete mode 100644 commands/Moderation/checkinvites.js rename events/{message.js => messageCreate.js} (92%) delete mode 100644 helpers/fortniteShop.js diff --git a/base/JaBa.js b/base/JaBa.js index e7da9a43..037ff8f7 100644 --- a/base/JaBa.js +++ b/base/JaBa.js @@ -63,26 +63,26 @@ class JaBa extends Client { this.player .on("playSong", async (queue, song) => { - const m = await queue.textChannel.send(this.translate("music/play:NOW_PLAYING", { songName: song.name })) + const m = await queue.textChannel.send({ content: this.translate("music/play:NOW_PLAYING", { songName: song.name }) }) if (!song.isLive) { setTimeout(() => { - if (!m.deleted) m.delete(); + if (m.deletable) m.delete(); }, song.duration * 1000); } else { setTimeout(() => { - if (!m.deleted) m.delete(); + if (m.deletable) m.delete(); }, 600 * 1000); } }) - .on("addSong", (queue, song) => queue.textChannel.send(this.translate("music/play:ADDED_QUEUE", { songName: song.name }))) - .on("addList", (queue, playlist) => queue.textChannel.send(this.translate("music/play:ADDED_QUEUE_COUNT", { songCount: playlist.songs.length }))) + .on("addSong", (queue, song) => queue.textChannel.send({ content: this.translate("music/play:ADDED_QUEUE", { songName: song.name }) })) + .on("addList", (queue, playlist) => queue.textChannel.send({ content: this.translate("music/play:ADDED_QUEUE_COUNT", { songCount: playlist.songs.length }) })) .on("searchResult", (message, result) => { let i = 0 const embed = new MessageEmbed() .setDescription(Util.escapeSpoiler(result.map(song => `**${++i} -** ${song.name}`).join("\n"))) - .setFooter(this.translate("music/play:RESULTS_FOOTER")) + .setFooter({ text: this.translate("music/play:RESULTS_FOOTER") }) .setColor(this.config.embed.color); - message.channel.send(embed); + message.channel.send({ embeds: [embed] }); }) .on("searchDone", () => {}) .on("searchCancel", message => message.error("misc:TIMES_UP")) @@ -90,13 +90,11 @@ class JaBa extends Client { .on("searchNoResult", message => message.error("music/play:NO_RESULT")) .on("error", (textChannel, e) => { console.error(e); - textChannel.send(this.translate("music/play:ERR_OCCURRED", { - error: e - })); + textChannel.send({ content: this.translate("music/play:ERR_OCCURRED", { error: e }) }); }) .on("finish", queue => queue.textChannel.send(this.translate("music/play:QUEUE_ENDED"))) - .on("empty", queue => queue.textChannel.send(this.translate("music/play:STOP_EMPTY"))); // .on("disconnect", queue => queue.textChannel.send(this.translate("music/play:STOP_DISCONNECTED"))) + .on("empty", queue => queue.textChannel.send(this.translate("music/play:STOP_EMPTY"))); this.giveawaysManager = new GiveawaysManager(this, { storage: "./giveaways.json", diff --git a/base/User.js b/base/User.js index 4a017c05..dae7be95 100644 --- a/base/User.js +++ b/base/User.js @@ -97,6 +97,7 @@ userSchema.method("genApiToken", async function() { userSchema.method("getAchievements", async function() { const canvas = Canvas.createCanvas(1800, 250), ctx = canvas.getContext("2d"); + const images = [ await Canvas.loadImage(`./assets/img/achievements/achievement${this.achievements.work.achieved ? "_colored" : ""}1.png`), await Canvas.loadImage(`./assets/img/achievements/achievement${this.achievements.firstCommand.achieved ? "_colored" : ""}2.png`), diff --git a/commands/Administration/addemoji.js b/commands/Administration/addemoji.js index de37c90a..0a5dcdb1 100644 --- a/commands/Administration/addemoji.js +++ b/commands/Administration/addemoji.js @@ -26,8 +26,12 @@ class Addemoji extends Command { message.guild.emojis .create(URL, name) - .then(emoji => message.success("administration/addemoji:SUCCESS", { emojiName: `<:${emoji.name}:${emoji.id}>` })) - .catch(() => message.error("administration/addemoji:ERROR", { emojiName: name })); + .then(emoji => message.success("administration/addemoji:SUCCESS", { + emojiName: `<:${emoji.name}:${emoji.id}>` + })) + .catch(() => message.error("administration/addemoji:ERROR", { + emojiName: name + })); } }; diff --git a/commands/Administration/automod.js b/commands/Administration/automod.js index 5d7d13d7..80accefe 100644 --- a/commands/Administration/automod.js +++ b/commands/Administration/automod.js @@ -31,7 +31,7 @@ class Automod extends Command { prefix: data.guild.prefix }); } else if (status === "off") { - if (message.mentions.channels.filter((ch) => ch.type === "text" && ch.guild.id === message.guild.id).first()) { + if (message.mentions.channels.filter((ch) => ch.type === "GUILD_TEXT" && ch.guild.id === message.guild.id).first()) { const channel = message.mentions.channels.first(); data.guild.plugins.automod.ignored.push(channel); data.guild.markModified("plugins.automod"); diff --git a/commands/Administration/backup.js b/commands/Administration/backup.js index bf91a1e2..e0f0e9ed 100644 --- a/commands/Administration/backup.js +++ b/commands/Administration/backup.js @@ -1,7 +1,6 @@ const Command = require("../../base/Command.js"), Discord = require("discord.js"), - backup = require("discord-backup"), - Sentry = require("@sentry/node"); + backup = require("discord-backup"); backup.setStorageFolder(__dirname + "../../../backups"); @@ -39,7 +38,7 @@ class Backup extends Command { message.error("misc:CANNOT_DM"); }); }).catch((err) => { - Sentry.captureException(err); + console.error(err); return message.error("misc:ERR_OCCURRED"); }); } else if (status === "load") { diff --git a/commands/Administration/configuration.js b/commands/Administration/configuration.js index d6601bda..594e0be4 100644 --- a/commands/Administration/configuration.js +++ b/commands/Administration/configuration.js @@ -21,9 +21,14 @@ class Configuration extends Command { const guildData = data.guild; const embed = new Discord.MessageEmbed() - .setAuthor(message.guild.name, message.guild.iconURL()) - .setColor(this.client.config.embed.color) - .setFooter(this.client.config.embed.footer); + .setAuthor({ + name: message.guild.name, + iconURL: message.guild.iconURL() + }) + .setColor(data.config.embed.color) + .setFooter({ + text: data.config.embed.footer + }); // Guild prefix embed.addField(message.translate("administration/configuration:PREFIX_TITLE"), guildData.prefix); @@ -82,7 +87,9 @@ class Configuration extends Command { // Dashboard link embed.addField(message.translate("administration/configuration:DASHBOARD_TITLE"), `[${message.translate("administration/configuration:DASHBOARD_CONTENT")}](${this.client.config.dashboard.baseURL})`); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/Administration/goodbye.js b/commands/Administration/goodbye.js index 887b98a6..f026bb2b 100644 --- a/commands/Administration/goodbye.js +++ b/commands/Administration/goodbye.js @@ -49,7 +49,9 @@ class Goodbye extends Command { author: message.author.toString() }); - const collector = message.channel.createMessageCollector(m => m.author.id === message.author.id, { + const filter = m => m.author.id === message.author.id; + const collector = message.channel.createMessageCollector({ + filter, time: 120000 // 2 minutes }); diff --git a/commands/Administration/ignore.js b/commands/Administration/ignore.js index 8babbb57..0e50afa8 100644 --- a/commands/Administration/ignore.js +++ b/commands/Administration/ignore.js @@ -17,7 +17,7 @@ class Ignore extends Command { } async run(message, args, data) { - const channel = message.mentions.channels.filter((ch) => ch.type === "text" && ch.guild.id === message.guild.id).first(); + const channel = message.mentions.channels.filter((ch) => ch.type === "GUILD_TEXT" && ch.guild.id === message.guild.id).first(); if (!channel) return message.error("misc:INVALID_CHANNEL"); const ignored = data.guild.ignoredChannels.includes(channel.id); diff --git a/commands/Administration/setfortniteshop.js b/commands/Administration/setfortniteshop.js deleted file mode 100644 index e2c36b1d..00000000 --- a/commands/Administration/setfortniteshop.js +++ /dev/null @@ -1,74 +0,0 @@ -const Command = require("../../base/Command.js"), - Discord = require("discord.js"), - Canvas = require("discord-canvas"); - -class Setfortniteshop extends Command { - constructor(client) { - super(client, { - name: "setfortniteshop", - dirname: __dirname, - enabled: true, - guildOnly: true, - aliases: ["setfnshop"], - memberPermissions: ["MANAGE_GUILD"], - botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"], - nsfw: false, - ownerOnly: false, - cooldown: 1000 - }); - } - - async run(message, args, data) { - if (!data.config.apiKeys.fortniteFNBR || data.config.apiKeys.fortniteFNBR.length === "") return message.error("misc:COMMAND_DISABLED"); - - if (data.guild.plugins.fortniteshop && !message.mentions.channels.first() || message.mentions.channels.first() && data.guild.plugins.fortniteshop === message.mentions.channels.first().id) { - data.guild.plugins.fortniteshop = false; - data.guild.markModified("plugins.fortniteshop"); - data.guild.save(); - return message.success("administration/setfortniteshop:DISABLED"); - }; - - const channel = message.mentions.channels.first() || message.channel; - data.guild.plugins.fortniteshop = channel.id; - data.guild.markModified("plugins.fortniteshop"); - data.guild.save(); - - message.success("administration/setfortniteshop:ENABLED", { - channel: channel.toString() - }); - - const momentName = this.client.languages.find((language) => language.name === data.guild.language || language.aliases.includes(data.guild.language)).moment; - const shop = new Canvas.FortniteShop(); - const image = await shop - .setToken(data.config.apiKeys.fortniteFNBR) - .setText("header", message.translate("general/fortniteshop:HEADER")) - .setText("daily", message.translate("general/fortniteshop:DAILY")) - .setText("featured", message.translate("general/fortniteshop:FEATURED")) - .setText("date", message.translate("general/fortniteshop:DATE", { - skipInterpolation: true - }).replace("{{date}}", "{date}")) - .setText("footer", message.translate("general/fortniteshop:FOOTER")) - .lang(momentName) - .toAttachment(); - const attachment = new Discord.MessageAttachment(image, "shop.png"); - - const embed = new Discord.MessageEmbed() - .setAuthor(this.client.translate("general/fortniteshop:DATE", { - date: this.client.printDate(new Date(Date.now()), null, message.guild.data.language) - }, message.guild.data.language), this.client.user.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) - .attachFiles(attachment) - .setImage("attachment://shop.png") - .setColor(this.client.config.embed.color) - .setFooter(this.client.config.embed.footer); - const msg = await channel.send(embed); - await msg.react("😍"); - await msg.react("😐"); - await msg.react("😭"); - } -}; - -module.exports = Setfortniteshop; \ No newline at end of file diff --git a/commands/Administration/slowmode.js b/commands/Administration/slowmode.js index eaac95e7..989f0865 100644 --- a/commands/Administration/slowmode.js +++ b/commands/Administration/slowmode.js @@ -18,7 +18,7 @@ class Slowmode extends Command { } async run(message, args, data) { - const channel = message.mentions.channels.filter((ch) => ch.type === "text" && ch.guild.id === message.guild.id).first(); + const channel = message.mentions.channels.filter((ch) => ch.type === "GUILD_TEXT" && ch.guild.id === message.guild.id).first(); if (!channel) return message.error("misc:INVALID_CHANNEL"); const time = args[1]; diff --git a/commands/Administration/welcome.js b/commands/Administration/welcome.js index 7720a757..a1fae0d5 100644 --- a/commands/Administration/welcome.js +++ b/commands/Administration/welcome.js @@ -48,7 +48,10 @@ class Welcome extends Command { message.sendT("administration/welcome:FORM_1", { author: message.author.toString() }); - const collector = message.channel.createMessageCollector(m => m.author.id === message.author.id, { + + const filter = m => m.author.id === message.author.id; + const collector = message.channel.createMessageCollector({ + filter, time: 120000 // 2 minutes }); @@ -85,7 +88,7 @@ class Welcome extends Command { if (!welcome.channel) { const channel = await Resolvers.resolveChannel({ message: msg, - channelType: "text" + channelType: "GUILD_TEXT" }); if (!channel) return message.error("misc:INVALID_CHANNEL"); diff --git a/commands/Economy/achievements.js b/commands/Economy/achievements.js index 358eee3d..82115099 100644 --- a/commands/Economy/achievements.js +++ b/commands/Economy/achievements.js @@ -28,9 +28,13 @@ class Achievements extends Command { })); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("economy/achievements:TITLE")) + .setAuthor({ + name: message.translate("economy/achievements:TITLE") + }) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); embed.addField(message.translate("economy/achievements:SEND_CMD"), message.translate("economy/achievements:PROGRESS", { now: userData.achievements.firstCommand.progress.now, @@ -68,7 +72,9 @@ class Achievements extends Command { percent: Math.round(100 * (userData.achievements.invite.progress.now / userData.achievements.invite.progress.total)) })); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/Economy/deposit.js b/commands/Economy/deposit.js index ecf3b399..dafec604 100644 --- a/commands/Economy/deposit.js +++ b/commands/Economy/deposit.js @@ -28,9 +28,7 @@ class Deposit extends Command { amount = parseInt(amount, 10); }; - if (data.memberData.money < amount) return message.error("economy/deposit:NOT_ENOUGH_CREDIT", { - money: `**${amount}** ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}` - }); + if (data.memberData.money < amount) return message.error("economy/deposit:NOT_ENOUGH_CREDIT", { money: `**${amount}** ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}` }); data.memberData.money = data.memberData.money - amount; data.memberData.bankSold = data.memberData.bankSold + amount; diff --git a/commands/Economy/leaderboard.js b/commands/Economy/leaderboard.js index caad195a..298786d8 100644 --- a/commands/Economy/leaderboard.js +++ b/commands/Economy/leaderboard.js @@ -18,7 +18,7 @@ class Leaderboard extends Command { } async run(message, args) { - const isOnlyOnMobile = (message.author.presence.clientStatus ? JSON.stringify(Object.keys(message.author.presence.clientStatus)) === JSON.stringify(["mobile"]) : false); + const isOnlyOnMobile = (message.member.presence.clientStatus ? JSON.stringify(Object.keys(message.member.presence.clientStatus)) === JSON.stringify(["mobile"]) : false); const type = args[0]; if (!type || (type !== "credits" && type !== "level" && type !== "rep")) return message.error("economy/leaderboard:MISSING_TYPE"); @@ -37,7 +37,9 @@ class Leaderboard extends Command { table.setHeading("#", message.translate("common:USER"), message.translate("common:CREDITS")); if (membersLeaderboard.length > 20) membersLeaderboard.length = 20; const newTable = await fetchUsers(membersLeaderboard, table, this.client); - message.channel.send(`\`\`\`\n${newTable.toString()}\`\`\``); + message.channel.send({ + content: `\`\`\`\n${newTable.toString()}\`\`\`` + }); } else if (type === "level") { const members = await this.client.membersData.find({ guildID: message.guild.id @@ -52,9 +54,15 @@ class Leaderboard extends Command { table.setHeading("#", message.translate("common:USER"), message.translate("common:LEVEL")); if (membersLeaderboard.length > 20) membersLeaderboard.length = 20; const newTable = await fetchUsers(membersLeaderboard, table, this.client); - message.channel.send(`\`\`\`\n${newTable.toString()}\`\`\``); + message.channel.send({ + content: `\`\`\`\n${newTable.toString()}\`\`\`` + }); } else if (type === "rep") { - const users = await this.client.usersData.find().lean(), + const users = await this.client.usersData.find({ + rep: { + $gt: 0 + } + }).lean(), usersLeaderboard = users.map((u) => { return { id: u.id, @@ -65,7 +73,9 @@ class Leaderboard extends Command { table.setHeading("#", message.translate("common:USER"), message.translate("common:POINTS")); if (usersLeaderboard.length > 20) usersLeaderboard.length = 20; const newTable = await fetchUsers(usersLeaderboard, table, this.client); - message.channel.send(`\`\`\`\n${newTable.toString()}\`\`\``); + message.channel.send({ + content: `\`\`\`\n${newTable.toString()}\`\`\`` + }); }; if (isOnlyOnMobile) message.sendT("economy/leaderboard:MOBILE"); diff --git a/commands/Economy/marry.js b/commands/Economy/marry.js index 8e0a1a4b..d913f198 100644 --- a/commands/Economy/marry.js +++ b/commands/Economy/marry.js @@ -78,7 +78,9 @@ class Marry extends Command { to: member.user.toString() }); - const collector = new Discord.MessageCollector(message.channel, (m) => m.author.id === member.id, { + const filter = m => m.author.id === member.id; + const collector = new Discord.MessageCollector(message.channel, { + filter, time: 120000 }); @@ -96,7 +98,7 @@ class Marry extends Command { // Delete pending request delete pendings[message.author.id]; if (reason === "time") { - return message.error("misc:TIMES_UP", { + return message.error("economy/marry:TIMEOUT", { username: member.user.toString() }); }; diff --git a/commands/Economy/money.js b/commands/Economy/money.js index e83be058..db88c74f 100644 --- a/commands/Economy/money.js +++ b/commands/Economy/money.js @@ -37,7 +37,7 @@ class Credits extends Command { const commonsGuilds = this.client.guilds.cache.filter((g) => g.members.cache.get(user.id)); let globalMoney = 0; - await asyncForEach(commonsGuilds.array(), async (guild) => { + await asyncForEach(commonsGuilds, async (guild) => { const memberData = await this.client.findOrCreateMember({ id: user.id, guildID: guild.id @@ -47,19 +47,26 @@ class Credits extends Command { }); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("economy/money:TITLE", { - username: member.user.username - }), member.user.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) + .setAuthor({ + name: message.translate("economy/money:TITLE", { + username: member.user.username + }), + iconURL: member.user.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .addField(message.translate("economy/profile:CASH"), `**${memberData.money}** ${message.getNoun(memberData.money, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, true) .addField(message.translate("economy/profile:BANK"), `**${memberData.bankSold}** ${message.getNoun(memberData.bankSold, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, true) .addField(message.translate("economy/profile:GLOBAL"), `**${globalMoney}** ${message.getNoun(globalMoney, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, true) - .setColor(this.client.config.embed.color) - .setFooter(this.client.config.embed.footer); - message.channel.send(embed); + .setColor(data.config.embed.color) + .setFooter({ + text: data.config.embed.footer + }); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/Economy/pay.js b/commands/Economy/pay.js index 063a2dd4..74c4ae59 100644 --- a/commands/Economy/pay.js +++ b/commands/Economy/pay.js @@ -26,13 +26,9 @@ class Pay extends Command { if (!sentAmount || isNaN(sentAmount) || parseInt(sentAmount, 10) <= 0) return message.error("economy/pay:INVALID_AMOUNT", { username: member.user.tag }); const amount = Math.ceil(parseInt(sentAmount, 10)); -<<<<<<< HEAD - if (amount > data.memberData.money) return message.error("economy/pay:ENOUGH_MONEY", { amount: `${amount} ${message.getNoun(amount, message.translate("misc:NOUNS:CREDITS:1"), message.translate("misc:NOUNS:CREDITS:2"), message.translate("misc:NOUNS:CREDITS:5"))}` }); -======= if (amount > data.memberData.money) return message.error("economy/pay:ENOUGH_MONEY", { amount: `**${amount}** ${message.getNoun(amount, message.translate("misc:NOUNS:CREDITS:1"), message.translate("misc:NOUNS:CREDITS:2"), message.translate("misc:NOUNS:CREDITS:5"))}` }); ->>>>>>> discordjs-13 const memberData = await this.client.findOrCreateMember({ id: member.id, diff --git a/commands/Economy/profile.js b/commands/Economy/profile.js index 35eabbb6..dd6ae721 100644 --- a/commands/Economy/profile.js +++ b/commands/Economy/profile.js @@ -42,7 +42,7 @@ class Profile extends Command { const commonsGuilds = client.guilds.cache.filter((g) => g.members.cache.get(member.id)); let globalMoney = 0; - await asyncForEach(commonsGuilds.array(), async (guild) => { + await asyncForEach(commonsGuilds, async (guild) => { const memberData = await client.findOrCreateMember({ id: member.id, guildID: guild.id @@ -52,17 +52,16 @@ class Profile extends Command { }); const profileEmbed = new Discord.MessageEmbed() - .setAuthor(message.translate("economy/profile:TITLE", { - username: member.user.tag - }), member.user.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) - .attachFiles([{ - attachment: await userData.getAchievements(), - name: "achievements.png" - }]) + .setAuthor({ + name: message.translate("economy/profile:TITLE", { + username: member.user.tag + }), + iconURL: member.user.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .setImage("attachment://achievements.png") .addField(message.translate("economy/profile:BIO"), userData.bio ? userData.bio : message.translate("economy/profile:NO_BIO")) .addField(message.translate("economy/profile:CASH"), `**${memberData.money}** ${message.getNoun(memberData.money, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, true) @@ -78,12 +77,11 @@ class Profile extends Command { prefix: data.guild.prefix })) .setColor(data.config.embed.color) // Sets the color of the embed - .setFooter(data.config.embed.footer) // Sets the footer of the embed + .setFooter({ + text: data.config.embed.footer + }) // Sets the footer of the embed .setTimestamp(); -<<<<<<< HEAD - message.channel.send(profileEmbed); // Send the embed in the current channel -======= const buffer = await userData.getAchievements(); message.channel.send({ @@ -93,7 +91,6 @@ class Profile extends Command { attachment: buffer }] }); // Send the embed in the current channel ->>>>>>> discordjs-13 } }; diff --git a/commands/Economy/rob.js b/commands/Economy/rob.js index 22e41a4d..0822be45 100644 --- a/commands/Economy/rob.js +++ b/commands/Economy/rob.js @@ -19,9 +19,7 @@ class Rob extends Command { async run(message, args, data) { const member = await this.client.resolveMember(args[0], message.guild); if (!member) return message.error("economy/rob:MISSING_MEMBER"); - if (member.id === message.author.id) return message.error("economy/rob:YOURSELF"); - if (member.user.bot) return message.error("economy/rob:BOT_USER"); const memberData = await this.client.findOrCreateMember({ id: member.id, @@ -40,7 +38,10 @@ class Rob extends Command { if (amountToRob > memberData.money) return message.error("economy/rob:NOT_ENOUGH_MEMBER", { username: member.user.username }); const potentiallyLose = Math.floor(amountToRob * 1.5); - if (potentiallyLose > data.memberData.money) return message.error("economy/rob:NOT_ENOUGH_AUTHOR", { moneyMin: `${potentiallyLose} ${message.getNoun(potentiallyLose, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, moneyCurrent: `${data.memberData.money} ${message.getNoun(data.memberData.money, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}` }); + if (potentiallyLose > data.memberData.money) return message.error("economy/rob:NOT_ENOUGH_AUTHOR", { + moneyMin: `${potentiallyLose} ${message.getNoun(potentiallyLose, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, + moneyCurrent: `${data.memberData.money} ${message.getNoun(data.memberData.money, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}` + }); const itsAWon = Math.floor(this.client.functions.randomNum(0, 100) < 25); @@ -55,7 +56,7 @@ class Rob extends Command { username: member.user.username }); data.memberData.money += amountToRob; - memberData.money -= amountToRob; + memberData.money -= amountToRob, 10; memberData.save(); data.memberData.save(); } else { diff --git a/commands/Economy/slots.js b/commands/Economy/slots.js index fe11062d..73b4ab6f 100644 --- a/commands/Economy/slots.js +++ b/commands/Economy/slots.js @@ -33,9 +33,7 @@ class Slots extends Command { // Gets the amount provided let amount = args[0]; if (!amount || isNaN(amount) || amount < 1) amount = 50; - if (amount > data.memberData.money) return message.error("economy/slots:NOT_ENOUGH", { - money: `${amount} ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}` - }); + if (amount > data.memberData.money) return message.error("economy/slots:NOT_ENOUGH", { money: `${amount} ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}` }); amount = Math.round(amount); @@ -77,11 +75,13 @@ class Slots extends Command { msg += "| : : : **" + (message.translate("common:VICTORY").toUpperCase()) + "** : : : |"; tmsg.edit(msg); const credits = getCredits(amount, true); - message.channel.send("**!! ДЖЕКПОТ !!**\n" + message.translate("economy/slots:VICTORY", { - money: `${amount} ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, - won: `${credits} ${message.getNoun(credits, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, - username: message.author.username - })); + message.channel.send({ + content: "**!! ДЖЕКПОТ !!**\n" + message.translate("economy/slots:VICTORY", { + money: `${amount} ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, + won: `${credits} ${message.getNoun(credits, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, + username: message.author.username + }) + }); const toAdd = credits - amount; data.memberData.money = data.memberData.money + toAdd; if (!data.userData.achievements.slots.achieved) { @@ -106,11 +106,13 @@ class Slots extends Command { msg += "| : : : **" + (message.translate("common:VICTORY").toUpperCase()) + "** : : : |"; tmsg.edit(msg); const credits = getCredits(amount, false); - message.channel.send(message.translate("economy/slots:VICTORY", { - money: `${amount} ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, - won: `${credits} ${message.getNoun(credits, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, - username: message.author.username - })); + message.channel.send({ + content: message.translate("economy/slots:VICTORY", { + money: `${amount} ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, + won: `${credits} ${message.getNoun(credits, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, + username: message.author.username + }) + }); const toAdd = credits - amount; data.memberData.money = data.memberData.money + toAdd; if (!data.userData.achievements.slots.achieved) { @@ -132,10 +134,12 @@ class Slots extends Command { }; msg += "| : : : **" + (message.translate("common:DEFEAT").toUpperCase()) + "** : : : |"; - message.channel.send(message.translate("economy/slots:DEFEAT", { - money: `${amount} ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, - username: message.author.username - })); + message.channel.send({ + content: message.translate("economy/slots:DEFEAT", { + money: `${amount} ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, + username: message.author.username + }) + }); data.memberData.money = data.memberData.money - amount; if (!data.userData.achievements.slots.achieved) { data.userData.achievements.slots.progress.now = 0; diff --git a/commands/Economy/withdraw.js b/commands/Economy/withdraw.js index 327a3a28..77560414 100644 --- a/commands/Economy/withdraw.js +++ b/commands/Economy/withdraw.js @@ -28,9 +28,7 @@ class Withdraw extends Command { amount = parseInt(amount, 10); }; - if (data.memberData.bankSold < amount) return message.error("economy/withdraw:NOT_ENOUGH", { - money: `**${amount}** ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}` - }); + if (data.memberData.bankSold < amount) return message.error("economy/withdraw:NOT_ENOUGH", { money: `**${amount}** ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}` }); data.memberData.money = data.memberData.money + amount; data.memberData.bankSold = data.memberData.bankSold - amount; diff --git a/commands/Economy/work.js b/commands/Economy/work.js index 4c5d6dc2..9a9b7220 100644 --- a/commands/Economy/work.js +++ b/commands/Economy/work.js @@ -40,11 +40,14 @@ class Work extends Command { await data.memberData.save(); const embed = new Discord.MessageEmbed() - .setFooter(message.translate("economy/work:AWARD"), message.author.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) + .setFooter({ + text: message.translate("economy/work:AWARD"), + iconURL: message.author.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .setColor(data.config.embed.color); const award = [ @@ -80,11 +83,7 @@ class Work extends Command { data.memberData.save(); const messageOptions = { -<<<<<<< HEAD - embed -======= embeds: [embed] ->>>>>>> discordjs-13 }; if (!data.userData.achievements.work.achieved) { data.userData.achievements.work.progress.now += 1; diff --git a/commands/Fun/8ball.js b/commands/Fun/8ball.js index ae8bbcce..e5d69b37 100644 --- a/commands/Fun/8ball.js +++ b/commands/Fun/8ball.js @@ -22,7 +22,9 @@ class Eightball extends Command { const answerN = this.client.functions.randomNum(1, 19); const answer = message.translate(`fun/8ball:RESPONSE_${answerN + 1}`); - message.channel.send(answer); + message.channel.send({ + content: answer + }); } }; diff --git a/commands/Fun/ascii.js b/commands/Fun/ascii.js index fc8ccddd..232e260f 100644 --- a/commands/Fun/ascii.js +++ b/commands/Fun/ascii.js @@ -25,7 +25,9 @@ class Ascii extends Command { const rendered = await figletAsync(text); - message.channel.send("```" + rendered + "```"); + message.channel.send({ + content: "```" + rendered + "```" + }); } }; diff --git a/commands/Fun/choice.js b/commands/Fun/choice.js index f0f0df91..28cac91e 100644 --- a/commands/Fun/choice.js +++ b/commands/Fun/choice.js @@ -29,7 +29,9 @@ class Choice extends Command { edit: true }); const result = answers[parseInt(Math.floor(Math.random() * answers.length))]; - message.channel.send("```" + result + "```"); + message.channel.send({ + content: "```" + result + "```" + }); }, 1500); } }; diff --git a/commands/Fun/findwords.js b/commands/Fun/findwords.js index de904bbf..6915d568 100644 --- a/commands/Fun/findwords.js +++ b/commands/Fun/findwords.js @@ -61,7 +61,9 @@ class FindWords extends Command { }, false, false, "warn"); // init a collector to receive the answers - const collector = new Discord.MessageCollector(message.channel, (m) => !m.author.bot, { + const filter = m => !m.author.bot; + const collector = new Discord.MessageCollector(message.channel, { + filter, time: 20000 }); diff --git a/commands/Fun/fml.js b/commands/Fun/fml.js index d272b808..b02b92f9 100644 --- a/commands/Fun/fml.js +++ b/commands/Fun/fml.js @@ -25,10 +25,14 @@ class Fml extends Command { const embed = new Discord.MessageEmbed() .setDescription(fml.content) - .setFooter(message.translate("fun/fml:FOOTER")) - .setColor(this.client.config.embed.color); + .setFooter({ + text: message.translate("fun/fml:FOOTER") + }) + .setColor(data.config.embed.color); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/Fun/joke.js b/commands/Fun/joke.js index bfe40667..b2ca3017 100644 --- a/commands/Fun/joke.js +++ b/commands/Fun/joke.js @@ -25,10 +25,14 @@ class Joke extends Command { const embed = new Discord.MessageEmbed() .setDescription(joke.toDiscordSpoils()) - .setFooter(message.translate("fun/joke:FOOTER")) - .setColor(this.client.config.embed.color); + .setFooter({ + text: message.translate("fun/joke:FOOTER") + }) + .setColor(data.config.embed.color); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/Fun/lmg.js b/commands/Fun/lmg.js index 5bd1207f..167f5942 100644 --- a/commands/Fun/lmg.js +++ b/commands/Fun/lmg.js @@ -20,7 +20,9 @@ class Lmg extends Command { const question = args.join(" "); if (!question) return message.error("fun/lmg:MISSING"); const encodedQuestion = question.replace(/[' '_]/g, "+"); - await message.channel.send(`https://google.gik-team.com/?q=${encodedQuestion}`); + await message.channel.send({ + content: `https://google.gik-team.com/?q=${encodedQuestion}` + }); message.delete().catch(() => {}); } }; diff --git a/commands/Fun/lovecalc.js b/commands/Fun/lovecalc.js index 09011624..e01f738a 100644 --- a/commands/Fun/lovecalc.js +++ b/commands/Fun/lovecalc.js @@ -18,7 +18,7 @@ class Lovecalc extends Command { }); } - async run(message) { + async run(message, args, data) { const firstMember = message.mentions.members.filter(m => m.id !== message.author.id).first(); if (!firstMember) return message.error("fun/lovecalc:MISSING"); const secondMember = message.mentions.members @@ -37,16 +37,22 @@ class Lovecalc extends Command { const percent = parseInt(string.substr(0, 2), 10); const embed = new Discord.MessageEmbed() - .setAuthor(`❤️ ${message.translate("fun/lovecalc:DESCRIPTION")}`) + .setAuthor({ + name: `❤️ ${message.translate("fun/lovecalc:DESCRIPTION")}` + }) .setDescription(message.translate("fun/lovecalc:CONTENT", { percent, firstUsername: firstMember.user.username, secondUsername: secondMember.user.username })) - .setColor(this.client.config.embed.color) - .setFooter(this.client.config.embed.footer); + .setColor(data.config.embed.color) + .setFooter({ + text: data.config.embed.footer + }); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/Fun/number.js b/commands/Fun/number.js index bb7b8523..2263478e 100644 --- a/commands/Fun/number.js +++ b/commands/Fun/number.js @@ -30,7 +30,9 @@ class Number extends Command { // Store the date wich the game has started const gameCreatedAt = Date.now(); - const collector = new Discord.MessageCollector(message.channel, m => !m.author.bot, { + const filter = m => !m.author.bot; + const collector = new Discord.MessageCollector(message.channel, { + filter, time: 480000 // 8 minutes }); currentGames[message.guild.id] = true; diff --git a/commands/General/activity.js b/commands/General/activity.js index d3288450..94e48854 100644 --- a/commands/General/activity.js +++ b/commands/General/activity.js @@ -22,153 +22,201 @@ class Activity extends Command { if (!voice) return message.error("music/play:NO_VOICE_CHANNEL"); const perms = voice.permissionsFor(this.client.user); - if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT"); + if (!perms.has(Discord.Permissions.FLAGS.CONNECT) || !perms.has(Discord.Permissions.FLAGS.SPEAK)) return message.error("music/play:VOICE_CHANNEL_CONNECT"); const activities = ["awkword", "betrayal", "checkers", "chess", "doodlecrew", "fishing", "lettertile", "poker", "spellcast", "wordsnack", "puttparty", "youtube"]; const activity = args[0]; switch (activity) { case "awkword": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "awkword").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "awkword").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Awkword") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Awkword", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "betrayal": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "betrayal").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "betrayal").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Betrayal.io") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Betrayal.io", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "checkers": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "checkers").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "checkers").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Checkers In The Park") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Checkers In The Park", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "chess": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "chess").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "chess").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Chess In The Park") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Chess In The Park", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "doodlecrew": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "doodlecrew").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "doodlecrew").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Doodle Crew") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Doodle Crew", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "fishing": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "fishing").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "fishing").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Fishington.io") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Fishington.io", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "lettertile": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "lettertile").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "lettertile").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Letter Tile") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Letter Tile", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "poker": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "poker").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "poker").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Poker Night") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Poker Night", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "spellcast": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "spellcast").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "spellcast").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Spell Cast") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Spell Cast", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "wordsnack": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "wordsnack").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "wordsnack").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Words Snack") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Words Snack", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "puttparty": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "puttparty").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "puttparty").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Puttparty") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Puttparty", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; case "youtube": - this.client.discordTogether.createTogetherCode(message.member.voice.channelID, "youtube").then(async invite => { + this.client.discordTogether.createTogetherCode(message.member.voice.channelId, "youtube").then(async invite => { const embed = new Discord.MessageEmbed() .setTitle("Youtube Together") .setColor(data.config.embed.color) .setDescription(`**[${message.translate("misc:CLICK_HERE", { activity: "Youtube Together", channel: voice.name })}](${invite.code})**`) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }); break; @@ -177,9 +225,13 @@ class Activity extends Command { .setTitle(message.translate("general/activity:TITLE")) .setDescription(activities.join("\n")) .setColor(data.config.embed.color) - .setFooter(message.translate("general/activity:FOOTER")) + .setFooter({ + text: message.translate("general/activity:FOOTER") + }) .setTimestamp() - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); break; }; } diff --git a/commands/General/fortnite.js b/commands/General/fortnite.js deleted file mode 100644 index 722a6dc4..00000000 --- a/commands/General/fortnite.js +++ /dev/null @@ -1,77 +0,0 @@ -const Command = require("../../base/Command.js"), - Canvas = require("discord-canvas"), - Discord = require("discord.js"); - -class Fortnite extends Command { - constructor(client) { - super(client, { - name: "fortnite", - dirname: __dirname, - enabled: true, - guildOnly: false, - aliases: ["fn"], - memberPermissions: [], - botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"], - nsfw: false, - ownerOnly: false, - cooldown: 2000 - }); - } - - async run(message, args, data) { - if (!data.config.apiKeys.fortniteTRN || data.config.apiKeys.fortniteTRN.length === "") return message.success("misc:COMMAND_DISABLED"); - - const stats = new Canvas.FortniteStats(); - - const platform = args[0].toLowerCase(); - if (!platform || (platform !== "pc" && platform !== "xbl" && platform !== "psn")) return message.error("general/fortnite:MISSING_PLATFORM"); - - const user = args.slice(1).join(" "); - if (!user) return message.error("general/fortnite:MISSING_USERNAME"); - - const m = await message.sendT("misc:PLEASE_WAIT", null, { - prefixEmoji: "loading" - }); - - const statsImage = await stats - .setToken(data.config.apiKeys.fortniteTRN) - .setUser(user) - .setPlatform(platform) - .setText("averageKills", message.translate("general/fortnite:AVERAGE_KILLS")) - .setText("averageKill", message.translate("general/fortnite:AVERAGE_KILL")) - .setText("wPercent", message.translate("general/fortnite:W_PERCENT")) - .setText("winPercent", message.translate("general/fortnite:WIN_PERCENT")) - .setText("kD", message.translate("general/fortnite:KD")) - .setText("wins", message.translate("general/fortnite:WINS")) - .setText("win", message.translate("general/fortnite:WIN")) - .setText("kills", message.translate("general/fortnite:KILLS")) - .setText("kill", message.translate("general/fortnite:KILL")) - .setText("matches", message.translate("general/fortnite:MATCHES")) - .setText("match", message.translate("general/fortnite:MATCH")) - .setText("footer", message.translate("general/fortnite:FOOTER")) - .toAttachment(); - - if (!statsImage) { - m.delete(); - return message.error("general/fortnite:NOT_FOUND", { - platform, - search: user - }); - }; - - // Send embed - const attachment = new Discord.MessageAttachment(statsImage.toBuffer(), "fortnite-stats-image.png"), - embed = new Discord.MessageEmbed() - .setDescription(message.translate("general/fortnite:TITLE", { - username: `[${stats.data.username}](${stats.data.url.replace(new RegExp(" ", "g"), "%20")})` - })) - .attachFiles(attachment) - .setImage("attachment://fortnite-stats-image.png") - .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); - message.channel.send(embed); - m.delete(); - } -}; - -module.exports = Fortnite; \ No newline at end of file diff --git a/commands/General/fortniteshop.js b/commands/General/fortniteshop.js deleted file mode 100644 index c0dcf700..00000000 --- a/commands/General/fortniteshop.js +++ /dev/null @@ -1,61 +0,0 @@ -const Command = require("../../base/Command.js"), - Discord = require("discord.js"), - Canvas = require("discord-canvas"); - -class Fortniteshop extends Command { - constructor(client) { - super(client, { - name: "fortniteshop", - dirname: __dirname, - enabled: true, - guildOnly: false, - aliases: ["fns"], - memberPermissions: [], - botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"], - nsfw: false, - ownerOnly: false, - cooldown: 2000 - }); - } - - async run(message, args, data) { - if (!data.config.apiKeys.fortniteFNBR || data.config.apiKeys.fortniteFNBR.length === "") return message.error("misc:COMMAND_DISABLED"); - - const m = await message.sendT("misc:PLEASE_WAIT", null, { - prefixEmoji: "loading" - }); - - const momentName = this.client.languages.find((language) => language.name === data.guild.language || language.aliases.includes(data.guild.language)).moment; - const shop = new Canvas.FortniteShop(); - const image = await shop - .setToken(data.config.apiKeys.fortniteFNBR) - .setText("header", message.translate("general/fortniteshop:HEADER")) - .setText("daily", message.translate("general/fortniteshop:DAILY")) - .setText("featured", message.translate("general/fortniteshop:FEATURED")) - .setText("date", message.translate("general/fortniteshop:DATE", { - skipInterpolation: true - }).replace("{{date}}", "{date}")) - .setText("footer", message.translate("general/fortniteshop:FOOTER")) - .lang(momentName) - .toAttachment(); - const attachment = new Discord.MessageAttachment(image, "shop.png"); - - const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("general/fortniteshop:HEADER", { - date: message.printDate(new Date(Date.now())) - }), this.client.user.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) - .attachFiles(attachment) - .setImage("attachment://shop.png") - .setColor(this.client.config.embed.color) - .setFooter(this.client.config.embed.footer); - await message.channel.send(embed); - await m.delete(); - return; - } -}; - -module.exports = Fortniteshop; \ No newline at end of file diff --git a/commands/General/github.js b/commands/General/github.js index 5876c539..e135d31a 100644 --- a/commands/General/github.js +++ b/commands/General/github.js @@ -23,11 +23,14 @@ class Github extends Command { const json = await res.json(); const embed = new Discord.MessageEmbed() - .setAuthor(this.client.user.tag, this.client.user.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) + .setAuthor({ + name: this.client.user.tag, + iconURL: this.client.user.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .setDescription(`[${message.translate("general/github:CLICK_HERE")}](${json.html_url})`) .addField("Название", json.name, true) .addField("Звёзды", json.stargazers_count, true) @@ -36,9 +39,13 @@ class Github extends Command { .addField(message.translate("general/github:OWNER"), `[${json.owner.login}](${json.owner.html_url})`) .setImage(json.owner.avatar_url) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/General/hastebin.js b/commands/General/hastebin.js index 7b9553d2..a6f8518d 100644 --- a/commands/General/hastebin.js +++ b/commands/General/hastebin.js @@ -37,10 +37,14 @@ class Hastebin extends Command { const url = `https://hastebin.com/${json.key}.js`; const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("general/hastebin:SUCCESS")) + .setAuthor({ + name: message.translate("general/hastebin:SUCCESS") + }) .setDescription(url) .setColor(data.config.embed.color); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } catch (e) { message.error("misc:ERR_OCCURRED"); }; diff --git a/commands/General/help.js b/commands/General/help.js index 64cae86d..81a5f0d6 100644 --- a/commands/General/help.js +++ b/commands/General/help.js @@ -41,18 +41,24 @@ class Help extends Command { }); const groupEmbed = new Discord.MessageEmbed() - .setAuthor(message.translate("general/help:CMD_TITLE", { - cmd: cmd.help.name - })) + .setAuthor({ + name: message.translate("general/help:CMD_TITLE", { + cmd: cmd.help.name + }) + }) .addField(message.translate("general/help:FIELD_DESCRIPTION"), description) .addField(message.translate("general/help:FIELD_USAGE"), usage) .addField(message.translate("general/help:FIELD_EXAMPLES"), examples) .addField(message.translate("general/help:FIELD_ALIASES"), cmd.help.aliases.length > 0 ? cmd.help.aliases.map(a => "`" + a + "`").join("\n") : message.translate("general/help:NO_ALIAS")) .addField(message.translate("general/help:FIELD_PERMISSIONS"), cmd.conf.memberPermissions.length > 0 ? cmd.conf.memberPermissions.map((p) => `\`${p}\``).join("\n") : message.translate("general/help:NO_REQUIRED_PERMISSION")) .setColor(this.client.config.embed.color) - .setFooter(this.client.config.embed.footer); + .setFooter({ + text: this.client.config.embed.footer + }); - return message.channel.send(groupEmbed); + return message.channel.send({ + embeds: [groupEmbed] + }); }; const categories = []; @@ -72,11 +78,14 @@ class Help extends Command { prefix: message.guild ? data.guild.prefix : "" })) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); categories.sort().forEach((cat) => { const tCommands = commands.filter((cmd) => cmd.help.category === cat); embed.addField(`${emojis.categories[cat.toLowerCase()]} ${cat} - (${tCommands.size})`, `${tCommands.map((cmd) => `${cmd.help.name}`).join(", ")}`); }); + if (message.guild) { if (data.guild.customCommands.length > 0) embed.addField(`${emojis.categories.custom} ${message.guild.name} | ${message.translate("general/help:CUSTOM_COMMANDS")} - (${data.guild.customCommands.length})`, data.guild.customCommands.map((cmd) => `\`${cmd.name}\``).join(", ")); }; @@ -87,14 +96,20 @@ class Help extends Command { donateLink: "https://qiwi.com/n/JONNYBRO/", owner: this.client.config.owner.id })); - embed.setAuthor(message.translate("general/help:TITLE", { - name: this.client.user.username - }), this.client.user.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })); - return message.channel.send(embed); + embed.setAuthor({ + name: message.translate("general/help:TITLE", { + name: this.client.user.username + }), + iconURL: this.client.user.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }); + + return message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/General/invitations.js b/commands/General/invitations.js index 570f89d1..f29ed0f2 100644 --- a/commands/General/invitations.js +++ b/commands/General/invitations.js @@ -21,7 +21,7 @@ class Invitations extends Command { let member = await this.client.resolveMember(args[0], message.guild); if (!member) member = message.member; - const invites = await message.guild.fetchInvites().catch(() => {}); + const invites = await message.guild.invites.fetch().catch(() => {}); if (!invites) return message.error("misc:ERR_OCCURRED"); const memberInvites = invites.filter((i) => i.inviter && i.inviter.id === member.user.id); @@ -48,8 +48,12 @@ class Invitations extends Command { const embed = new Discord.MessageEmbed() .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer) - .setAuthor(message.translate("general/invitations:TRACKER")) + .setFooter({ + text: data.config.embed.footer + }) + .setAuthor({ + name: message.translate("general/invitations:TRACKER") + }) .setDescription(message.translate("general/invitations:TITLE", { member: member.user.tag, guild: message.guild.name @@ -59,7 +63,9 @@ class Invitations extends Command { })) .addField(message.translate("general/invitations:FIELD_CODES"), content); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/General/invite.js b/commands/General/invite.js index 5e5c81c7..14608be4 100644 --- a/commands/General/invite.js +++ b/commands/General/invite.js @@ -18,14 +18,21 @@ class Invite extends Command { } async run(message, args, data) { - const inviteLink = `https://discordapp.com/oauth2/authorize?client_id=${this.client.user.id}&scope=bot&permissions=8`; + const inviteLink = this.client.generateInvite({ + scopes: ["bot"], + permissions: [Discord.Permissions.FLAGS.ADMINISTRATOR] + }); const voteURL = `https://discordbots.org/bot/${this.client.user.id}/vote`; const supportURL = await this.client.functions.supportLink(this.client); - if (args[0] && args[0] === "copy") return message.channel.send(inviteLink); + if (args[0] && args[0] === "copy") return message.channel.send({ + content: inviteLink + }); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("general/invite:LINKS")) + .setAuthor({ + name: message.translate("general/invite:LINKS") + }) .setDescription(message.translate("general/invite:TIP", { prefix: data.guild.prefix || "" })) @@ -33,9 +40,13 @@ class Invite extends Command { .addField(message.translate("general/invite:VOTE"), voteURL) .addField(message.translate("general/invite:SUPPORT"), supportURL) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/General/minecraft.js b/commands/General/minecraft.js index 0a7f2883..17134ea4 100644 --- a/commands/General/minecraft.js +++ b/commands/General/minecraft.js @@ -66,9 +66,11 @@ class Minecraft extends Command { const imgAttachment = new Discord.MessageAttachment(await imgRes.buffer(), "success.png"); const mcEmbed = new Discord.MessageEmbed() - .setAuthor(message.translate("general/minecraft:FIELD_NAME", { - ip: json.name - })) + .setAuthor({ + name: message.translate("general/minecraft:FIELD_NAME", { + ip: json.name + }) + }) .addField(message.translate("general/minecraft:FIELD_VERSION"), json.raw.vanilla.raw.version.name) .addField(message.translate("general/minecraft:FIELD_CONNECTED"), message.translate("general/minecraft:PLAYERS", { count: (json.raw.players ? json.raw.players.online : json.players.length) @@ -80,9 +82,15 @@ class Minecraft extends Command { .addField(message.translate("general/minecraft:FIELD_IP"), json.connect) .setColor(data.config.embed.color) .setThumbnail(favicon) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); - m.edit(null, [mcEmbed, imgAttachment]); + m.edit({ + content: null, + embeds: [mcEmbed], + files: [imgAttachment] + }); } }; diff --git a/commands/General/permissions.js b/commands/General/permissions.js index b4b18338..c79a6773 100644 --- a/commands/General/permissions.js +++ b/commands/General/permissions.js @@ -37,7 +37,9 @@ class Permissions extends Command { }; }); text += `\n${total.allowed} ✅ | ${total.denied} ❌` + "\n```"; - message.channel.send(text); + message.channel.send({ + content: text + }); } }; diff --git a/commands/General/ping.js b/commands/General/ping.js index 46540452..560996d5 100644 --- a/commands/General/ping.js +++ b/commands/General/ping.js @@ -22,9 +22,7 @@ class Ping extends Command { }).then((m) => { m.sendT("general/ping:CONTENT", { ping: m.createdTimestamp - message.createdTimestamp - }, { - edit: true - }); + }, { edit: true }); }); } }; diff --git a/commands/General/quote.js b/commands/General/quote.js index 4318b3a7..57f88980 100644 --- a/commands/General/quote.js +++ b/commands/General/quote.js @@ -20,14 +20,19 @@ class Quote extends Command { async run(message, args, data) { function embed(m) { const embed = new Discord.MessageEmbed() - .setAuthor(m.author.tag, m.author.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) + .setAuthor({ + name: m.author.tag, + iconURL: m.author.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .setDescription(m.content) .setColor(m.member ? m.member.roles.highest ? m.member.roles.highest.color : data.config.embed.color : data.config.embed.color) - .setFooter(m.guild.name + " | #" + m.channel.name) + .setFooter({ + text: m.guild.name + " | #" + m.channel.name + }) .setTimestamp(m.createdTimestamp); if (m.attachments.size > 0) embed.setImage(m.attachments.first().url); return embed; @@ -35,7 +40,9 @@ class Quote extends Command { const msgID = args[0]; if (isNaN(msgID)) { - message.author.send(message.translate("general/quote:MISSING_ID")).then(() => { + message.author.send({ + content: message.translate("general/quote:MISSING_ID") + }).then(() => { message.delete(); }).catch(() => { message.error("misc:CANNOT_DM"); @@ -66,7 +73,9 @@ class Quote extends Command { return; }).then((msg) => { message.delete(); - message.channel.send(embed(msg)); + message.channel.send({ + embeds: [embed(msg)] + }); }); } else { channel.messages.fetch(msgID).catch(() => { @@ -78,7 +87,9 @@ class Quote extends Command { return; }).then((msg) => { message.delete(); - message.channel.send(embed(msg)); + message.channel.send({ + embeds: [embed(msg)] + }); }); }; } diff --git a/commands/General/report.js b/commands/General/report.js index 9f920677..91fff91c 100644 --- a/commands/General/report.js +++ b/commands/General/report.js @@ -29,24 +29,31 @@ class Report extends Command { if (!rep) return message.error("general/report:MISSING_REASON"); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("general/report:TITLE", { - user: member.user.tag - }), message.author.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) + .setAuthor({ + name: message.translate("general/report:TITLE", { + user: member.user.tag + }), + iconURL: message.author.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .addField(message.translate("common:AUTHOR"), message.author.tag, true) .addField(message.translate("common:DATE"), message.printDate(new Date(Date.now())), true) .addField(message.translate("common:REASON"), rep, true) .addField(message.translate("common:USER"), `\`${member.user.tag}\` (${member.user.toString()})`, true) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); const success = Discord.Util.parseEmoji(this.client.customEmojis.success).id; const error = Discord.Util.parseEmoji(this.client.customEmojis.error).id; - repChannel.send(embed).then(async (m) => { + repChannel.send({ + embeds: [embed] + }).then(async (m) => { await m.react(success); await m.react(error); }); diff --git a/commands/General/serverinfo.js b/commands/General/serverinfo.js index 030de95e..8b008819 100644 --- a/commands/General/serverinfo.js +++ b/commands/General/serverinfo.js @@ -32,9 +32,12 @@ class Serverinfo extends Command { const owner = await guild.fetchOwner(); const embed = new Discord.MessageEmbed() - .setAuthor(guild.name, guild.iconURL({ - dynamic: true - })) + .setAuthor({ + name: guild.name, + iconURL: guild.iconURL({ + dynamic: true + }) + }) .setThumbnail(guild.iconURL({ dynamic: true })) @@ -49,14 +52,18 @@ class Serverinfo extends Command { .addField(this.client.customEmojis.crown + message.translate("common:OWNER"), owner.toString(), true) .addField(this.client.customEmojis.boost + message.translate("general/serverinfo:BOOSTS"), guild.premiumSubscriptionCount || "0", true) .addField(this.client.customEmojis.channels + message.translate("common:CHANNELS"), - `${guild.channels.cache.filter(c => c.type === "text").size} ${message.getNoun(guild.channels.cache.filter(c => c.type === "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 === "voice").size} ${message.getNoun(guild.channels.cache.filter(c => c.type === "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 === "category").size} ${message.getNoun(guild.channels.cache.filter(c => c.type === "category").size, message.translate("misc:NOUNS:CATEGORY:1"), message.translate("misc:NOUNS:CATEGORY:2"), message.translate("misc:NOUNS:CATEGORY:5"))}`, true + `${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"))}`, true ) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/General/shorturl.js b/commands/General/shorturl.js index e6a3de44..c6016d8c 100644 --- a/commands/General/shorturl.js +++ b/commands/General/shorturl.js @@ -29,9 +29,13 @@ class ShortURL extends Command { const embed = new Discord.MessageEmbed() .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer) + .setFooter({ + text: data.config.embed.footer + }) .setDescription(body); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/General/someone.js b/commands/General/someone.js index 281d08fd..d35cfc50 100644 --- a/commands/General/someone.js +++ b/commands/General/someone.js @@ -30,7 +30,9 @@ class Someone extends Command { format: "png" })) .setColor(data.config.embed.color); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/General/staff.js b/commands/General/staff.js index b426cae1..6d223034 100644 --- a/commands/General/staff.js +++ b/commands/General/staff.js @@ -19,17 +19,23 @@ class Staff extends Command { async run(message, args, data) { await message.guild.members.fetch(); - const administrators = message.guild.members.cache.filter((m) => m.hasPermission("ADMINISTRATOR") && !m.user.bot); - const moderators = message.guild.members.cache.filter((m) => !administrators.has(m.id) && m.hasPermission("MANAGE_MESSAGES") && !m.user.bot); + const administrators = message.guild.members.cache.filter((m) => m.permissions.has(Discord.Permissions.FLAGS.ADMINISTRATOR) && !m.user.bot); + const moderators = message.guild.members.cache.filter((m) => !administrators.has(m.id) && m.permissions.has(Discord.Permissions.FLAGS.MANAGE_MESSAGES) && !m.user.bot); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("general/staff:TITLE", { - guild: message.guild.name - })) + .setAuthor({ + name: message.translate("general/staff:TITLE", { + guild: message.guild.name + }) + }) .addField(message.translate("general/staff:ADMINS"), (administrators.size > 0 ? administrators.map((a) => `${this.client.customEmojis.status[a.presence.status]} | <@${a.user.id}>`).join("\n") : message.translate("general/staff:NO_ADMINS"))) .addField(message.translate("general/staff:MODS"), (moderators.size > 0 ? moderators.map((m) => `${this.client.customEmojis.status[m.presence.status]} | <@${m.user.id}>`).join("\n") : message.translate("general/staff:NO_MODS"))) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); - message.channel.send(embed); + .setFooter({ + text: data.config.embed.footer + }); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/General/stats.js b/commands/General/stats.js index bf9c8196..0b2b2391 100644 --- a/commands/General/stats.js +++ b/commands/General/stats.js @@ -20,8 +20,12 @@ class Stats extends Command { async run(message, args, data) { const statsEmbed = new Discord.MessageEmbed() .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer) - .setAuthor(message.translate("common:STATS")) + .setFooter({ + text: data.config.embed.footer + }) + .setAuthor({ + name: message.translate("common:STATS") + }) .setDescription(message.translate("general/stats:MADE")) .addField(this.client.customEmojis.stats + " " + message.translate("general/stats:COUNTS_TITLE"), message.translate("general/stats:COUNTS_CONTENT", { servers: this.client.guilds.cache.size, @@ -46,7 +50,9 @@ class Stats extends Command { donateLink: "https://qiwi.com/n/JONNYBRO/", owner: this.client.config.owner.id })); - message.channel.send(statsEmbed); + message.channel.send({ + embeds: [statsEmbed] + }); } }; diff --git a/commands/General/suggest.js b/commands/General/suggest.js index f31342c0..d1431229 100644 --- a/commands/General/suggest.js +++ b/commands/General/suggest.js @@ -25,23 +25,30 @@ class Suggest extends Command { if (!sugg) return message.error("general/suggest:MISSING_CONTENT"); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("general/suggest:TITLE", { - user: message.author.username - }), message.author.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) + .setAuthor({ + name: message.translate("general/suggest:TITLE", { + user: message.author.username + }), + iconURL: message.author.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .addField(message.translate("common:AUTHOR"), `\`${message.author.username}#${message.author.discriminator}\``, true) .addField(message.translate("common:DATE"), message.printDate(new Date(Date.now())), true) .addField(message.translate("common:CONTENT"), sugg) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); const success = Discord.Util.parseEmoji(this.client.customEmojis.success).id; const error = Discord.Util.parseEmoji(this.client.customEmojis.error).id; - suggChannel.send(embed).then(async (m) => { + suggChannel.send({ + embeds: [embed] + }).then(async (m) => { await m.react(success); await m.react(error); }); diff --git a/commands/General/translate.js b/commands/General/translate.js index 6262e669..14741661 100644 --- a/commands/General/translate.js +++ b/commands/General/translate.js @@ -44,23 +44,27 @@ class Translate extends Command { if (!langs.includes(language)) return pWait.error("general/translate:INVALID_LANGUAGE", { prefix: data.guild.prefix, search: language }, { edit: true }); - const translated = await translate(toTranslate, { - to: language - }); + const translated = await translate(toTranslate, { to: language }); const resEmbed = new Discord.MessageEmbed() - .setAuthor("Переводчик", this.client.user.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) + .setAuthor({ + name: "Переводчик", + iconURL: this.client.user.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .addField(translated.from.language.iso, "```" + toTranslate + "```") .addField(language, "```" + translated.text + "```") .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); - return pWait.edit("", { - embed: resEmbed + return pWait.edit({ + content: null, + embeds: [resEmbed] }); } }; diff --git a/commands/General/userinfo.js b/commands/General/userinfo.js index 2b4260c6..97dbae07 100644 --- a/commands/General/userinfo.js +++ b/commands/General/userinfo.js @@ -41,11 +41,14 @@ class Userinfo extends Command { if (message.guild) member = await message.guild.members.fetch(user).catch(() => {}); const embed = new Discord.MessageEmbed() - .setAuthor(user.tag, user.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) + .setAuthor({ + name: user.tag, + iconURL: user.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .setThumbnail(user.displayAvatarURL({ dynamic: true })) @@ -59,15 +62,17 @@ class Userinfo extends Command { format: "png" })) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); if (displayPresence) { - embed.addField(this.client.customEmojis.games + " " + message.translate("common:GAME"), (user.presence.activity ? user.presence.activity.name : message.translate("general/userinfo:NO_GAME")), true) - embed.addField(this.client.customEmojis.status[user.presence.status] + " " + message.translate("common:STATUS"), message.translate("common:STATUS_" + (user.presence.status.toUpperCase())), true); + embed.addField(this.client.customEmojis.games + " " + message.translate("common:GAME"), (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")), true) + embed.addField(this.client.customEmojis.status[member.presence.status] + " " + message.translate("common:STATUS"), message.translate("common:STATUS_" + (member.presence.status.toUpperCase())), true); }; if (member) { - embed.addField(this.client.customEmojis.up + " " + message.translate("general/userinfo:ROLE"), (member.roles.highest ? member.roles.highest : message.translate("general/userinfo:NO_ROLE")), true) + // embed.addField(this.client.customEmojis.up + " " + message.translate("general/userinfo:ROLE"), (member.roles.highest ? member.roles.highest : message.translate("general/userinfo:NO_ROLE")), true) embed.addField(this.client.customEmojis.calendar2 + " " + message.translate("common:JOIN"), message.printDate(member.joinedAt), true) embed.addField(this.client.customEmojis.color + " " + message.translate("common:COLOR"), member.displayHexColor, true) embed.addField(this.client.customEmojis.pencil + " " + message.translate("common:NICKNAME"), (member.nickname ? member.nickname : message.translate("general/userinfo:NO_NICKNAME")), true) @@ -95,7 +100,9 @@ class Userinfo extends Command { }; }; - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/Images/approved.js b/commands/Images/approved.js index 55b5d6d2..e4c8b551 100644 --- a/commands/Images/approved.js +++ b/commands/Images/approved.js @@ -28,10 +28,13 @@ class Approved extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "approved.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/avatar.js b/commands/Images/avatar.js index 2da4a36f..78adf59b 100644 --- a/commands/Images/avatar.js +++ b/commands/Images/avatar.js @@ -26,10 +26,13 @@ class Avatar extends Command { format: "png" }); - if (message.content.includes("link")) message.channel.send(`<${avatarURL}>`); + if (message.content.includes("link")) message.channel.send({ content: `<${avatarURL}>` }); - const attachment = new Discord.MessageAttachment(avatarURL, `avatar.${avatarURL.split(".").pop().split("?")[0]}`); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: avatarURL + }] + }); } }; diff --git a/commands/Images/batslap.js b/commands/Images/batslap.js index cfe588a7..4e50fccd 100644 --- a/commands/Images/batslap.js +++ b/commands/Images/batslap.js @@ -35,10 +35,13 @@ class BatSlap extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "batslap.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/beautiful.js b/commands/Images/beautiful.js index 09397ccd..a5ebc116 100644 --- a/commands/Images/beautiful.js +++ b/commands/Images/beautiful.js @@ -28,10 +28,13 @@ class Beautiful extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "beautiful.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/bed.js b/commands/Images/bed.js index 517e010e..3e3413cc 100644 --- a/commands/Images/bed.js +++ b/commands/Images/bed.js @@ -33,9 +33,13 @@ class Bed extends Command { }), users[1].displayAvatarURL({ format: "png" })); - const attachment = new Discord.MessageAttachment(buffer, "bed.png"); - message.channel.send(attachment); m.delete(); + + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } catch (e) { console.log(e); m.error("misc:ERROR_OCCURRED", null, { diff --git a/commands/Images/brazzers.js b/commands/Images/brazzers.js index 69cbdcda..bfddbafd 100644 --- a/commands/Images/brazzers.js +++ b/commands/Images/brazzers.js @@ -28,10 +28,13 @@ class Brazzers extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "brazzers.png"); m.delete(); - - message.channel.send(attachment); + + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/burn.js b/commands/Images/burn.js index 41a7a71d..990ca229 100644 --- a/commands/Images/burn.js +++ b/commands/Images/burn.js @@ -28,10 +28,13 @@ class Burn extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "burn.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/captcha.js b/commands/Images/captcha.js index 4c91a512..ae4a4139 100644 --- a/commands/Images/captcha.js +++ b/commands/Images/captcha.js @@ -26,9 +26,13 @@ class Captcha extends Command { try { const res = await fetch(encodeURI(`https://nekobot.xyz/api/imagegen?type=captcha&username=${user.username}&url=${user.displayAvatarURL({ format: "png", size: 512 })}`)); const json = await res.json(); - const attachment = new Discord.MessageAttachment(json.message, "captcha.png"); - message.channel.send(attachment); m.delete(); + + message.channel.send({ + files: [{ + attachment: json.message + }] + }); } catch (e) { console.log(e); m.error("misc:ERR_OCCURRED", null, { diff --git a/commands/Images/challenger.js b/commands/Images/challenger.js index eee11037..39897a7b 100644 --- a/commands/Images/challenger.js +++ b/commands/Images/challenger.js @@ -28,10 +28,13 @@ class Challenger extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "challenger.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/clyde.js b/commands/Images/clyde.js index 53d60e03..db90510c 100644 --- a/commands/Images/clyde.js +++ b/commands/Images/clyde.js @@ -29,8 +29,11 @@ class Clyde extends Command { try { const res = await fetch(encodeURI(`https://nekobot.xyz/api/imagegen?type=clyde&text=${text}`)); const json = await res.json(); - const attachment = new Discord.MessageAttachment(json.message, "clyde.png"); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: json.message + }] + }); m.delete(); } catch (e) { console.log(e); diff --git a/commands/Images/dictator.js b/commands/Images/dictator.js index a9dc96e3..90a13f54 100644 --- a/commands/Images/dictator.js +++ b/commands/Images/dictator.js @@ -28,10 +28,13 @@ class Dictator extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "dictator.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/facepalm.js b/commands/Images/facepalm.js index 57dd2908..742def81 100644 --- a/commands/Images/facepalm.js +++ b/commands/Images/facepalm.js @@ -42,11 +42,13 @@ class Facepalm extends Command { const layer = await Canvas.loadImage("./assets/img/facepalm.png"); ctx.drawImage(layer, 0, 0, 632, 357); - const attachment = new Discord.MessageAttachment(canvas.toBuffer(), "facepalm.png"); - m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/fire.js b/commands/Images/fire.js index 940f6950..53b3b62e 100644 --- a/commands/Images/fire.js +++ b/commands/Images/fire.js @@ -28,10 +28,13 @@ class Fire extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "fire.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/jail.js b/commands/Images/jail.js index 0321abc5..9dda89d6 100644 --- a/commands/Images/jail.js +++ b/commands/Images/jail.js @@ -28,10 +28,13 @@ class Jail extends Command { size: 1024 }) }); - const attachment = new Discord.MessageAttachment(buffer, "jail.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/love.js b/commands/Images/love.js index 04b8cbca..dfc4f5e3 100644 --- a/commands/Images/love.js +++ b/commands/Images/love.js @@ -30,8 +30,11 @@ class Love extends Command { try { const res = await fetch(encodeURI(`https://nekobot.xyz/api/imagegen?type=ship&user1=${users[0].displayAvatarURL({ format: "png", size: 512 })}&user2=${users[1].displayAvatarURL({ format: "png", size: 512 })}`)); const json = await res.json(); - const attachment = new Discord.MessageAttachment(json.message, "love.png"); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: json.message + }] + }); m.delete(); } catch (e) { console.log(e); diff --git a/commands/Images/mission.js b/commands/Images/mission.js index 14d0ffa4..31137d4e 100644 --- a/commands/Images/mission.js +++ b/commands/Images/mission.js @@ -28,10 +28,13 @@ class Mission extends Command { size: 2048 }) }); - const attachment = new Discord.MessageAttachment(buffer, "mission.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/phcomment.js b/commands/Images/phcomment.js index 5a8a3f96..de862091 100644 --- a/commands/Images/phcomment.js +++ b/commands/Images/phcomment.js @@ -41,9 +41,13 @@ class Phcomment extends Command { }), message: text }); - const attachment = new Discord.MessageAttachment(buffer, "phcomment.png"); - message.channel.send(attachment); m.delete(); + + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } catch (e) { console.log(e); m.error("misc:ERROR_OCCURRED", null, { diff --git a/commands/Images/qrcode.js b/commands/Images/qrcode.js index 90fde6ab..51f562b7 100644 --- a/commands/Images/qrcode.js +++ b/commands/Images/qrcode.js @@ -29,9 +29,11 @@ class Qrcode extends Command { .setImage(`https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${text.replace(new RegExp(" ", "g"), "%20")}`) .setColor(data.config.embed.color); - pleaseWait.edit(message.translate("images/qrcode:SUCCESS"), { - embed + pleaseWait.edit({ + content: message.translate("images/qrcode:SUCCESS"), + embeds: [embed] }); + } }; diff --git a/commands/Images/rip.js b/commands/Images/rip.js index 6b874b8d..dc1d5333 100644 --- a/commands/Images/rip.js +++ b/commands/Images/rip.js @@ -28,10 +28,13 @@ class Rip extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "rip.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/scary.js b/commands/Images/scary.js index 193a632c..f5922a8c 100644 --- a/commands/Images/scary.js +++ b/commands/Images/scary.js @@ -28,10 +28,13 @@ class Scary extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "scary.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/tobecontinued.js b/commands/Images/tobecontinued.js index 0a22af49..ed473f04 100644 --- a/commands/Images/tobecontinued.js +++ b/commands/Images/tobecontinued.js @@ -28,10 +28,13 @@ class Tobecontinued extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "tobecontinued.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/trash.js b/commands/Images/trash.js index 5ed59cb9..d455ea32 100644 --- a/commands/Images/trash.js +++ b/commands/Images/trash.js @@ -27,10 +27,13 @@ class Trash extends Command { format: "png", size: 512 })); - const attachment = new Discord.MessageAttachment(buffer, "trash.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/triggered.js b/commands/Images/triggered.js index f71ce49f..8cfa36f7 100644 --- a/commands/Images/triggered.js +++ b/commands/Images/triggered.js @@ -30,10 +30,13 @@ class Triggered extends Command { sepia: "true", invert: "true" }); - const attachment = new Discord.MessageAttachment(buffer, "triggered.gif"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/tweet.js b/commands/Images/tweet.js index 51c7ef9e..f08ed12e 100644 --- a/commands/Images/tweet.js +++ b/commands/Images/tweet.js @@ -39,10 +39,13 @@ class Tweet extends Command { avatar3: randomMembers[2].user.displayAvatarURL(), text }); - const attachment = new Discord.MessageAttachment(buffer, "twitter.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/wanted.js b/commands/Images/wanted.js index d5a86b8d..19a863e6 100644 --- a/commands/Images/wanted.js +++ b/commands/Images/wanted.js @@ -28,10 +28,13 @@ class Wanted extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "wanted.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/wasted.js b/commands/Images/wasted.js index c0e9dc64..9a2c19ac 100644 --- a/commands/Images/wasted.js +++ b/commands/Images/wasted.js @@ -28,10 +28,13 @@ class Wasted extends Command { size: 512 }) }); - const attachment = new Discord.MessageAttachment(buffer, "wasted.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: buffer + }] + }); } }; diff --git a/commands/Images/youtube-comment.js b/commands/Images/youtube-comment.js index 23bb1e84..7350b154 100644 --- a/commands/Images/youtube-comment.js +++ b/commands/Images/youtube-comment.js @@ -40,10 +40,13 @@ class YouTubeComment extends Command { }), content: text }); - const attachment = new Discord.MessageAttachment(image, "ytb-comment.png"); m.delete(); - message.channel.send(attachment); + message.channel.send({ + files: [{ + attachment: image + }] + }); } }; diff --git a/commands/Moderation/announcement.js b/commands/Moderation/announcement.js index 732946fe..69231b39 100644 --- a/commands/Moderation/announcement.js +++ b/commands/Moderation/announcement.js @@ -26,7 +26,10 @@ class Announcement extends Command { let mention = null; const msg = await message.sendT("moderation/announcement:MENTION_PROMPT"); - const collector = new Discord.MessageCollector(message.channel, (m) => m.author.id === message.author.id, { + + const filter = m => m.author.id === message.author.id; + const collector = new Discord.MessageCollector(message.channel, { + filter, time: 240000 }); @@ -41,7 +44,10 @@ class Announcement extends Command { tmsg.delete(); msg.delete(); const tmsg1 = await message.sendT("moderation/announcement:MENTION_TYPE_PROMPT"); - const c = new Discord.MessageCollector(message.channel, (m) => m.author.id === message.author.id, { + + const filter = m => m.author.id === message.author.id; + const c = new Discord.MessageCollector(message.channel, { + filter, time: 60000 }); c.on("collect", (m) => { @@ -69,13 +75,20 @@ class Announcement extends Command { if (reason === "time") return message.error("misc:TIMES_UP"); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("moderation/announcement:TITLE")) + .setAuthor({ + name: message.translate("moderation/announcement:TITLE") + }) .setColor(data.config.embed.color) - .setFooter(message.author.tag) + .setFooter({ + text: message.author.tag + }) .setTimestamp() .setDescription(text); - message.channel.send(mention, embed); + message.channel.send({ + content: mention, + embeds: [embed] + }); }); } }; diff --git a/commands/Moderation/ban.js b/commands/Moderation/ban.js index 3a656d62..b6569234 100644 --- a/commands/Moderation/ban.js +++ b/commands/Moderation/ban.js @@ -29,7 +29,7 @@ class Ban extends Command { if (user.id === message.author.id) return message.error("moderation/ban:YOURSELF"); // If the user is already banned - const banned = await message.guild.fetchBans(); + const banned = await message.guild.bans.fetch(); if (banned.some((m) => m.user.id === user.id)) return message.error("moderation/ban:ALREADY_BANNED", { username: user.tag }); @@ -42,7 +42,7 @@ class Ban extends Command { if (member) { const memberPosition = member.roles.highest.position; const moderationPosition = message.member.roles.highest.position; - if (message.member.ownerID !== message.author.id && !(moderationPosition > memberPosition)) return message.error("moderation/ban:SUPERIOR"); + if (message.member.ownerId !== message.author.id && !(moderationPosition > memberPosition)) return message.error("moderation/ban:SUPERIOR"); if (!member.bannable) return message.error("moderation/ban:MISSING_PERM"); }; @@ -86,14 +86,18 @@ class Ban extends Command { const channel = message.guild.channels.cache.get(data.guild.plugins.modlogs); if (!channel) return; const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("moderation/ban:CASE", { - count: data.guild.casesCount - })) + .setAuthor({ + name: message.translate("moderation/ban:CASE", { + count: data.guild.casesCount + }) + }) .addField(message.translate("common:USER"), `\`${user.tag}\` (${user.toString()})`, true) .addField(message.translate("common:MODERATOR"), `\`${message.author.tag}\` (${message.author.toString()})`, true) .addField(message.translate("common:REASON"), reason, true) .setColor("#e02316"); - channel.send(embed); + channel.send({ + embeds: [embed] + }); }; }).catch((err) => { diff --git a/commands/Moderation/checkinvites.js b/commands/Moderation/checkinvites.js deleted file mode 100644 index 47720838..00000000 --- a/commands/Moderation/checkinvites.js +++ /dev/null @@ -1,49 +0,0 @@ -const Command = require("../../base/Command.js"), - Discord = require("discord.js"); - -class Checkinvites extends Command { - constructor(client) { - super(client, { - name: "checkinvites", - dirname: __dirname, - enabled: true, - guildOnly: true, - aliases: ["checkinvite", "checkinv"], - memberPermissions: [], - botPermissions: ["SEND_MESSAGES", "EMBED_LINKS"], - nsfw: false, - ownerOnly: false, - cooldown: 1000 - }); - } - - async run(message, args, data) { - const withInvite = []; - message.guild.members.cache.forEach((m) => { - const possibleLinks = m.user.presence.activities.map((a) => [a.state, a.details, a.name]).flat(); - const inviteLinks = possibleLinks.filter((l) => /(discord\.(gg|io|me|li)\/.+|discordapp\.com\/invite\/.+)/i.test(l)); - if (inviteLinks.length > 0) { - withInvite.push({ - id: m.user.id, - tag: Discord.Util.escapeMarkdown(m.user.tag), - links: "**" + Discord.Util.escapeMarkdown(inviteLinks.join(", ")) + "**" - }); - }; - }); - - const text = (withInvite.length > 0 ? withInvite.map((m) => "`" + m.id + "` (" + m.tag + ") : " + m.links).join("\n") : message.translate("moderation/checkinvites:NOBODY")); - - const embed = new Discord.MessageEmbed() - .setDescription(text) - .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); - - const m = await message.channel.send(embed); - - setTimeout(function () { - m.delete(); - }, 3000); - } -}; - -module.exports = Checkinvites; \ No newline at end of file diff --git a/commands/Moderation/clear.js b/commands/Moderation/clear.js index 1c9d86a7..15d41cda 100644 --- a/commands/Moderation/clear.js +++ b/commands/Moderation/clear.js @@ -30,7 +30,9 @@ class Clear extends Command { const newChannel = await message.channel.clone(); await message.channel.delete(); newChannel.setPosition(position); - return newChannel.send(message.translate("moderation/clear:CHANNEL_CLEARED")); + return newChannel.send({ + content: message.translate("moderation/clear:CHANNEL_CLEARED") + }); }; let amount = args[0]; @@ -41,9 +43,8 @@ class Clear extends Command { const user = message.mentions.users.first(); let messages = await message.channel.messages.fetch({ - limit: 100 + limit: amount }); - messages = messages.array(); if (user) messages = messages.filter((m) => m.author.id === user.id); if (messages.length > amount) messages.length = parseInt(amount, 10); diff --git a/commands/Moderation/giveaway.js b/commands/Moderation/giveaway.js index fbc78c17..44ba2c8e 100644 --- a/commands/Moderation/giveaway.js +++ b/commands/Moderation/giveaway.js @@ -22,7 +22,7 @@ class Giveaway extends Command { if (!status) return message.error("moderation/giveaway:MISSING_STATUS"); if (status === "create") { - const currentGiveaways = this.client.giveawaysManager.giveaways.filter((g) => g.guildID === message.guild.id && !g.ended).length; + const currentGiveaways = this.client.giveawaysManager.giveaways.filter((g) => g.guildId === message.guild.id && !g.ended).length; if (currentGiveaways > 3) return message.error("moderation/giveaway:MAX_COUNT"); const time = args[1]; diff --git a/commands/Moderation/kick.js b/commands/Moderation/kick.js index 755ce838..7a48b9e1 100644 --- a/commands/Moderation/kick.js +++ b/commands/Moderation/kick.js @@ -34,7 +34,7 @@ class Kick extends Command { const memberPosition = member.roles.highest.position; const moderationPosition = message.member.roles.highest.position; - if (message.member.ownerID !== message.author.id && !(moderationPosition > memberPosition)) return message.error("moderation/ban:SUPERIOR"); + if (message.member.ownerId !== message.author.id && !(moderationPosition > memberPosition)) return message.error("moderation/ban:SUPERIOR"); if (!member.kickable) return message.error("moderation/kick:MISSING_PERM"); await member.send(message.translate("moderation/kick:KICKED_DM", { @@ -73,14 +73,18 @@ class Kick extends Command { const channel = message.guild.channels.cache.get(data.guild.plugins.modlogs); if (!channel) return; const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("moderation/kick:CASE", { - count: data.guild.casesCount - })) + .setAuthor({ + name: message.translate("moderation/kick:CASE", { + count: data.guild.casesCount + }) + }) .addField(message.translate("common:USER"), `\`${member.user.tag}\` (${member.user.toString()})`, true) .addField(message.translate("common:MODERATOR"), `\`${message.author.tag}\` (${message.author.toString()})`, true) .addField(message.translate("common:REASON"), reason, true) .setColor("#e88709"); - channel.send(embed); + channel.send({ + embeds: [embed] + }); }; }).catch(() => { diff --git a/commands/Moderation/mute.js b/commands/Moderation/mute.js index 3fdd5e20..535b7de0 100644 --- a/commands/Moderation/mute.js +++ b/commands/Moderation/mute.js @@ -25,7 +25,7 @@ class Mute extends Command { const memberPosition = member.roles.highest.position; const moderationPosition = message.member.roles.highest.position; - if (message.member.ownerID !== message.author.id && !(moderationPosition > memberPosition)) return message.error("moderation/ban:SUPERIOR"); + if (message.member.ownerId !== message.author.id && !(moderationPosition > memberPosition)) return message.error("moderation/ban:SUPERIOR"); const memberData = await this.client.findOrCreateMember({ id: member.id, @@ -38,7 +38,7 @@ class Mute extends Command { if (!reason) reason = message.translate("misc:NO_REASON_PROVIDED"); message.guild.channels.cache.forEach((channel) => { - channel.updateOverwrite(member.id, { + channel.permissionOverwrites.edit(member.id, { SEND_MESSAGES: false, ADD_REACTIONS: false, CONNECT: false @@ -90,16 +90,20 @@ class Mute extends Command { const channel = message.guild.channels.cache.get(data.guild.plugins.modlogs); if (!channel) return; const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("moderation/mute:CASE", { - count: data.guild.casesCount - })) + .setAuthor({ + name: message.translate("moderation/mute:CASE", { + count: data.guild.casesCount + }) + }) .addField(message.translate("common:USER"), `\`${member.user.tag}\` (${member.user.toString()})`, true) .addField(message.translate("common:MODERATOR"), `\`${message.author.tag}\` (${message.author.toString()})`, true) .addField(message.translate("common:REASON"), reason, true) .addField(message.translate("common:DURATION"), time, true) .addField(message.translate("common:EXPIRY"), message.printDate(new Date(Date.now() + ms(time))), true) .setColor("#f44271"); - channel.send(embed); + channel.send({ + embeds: [embed] + }); } } }; diff --git a/commands/Moderation/poll.js b/commands/Moderation/poll.js index 8f8c4438..327454ac 100644 --- a/commands/Moderation/poll.js +++ b/commands/Moderation/poll.js @@ -25,7 +25,10 @@ class Poll extends Command { let mention = null; const msg = await message.sendT("moderation/announcement:MENTION_PROMPT"); - const collector = new Discord.MessageCollector(message.channel, (m) => m.author.id === message.author.id, { + + const filter = m => m.author.id === message.author.id; + const collector = new Discord.MessageCollector(message.channel, { + filter, time: 240000 }); @@ -40,7 +43,10 @@ class Poll extends Command { tmsg.delete(); msg.delete(); const tmsg1 = await message.sendT("moderation/announcement:MENTION_TYPE_PROMPT"); - const c = new Discord.MessageCollector(message.channel, (m) => m.author.id === message.author.id, { + + const filter = m => m.author.id === message.author.id; + const c = new Discord.MessageCollector(message.channel, { + filter, time: 60000 }); @@ -77,14 +83,19 @@ class Poll extends Command { ]; const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("moderation/poll:TITLE")) + .setAuthor({ + name: message.translate("moderation/poll:TITLE") + }) .setColor(data.config.embed.color) .addField(question, message.translate("moderation/poll:REACT", { success: emojis[0].toString(), error: emojis[1].toString() })); - message.channel.send(mention, embed).then(async (m) => { + message.channel.send({ + content: mention, + embeds: [embed] + }).then(async (m) => { await m.react(emojis[0]); await m.react(emojis[1]); }); diff --git a/commands/Moderation/sanctions.js b/commands/Moderation/sanctions.js index 0e30fec6..f14cb88a 100644 --- a/commands/Moderation/sanctions.js +++ b/commands/Moderation/sanctions.js @@ -27,25 +27,34 @@ class Sanctions extends Command { }); const embed = new Discord.MessageEmbed() - .setAuthor(user.tag, user.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) + .setAuthor({ + name: user.tag, + iconURL: user.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); if (memberData.sanctions.length < 1) { embed.setDescription(message.translate("moderation/sanctions:NO_SANCTION", { username: user.tag })); - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); } else { memberData.sanctions.forEach((s) => { embed.addField(s.type + " | #" + s.case, `${message.translate("common:MODERATOR")}: <@${s.moderator}>\n${message.translate("common:REASON")}: ${s.reason}`, true); }); }; - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/Moderation/unban.js b/commands/Moderation/unban.js index e397e3b8..8829c674 100644 --- a/commands/Moderation/unban.js +++ b/commands/Moderation/unban.js @@ -43,7 +43,7 @@ class Unban extends Command { if (!user) return message.error("misc:NO_USER_FOUND_ID", { id: args[0] }); // check if the user is banned - const banned = await message.guild.fetchBans(); + const banned = await message.guild.bans.fetch(); if (!banned.some((e) => e.user.id === user.id)) return message.success("moderation/unban:NOT_BANNED", { username: user.tag }); // Unban user diff --git a/commands/Moderation/unmute.js b/commands/Moderation/unmute.js index 560ec391..e96239a2 100644 --- a/commands/Moderation/unmute.js +++ b/commands/Moderation/unmute.js @@ -22,7 +22,7 @@ class Unmute extends Command { const memberPosition = member.roles.highest.position; const moderationPosition = message.member.roles.highest.position; - if (message.member.ownerID !== message.author.id && !(moderationPosition > memberPosition)) return message.error("moderation/ban:SUPERIOR"); + if (message.member.ownerId !== message.author.id && !(moderationPosition > memberPosition)) return message.error("moderation/ban:SUPERIOR"); const memberData = await this.client.findOrCreateMember({ id: member.id, diff --git a/commands/Moderation/warn.js b/commands/Moderation/warn.js index fc94097f..da40e684 100644 --- a/commands/Moderation/warn.js +++ b/commands/Moderation/warn.js @@ -31,7 +31,7 @@ class Warn extends Command { const memberPosition = member.roles.highest.position; const moderationPosition = message.member.roles.highest.position; - if (message.member.ownerID !== message.author.id && !(moderationPosition > memberPosition)) return message.error("moderation/ban:SUPERIOR"); + if (message.member.ownerId !== message.author.id && !(moderationPosition > memberPosition)) return message.error("moderation/ban:SUPERIOR"); const reason = args.slice(1).join(" "); if (!reason) return message.error("moderation/warn:MISSING_REASON"); @@ -67,9 +67,11 @@ class Warn extends Command { reason })); caseInfo.type = "ban"; - embed.setAuthor(message.translate("moderation/ban:CASE", { - count: data.guild.casesCount - })) + embed.setAuthor({ + name: message.translate("moderation/ban:CASE", { + count: data.guild.casesCount + }) + }) .setColor("#e02316"); message.guild.members.ban(member).catch(() => {}); message.success("moderation/setwarns:AUTO_BAN", { @@ -88,9 +90,11 @@ class Warn extends Command { reason })); caseInfo.type = "kick"; - embed.setAuthor(message.translate("moderation/kick:CASE", { - count: data.guild.casesCount - })) + embed.setAuthor({ + name: message.translate("moderation/kick:CASE", { + count: data.guild.casesCount + }) + }) .setColor("#e88709"); member.kick().catch(() => {}); message.success("moderation/setwarns:AUTO_KICK", { @@ -107,9 +111,11 @@ class Warn extends Command { reason })); caseInfo.type = "warn"; - embed.setAuthor(message.translate("moderation/warn:CASE", { - caseNumber: data.guild.casesCount - })) + embed.setAuthor({ + name: message.translate("moderation/warn:CASE", { + caseNumber: data.guild.casesCount + }) + }) .setColor("#8c14e2"); message.success("moderation/warn:WARNED", { username: member.user.tag, @@ -122,7 +128,9 @@ class Warn extends Command { if (data.guild.plugins.modlogs) { const channel = message.guild.channels.cache.get(data.guild.plugins.modlogs); if (!channel) return; - channel.send(embed); + channel.send({ + embeds: [embed] + }); }; } }; diff --git a/commands/Music/back.js b/commands/Music/back.js index f459234c..b2e24f4a 100644 --- a/commands/Music/back.js +++ b/commands/Music/back.js @@ -26,16 +26,24 @@ class Back extends Command { if (!queue.previousSongs[0]) return message.error("music/back:NO_PREV_SONG"); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("music/back:DESCRIPTION")) + .setAuthor({ + name: message.translate("music/back:DESCRIPTION") + }) .setThumbnail(queue.tracks[0].thumbnail) - .setFooter(data.config.embed.footer) - .setColor(data.config.embed.color); + .setColor(data.config.embed.color) + .setFooter({ + text: data.config.embed.footer + }); - const m = await message.channel.send(embed); + const m = await message.channel.send({ + embeds: [embed] + }); this.client.player.previous(message); embed.setDescription(message.translate("music/back:SUCCESS")); - m.edit(embed); + m.edit({ + embeds: [embed] + }); } }; diff --git a/commands/Music/clips.js b/commands/Music/clips.js index a6127365..d482a88c 100644 --- a/commands/Music/clips.js +++ b/commands/Music/clips.js @@ -32,9 +32,13 @@ class Clips extends Command { .setTitle(message.translate("music/clips:EMBED_TITLE")) .setDescription(clips.join("\n")) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer) - .setTimestamp() - message.channel.send(embed); + .setFooter({ + text: data.config.embed.footer + }) + .setTimestamp(); + message.channel.send({ + embeds: [embed] + }); }); } }; diff --git a/commands/Music/filters.js b/commands/Music/filters.js index 5953212f..88771944 100644 --- a/commands/Music/filters.js +++ b/commands/Music/filters.js @@ -39,7 +39,9 @@ class Filters extends Command { .addField("** **", filtersStatuses[1].join("\n"), true) .setColor(data.config.embed.color); - message.channel.send(list); + message.channel.send({ + embeds: [list] + }); } }; diff --git a/commands/Music/jump.js b/commands/Music/jump.js index eefb4087..7d986a38 100644 --- a/commands/Music/jump.js +++ b/commands/Music/jump.js @@ -27,18 +27,26 @@ class Jump extends Command { if (number < 0) return message.error("music/jump:NO_PREV_SONG", { prefix: data.guild.prefix }); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("music/jump:SUCCESS")) + .setAuthor({ + name: message.translate("music/jump:SUCCESS") + }) .setThumbnail(queue.songs[number].thumbnail) - .setFooter(data.config.embed.footer) + .setFooter({ + text: data.config.embed.footer + }) .setColor(data.config.embed.color); - const m = await message.channel.send(embed); + const m = await message.channel.send({ + embeds: [embed] + }); this.client.player.jump(message, number); embed.setDescription(message.translate("music/play:NOW_PLAYING", { songName: queue.songs[number].name })); - m.edit(embed); + m.edit({ + embeds: [embed] + }); } }; diff --git a/commands/Music/lyrics.js b/commands/Music/lyrics.js index a8e8a444..e1381e34 100644 --- a/commands/Music/lyrics.js +++ b/commands/Music/lyrics.js @@ -27,7 +27,9 @@ class Lyrics extends Command { songName })) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); + .setFooter({ + text: data.config.embed.footer + }); try { const songNameFormated = songName @@ -46,7 +48,9 @@ class Lyrics extends Command { }; embed.setDescription(lyrics); - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } catch (e) { console.log(e); diff --git a/commands/Music/np.js b/commands/Music/np.js index dbd5fbbe..048f90e0 100644 --- a/commands/Music/np.js +++ b/commands/Music/np.js @@ -39,18 +39,24 @@ class Np extends Command { // Generate discord embed to display song informations const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("music/queue:TITLE")) + .setAuthor({ + name: message.translate("music/queue:TITLE") + }) .setThumbnail(track.thumbnail) .addField(message.translate("music/np:T_TITLE"), `[${track.name}](${track.url})`) .addField(message.translate("music/np:T_CHANNEL"), track.uploader.name ? track.uploader.name : "Отсутствует") .addField(message.translate("music/np:T_DURATION"), `${queue.formattedCurrentTime} / ${track.formattedDuration}`) .addField(message.translate("music/np:T_CONF"), status(queue)) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer) + .setFooter({ + text: data.config.embed.footer + }) .setTimestamp(); // Send the embed in the current channel - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/Music/play.js b/commands/Music/play.js index b10b4e09..0942c53e 100644 --- a/commands/Music/play.js +++ b/commands/Music/play.js @@ -1,4 +1,5 @@ -const Command = require("../../base/Command.js"); +const Command = require("../../base/Command.js"), + { Permissions } = require("discord.js"); class Play extends Command { constructor(client) { @@ -24,7 +25,7 @@ class Play extends Command { // Check my permissions const perms = voice.permissionsFor(this.client.user); - if (!perms.has("CONNECT") || !perms.has("SPEAK")) return message.error("music/play:VOICE_CHANNEL_CONNECT"); + if (!perms.has(Permissions.FLAGS.CONNECT) || !perms.has(Permissions.FLAGS.SPEAK)) return message.error("music/play:VOICE_CHANNEL_CONNECT"); try { this.client.player.play(message, args.join(" ")); diff --git a/commands/Music/queue.js b/commands/Music/queue.js index d57ab1d9..95ca9d49 100644 --- a/commands/Music/queue.js +++ b/commands/Music/queue.js @@ -27,21 +27,29 @@ class Queue extends Command { if (queue.songs.length === 1) { const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("music/queue:TITLE"), message.guild.iconURL({ - dynamic: true - })) + .setAuthor({ + name: message.translate("music/queue:TITLE"), + iconURL: message.guild.iconURL({ + dynamic: true + }) + }) .addField(message.translate("music/np:CURRENTLY_PLAYING"), `[${queue.songs[0].name}](${queue.songs[0].url})\n*Добавил ${queue.songs[0].member}*\n`) .setColor(data.config.embed.color); - return message.channel.send(embed); + return message.channel.send({ + embeds: [embed] + }); }; const FieldsEmbed = new Pagination.FieldsEmbed(); FieldsEmbed.embed .setColor(data.config.embed.color) - .setAuthor(message.translate("music/queue:TITLE"), message.guild.iconURL({ - dynamic: true - })) + .setAuthor({ + name: message.translate("music/queue:TITLE"), + iconURL: message.guild.iconURL({ + dynamic: true + }) + }) .addField(message.translate("music/np:CURRENTLY_PLAYING"), `[${queue.songs[0].name}](${queue.songs[0].url})\n*Добавил ${queue.songs[0].member}*\n`); FieldsEmbed diff --git a/commands/Music/seek.js b/commands/Music/seek.js index 63d6a191..c2d6d366 100644 --- a/commands/Music/seek.js +++ b/commands/Music/seek.js @@ -20,15 +20,10 @@ class Seek extends Command { async run(message, args) { const voice = message.member.voice.channel; const queue = this.client.player.getQueue(message); -<<<<<<< HEAD -======= const time = ms(args[0]) / 1000; ->>>>>>> discordjs-13 if (!voice) return message.error("music/play:NO_VOICE_CHANNEL"); if (!queue) return message.error("music/play:NOT_PLAYING"); - - const time = ms(args[0]) / 1000; if (isNaN(time)) return message.error("music/seek:INVALID_TIME"); await this.client.player.seek(message, time); diff --git a/commands/Music/skip.js b/commands/Music/skip.js index e039c67d..8dc74dcc 100644 --- a/commands/Music/skip.js +++ b/commands/Music/skip.js @@ -26,18 +26,26 @@ class Skip extends Command { if (!queue.songs[1]) return message.error("music/skip:NO_NEXT_SONG"); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("music/skip:SUCCESS")) + .setAuthor({ + name: message.translate("music/skip:SUCCESS") + }) .setThumbnail(queue.songs[1].thumbnail) - .setFooter(data.config.embed.footer) + .setFooter({ + text: data.config.embed.footer + }) .setColor(data.config.embed.color); - const m = await message.channel.send(embed); + const m = await message.channel.send({ + embeds: [embed] + }); this.client.player.skip(message); embed.setDescription(message.translate("music/play:NOW_PLAYING", { songName: queue.songs[1].name })); - m.edit(embed); + m.edit({ + embeds: [embed] + }); } }; diff --git a/commands/Music/stop.js b/commands/Music/stop.js index 6ad0fbea..2a70d12a 100644 --- a/commands/Music/stop.js +++ b/commands/Music/stop.js @@ -25,15 +25,23 @@ class Stop extends Command { if (!queue) return message.error("music/play:NOT_PLAYING"); const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("music/stop:DESCRIPTION")) - .setFooter(data.config.embed.footer) + .setAuthor({ + name: message.translate("music/stop:DESCRIPTION") + }) + .setFooter({ + text: data.config.embed.footer + }) .setColor(data.config.embed.color); - const m = await message.channel.send(embed); + const m = await message.channel.send({ + embeds: [embed] + }); this.client.player.stop(message); embed.setDescription(message.translate("music/stop:SUCCESS")); - m.edit(embed); + m.edit({ + embeds: [embed] + }); } }; diff --git a/commands/NSFW/hentai.js b/commands/NSFW/hentai.js index 849b7d92..0921efa7 100644 --- a/commands/NSFW/hentai.js +++ b/commands/NSFW/hentai.js @@ -23,7 +23,9 @@ class Hentai extends Command { var gif = null; const embed = new Discord.MessageEmbed() .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer) + .setFooter({ + text: data.config.embed.footer + }) .setTimestamp() switch (category) { @@ -95,7 +97,9 @@ class Hentai extends Command { })) break; }; - message.channel.send(embed); + message.channel.send({ + embeds: [embed] + }); } }; diff --git a/commands/Owner/eval.js b/commands/Owner/eval.js index 0665b037..4b471798 100644 --- a/commands/Owner/eval.js +++ b/commands/Owner/eval.js @@ -16,13 +16,7 @@ class Eval extends Command { }); } - // eslint-disable-next-line no-unused-vars async run(message, args, data) { - // eslint-disable-next-line no-unused-vars - const usersData = this.client.usersData; - // eslint-disable-next-line no-unused-vars - const guildsData = this.client.guildsData; - const content = message.content.split(" ").slice(1).join(" "); const result = new Promise((resolve) => resolve(eval(content))); @@ -31,15 +25,15 @@ class Eval extends Command { depth: 0 }); if (output.includes(this.client.token)) output = output.replace(this.client.token, "T0K3N"); - message.channel.send(output, { - code: "js" + message.channel.send({ + content: "```js\n" + output + "```" }); }).catch((err) => { console.error(err); err = err.toString(); if (err.includes(this.client.token)) err = err.replace(this.client.token, "T0K3N"); - message.channel.send(err, { - code: "js" + message.channel.send({ + content: "```js\n" + err + "```" }); }); } diff --git a/commands/Owner/say.js b/commands/Owner/say.js index 9a40eb2f..240cb356 100644 --- a/commands/Owner/say.js +++ b/commands/Owner/say.js @@ -24,42 +24,48 @@ class Say extends Command { args = args.join(" ").split(split); for (var i = 0; i < args.length; i++) args[i] = args[i].trim(); - if (message.attachments.size > 0) var attachment = message.attachments.array()[0].url; + if (message.attachments.size > 0) var attachment = message.attachments.first().url; if (args[1] && !args[2]) { message.delete(); const saychannel = message.guild.channels.cache.find(channel => channel.name == args[1] || channel.id == args[1]); - saychannel.startTyping(); + saychannel.sendTyping(); setTimeout(function () { - if (attachment) saychannel.send(args[0], { + if (attachment) saychannel.send({ + content: args[0], files: [attachment] }); - else saychannel.send(args[0]); - saychannel.stopTyping(); + else saychannel.send({ + content: args[0] + }); }, 2000); } else if (args[2]) { const saychannel = this.client.guilds.cache.find(guild => guild.name == args[2] || guild.id == args[2]).channels.cache.find(channel => channel.name == args[1] || channel.id == args[1]); - saychannel.startTyping(); + saychannel.sendTyping(); setTimeout(function () { - if (attachment) saychannel.send(args[0], { + if (attachment) saychannel.send({ + content: args[0], files: [attachment] }); - else saychannel.send(args[0]); - saychannel.stopTyping(); + else saychannel.send({ + content: args[0] + }); }, 2000); } else { message.delete(); const saychannel = message.channel; - saychannel.startTyping(); + saychannel.sendTyping(); setTimeout(function () { - if (attachment) saychannel.send(args[0], { + if (attachment) saychannel.send({ + content: args[0], files: [attachment] }); - else saychannel.send(args[0]); - saychannel.stopTyping(); + else saychannel.send({ + content: args[0] + }); }, 2000); }; } diff --git a/commands/Owner/servers-list.js b/commands/Owner/servers-list.js index a288c9ff..59c379c8 100644 --- a/commands/Owner/servers-list.js +++ b/commands/Owner/servers-list.js @@ -18,7 +18,7 @@ class ServersList extends Command { } async run(message, args, data) { - if (!message.channel.type != "dm") message.delete(); + if (!message.channel.type !== "DM") message.delete(); let i0 = 0, i1 = 10, @@ -31,26 +31,37 @@ class ServersList extends Command { .join("\n"); const embed = new Discord.MessageEmbed() - .setAuthor(message.author.tag, message.author.displayAvatarURL({ - size: 512, - dynamic: true, - format: "png" - })) + .setAuthor({ + name: message.author.tag, + iconURL: message.author.displayAvatarURL({ + size: 512, + dynamic: true, + format: "png" + }) + }) .setColor(data.config.embed.color) - .setFooter(this.client.user.username) + .setFooter({ + text: this.client.user.username + }) .setTitle(`${message.translate("common:PAGE")}: ${page}/${Math.ceil(this.client.guilds.cache.size/10)}`) .setDescription(description); - const msg = await message.channel.send(embed); + const msg = await message.channel.send({ + embeds: [embed] + }); await msg.react("⬅"); await msg.react("➡"); await msg.react("❌"); - const collector = msg.createReactionCollector((reaction, user) => user.id === message.author.id); + const filter = (reaction, user) => user.id === message.author.id; + const collector = msg.createReactionCollector({ + filter, + time: 30000 + }); collector.on("collect", async (reaction) => { - if (reaction._emoji.name === "⬅") { + if (reaction._emoji.name === "⬅" && !message.channel.type !== "DM") { // Updates variables i0 = i0 - 10; i1 = i1 - 10; @@ -71,10 +82,12 @@ class ServersList extends Command { .setDescription(description); // Edit the message - msg.edit(embed); + msg.edit({ + embeds: [embed] + }); }; - if (reaction._emoji.name === "➡") { + if (reaction._emoji.name === "➡" && !message.channel.type !== "DM") { // Updates variables i0 = i0 + 10; i1 = i1 + 10; @@ -95,10 +108,12 @@ class ServersList extends Command { .setDescription(description); // Edit the message - msg.edit(embed); + msg.edit({ + embeds: [embed] + }); }; - if (reaction._emoji.name === "❌") return msg.delete(); + if (reaction._emoji.name === "❌" && !message.channel.type !== "DM") return msg.delete(); // Remove the reaction when the user react to the message await reaction.users.remove(message.author.id); diff --git a/dashboard/routes/discord.js b/dashboard/routes/discord.js index 9a86387b..01e8e39c 100644 --- a/dashboard/routes/discord.js +++ b/dashboard/routes/discord.js @@ -81,10 +81,10 @@ router.get("/callback", async (req, res) => { const logsChannel = req.client.channels.cache.get(req.client.config.dashboard.logs); if (!userDB.logged && logsChannel && user) { const embed = new Discord.MessageEmbed() - .setAuthor(user.username, user.displayAvatarURL()) + .setAuthor({ name: user.username, iconURL: user.displayAvatarURL() }) .setColor(req.client.config.embed.color) .setDescription(req.client.translate("dashboard:FIRST_LOGIN", { user: user.tag })); - logsChannel.send(embed); + logsChannel.send({ embeds: [embed] }); userDB.logged = true; userDB.save(); }; diff --git a/dashboard/utils.js b/dashboard/utils.js index 5a755c0f..92e1b025 100644 --- a/dashboard/utils.js +++ b/dashboard/utils.js @@ -1,4 +1,4 @@ -const Discord = require("discord.js"); +const { Permissions } = require("discord.js"); /** * Fetch guild informations @@ -24,8 +24,8 @@ async function fetchUser(userData, client, query) { if (userData.guilds) { userData.guilds.forEach((guild) => { if (!client.guilds.cache.get(guild.id)) return; - const perms = new Discord.Permissions(guild.permissions); - if (perms.has("MANAGE_GUILD")) guild.admin = true; + const perms = new Permissions(BigInt(guild.permissions)); + if (perms.has(Permissions.FLAGS.MANAGE_GUILD)) guild.admin = true; guild.settingsUrl = (client.guilds.cache.get(guild.id) ? `/manage/${guild.id}/` : `https://discordapp.com/oauth2/authorize?client_id=${client.user.id}&scope=bot&permissions=8&guild_id=${guild.id}`); guild.statsUrl = (client.guilds.cache.get(guild.id) ? `/stats/${guild.id}/` : `https://discordapp.com/oauth2/authorize?client_id=${client.user.id}&scope=bot&permissions=8&guild_id=${guild.id}`); @@ -37,7 +37,7 @@ async function fetchUser(userData, client, query) { }; const user = await client.users.fetch(userData.id); const userDb = await client.findOrCreateUser({ id: user.id }, true); - const userInfos = { ...user.toJSON(), ...userDb, ...userData, ...user.presence }; + const userInfos = { ...user.toJSON(), ...userDb, ...userData }; return userInfos; }; diff --git a/dashboard/views/docs.ejs b/dashboard/views/docs.ejs index e582c1a3..7f5a0b94 100644 --- a/dashboard/views/docs.ejs +++ b/dashboard/views/docs.ejs @@ -194,8 +194,6 @@
 									-----------------------------------------------------------------------------------------
-<<<<<<< HEAD
-=======
 									JaBa v3.2
 									-----------------------------------------------------------------------------------------
 									Изменения
@@ -206,7 +204,6 @@
 										- tictactoe отключена до обновления модуля на discord.js 13!
 
 									-----------------------------------------------------------------------------------------
->>>>>>> discordjs-13
 									JaBa v3.1.6
 									-----------------------------------------------------------------------------------------
 									Исправления
diff --git a/dashboard/views/includes/sidebar.ejs b/dashboard/views/includes/sidebar.ejs
index ae1434c8..78c02c39 100644
--- a/dashboard/views/includes/sidebar.ejs
+++ b/dashboard/views/includes/sidebar.ejs
@@ -9,9 +9,6 @@
 			

<%= user.username %>

- "> - <%= translate("common:STATUS_" + user.status.toUpperCase()) %>
@@ -72,6 +69,6 @@ $(`.sidebar-menu > li > a[href="${pathname}"]`).parent().addClass("active"); $(`.sidebar-menu > li > ul > li > a[href="${window.location.pathname}"]`).parent().addClass("active"); $(`.sidebar-menu > li > a[href="/${window.location.pathname.split("/")[1]}/"]`).parent().addClass( - "active"); + "active"); }); \ No newline at end of file diff --git a/dashboard/views/manager/guild.ejs b/dashboard/views/manager/guild.ejs index 789836a1..ee8e9dcf 100644 --- a/dashboard/views/manager/guild.ejs +++ b/dashboard/views/manager/guild.ejs @@ -101,13 +101,13 @@ <% if(guild.plugins.suggestions && bot.channels.cache.has(guild.plugins.suggestions)) { %> - <% guild.channels.cache.filter((ch) => ch.type === "text" && ch.id !== guild.plugins.suggestions).forEach((ch) => { %> + <% guild.channels.cache.filter((ch) => ch.type === "GUILD_TEXT" && ch.id !== guild.plugins.suggestions).forEach((ch) => { %> <% }); %> <% } else { %> - <% guild.channels.cache.filter((ch) => ch.type === "text").forEach((ch) => { %> + <% guild.channels.cache.filter((ch) => ch.type === "GUILD_TEXT").forEach((ch) => { %> <% }); %> <% } %> @@ -119,13 +119,13 @@ <% if(guild.plugins.reports && bot.channels.cache.has(guild.plugins.reports)) { %> - <% guild.channels.cache.filter((ch) => ch.type === "text" && ch.id !== guild.plugins.reports).forEach((ch) => { %> + <% guild.channels.cache.filter((ch) => ch.type === "GUILD_TEXT" && ch.id !== guild.plugins.reports).forEach((ch) => { %> <% }); %> <% } else { %> - <% guild.channels.cache.filter((ch) => ch.type === "text").forEach((ch) => { %> + <% guild.channels.cache.filter((ch) => ch.type === "GUILD_TEXT").forEach((ch) => { %> <% }); %> <% } %> @@ -137,13 +137,13 @@ <% if(guild.plugins.modlogs && bot.channels.cache.has(guild.plugins.modlogs)) { %> - <% guild.channels.cache.filter((ch) => ch.type === "text" && ch.id !== guild.plugins.modlogs).forEach((ch) => { %> + <% guild.channels.cache.filter((ch) => ch.type === "GUILD_TEXT" && ch.id !== guild.plugins.modlogs).forEach((ch) => { %> <% }); %> <% } else { %> - <% guild.channels.cache.filter((ch) => ch.type === "text").forEach((ch) => { %> + <% guild.channels.cache.filter((ch) => ch.type === "GUILD_TEXT").forEach((ch) => { %> <% }); %> <% } %> @@ -155,39 +155,18 @@ <% if(guild.plugins.birthdays && bot.channels.cache.has(guild.plugins.birthdays)) { %> - <% guild.channels.cache.filter((ch) => ch.type === "text" && ch.id !== guild.plugins.birthdays).forEach((ch) => { %> + <% guild.channels.cache.filter((ch) => ch.type === "GUILD_TEXT" && ch.id !== guild.plugins.birthdays).forEach((ch) => { %> <% }); %> <% } else { %> - <% guild.channels.cache.filter((ch) => ch.type === "text").forEach((ch) => { %> + <% guild.channels.cache.filter((ch) => ch.type === "GUILD_TEXT").forEach((ch) => { %> <% }); %> <% } %> -<<<<<<< HEAD -
- - -
-======= ->>>>>>> discordjs-13