diff --git a/.gitignore b/.gitignore index a36d51cf..d3019cc4 100644 --- a/.gitignore +++ b/.gitignore @@ -6,13 +6,12 @@ node_modules package-lock.json yarn.lock -# Fortnite Shop images -assets/img/fortnite/shop/**/*.png -!assets/img/fortnite/shop/**/example-shop.png - # DB giveaways.json +# Backups +backups + # Mac OS files .DS_Store diff --git a/README.md b/README.md index c7f677a0..a4527cc5 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# JaBa-new +# JaBa diff --git a/assets/img/fortnite/shop/english/example-shop.png b/assets/img/fortnite/shop/english/example-shop.png deleted file mode 100644 index db2195b0..00000000 Binary files a/assets/img/fortnite/shop/english/example-shop.png and /dev/null differ diff --git a/assets/img/fortnite/stats/background.png b/assets/img/fortnite/stats/background.png deleted file mode 100644 index 4a6a68e9..00000000 Binary files a/assets/img/fortnite/stats/background.png and /dev/null differ diff --git a/assets/img/fortnite/stats/crown.png b/assets/img/fortnite/stats/crown.png deleted file mode 100644 index b886a9c0..00000000 Binary files a/assets/img/fortnite/stats/crown.png and /dev/null differ diff --git a/assets/img/fortnite/stats/pc.png b/assets/img/fortnite/stats/pc.png deleted file mode 100644 index 7f201a34..00000000 Binary files a/assets/img/fortnite/stats/pc.png and /dev/null differ diff --git a/assets/img/fortnite/stats/psn.png b/assets/img/fortnite/stats/psn.png deleted file mode 100644 index 2b38e8eb..00000000 Binary files a/assets/img/fortnite/stats/psn.png and /dev/null differ diff --git a/assets/img/fortnite/stats/xbl.png b/assets/img/fortnite/stats/xbl.png deleted file mode 100644 index b1c2b615..00000000 Binary files a/assets/img/fortnite/stats/xbl.png and /dev/null differ diff --git a/base/Guild.js b/base/Guild.js index 8bfbf0b4..5a93cd5f 100644 --- a/base/Guild.js +++ b/base/Guild.js @@ -53,7 +53,6 @@ module.exports = mongoose.model("Guild", new Schema({ modlogs: false, // the channel in which the moderation logs (mute, kick, ban, etc...) will be sent birthdays: false, // the channel in which birtdays announcements will be sent reports: false, // the channel in which the reports will be sent - fortniteshop: false, // the channel in which the fortnite shop image will be sent at 2.05am logs: false // the channel in which the logs (message deleted, etc...) will be sent }}, slowmode: { type: Object, default: { // Servers slowmode diff --git a/base/User.js b/base/User.js index e3587299..4a017c05 100644 --- a/base/User.js +++ b/base/User.js @@ -107,10 +107,12 @@ userSchema.method("getAchievements", async function() { await Canvas.loadImage(`./assets/img/achievements/achievement${this.achievements.invite.achieved ? "_colored" : ""}7.png`) ]; let dim = 0; + for (let i = 0; i < images.length; i++) { await ctx.drawImage(images[i], dim, 10, 350, 200); dim += 200; }; + return canvas.toBuffer(); }); diff --git a/commands/Administration/backup.js b/commands/Administration/backup.js index 34884aec..bf91a1e2 100644 --- a/commands/Administration/backup.js +++ b/commands/Administration/backup.js @@ -3,6 +3,8 @@ const Command = require("../../base/Command.js"), backup = require("discord-backup"), Sentry = require("@sentry/node"); +backup.setStorageFolder(__dirname + "../../../backups"); + class Backup extends Command { constructor(client) { super(client, { @@ -15,7 +17,7 @@ class Backup extends Command { botPermissions: ["SEND_MESSAGES", "EMBED_LINKS", "ADMINISTRATOR"], nsfw: false, ownerOnly: false, - cooldown: 10000 + cooldown: 20000 }); } @@ -50,24 +52,21 @@ class Backup extends Command { max: 1, time: 20000, errors: ["time"] - }).catch(() => { - // if the author of the commands does not confirm the backup loading - return message.error("misc:TIMES_UP"); + }).catch((err) => { + console.error(err); + return message.error("administration/backup:TIMES_UP"); }); - // When the author of the command has confirmed that he wants to load the backup on his server message.author.send(message.translate("administration/backup:START_LOADING")); - // Load the backup + backup.load(backupID, message.guild).then(() => { - // When the backup is loaded, delete them from the server backup.remove(backupID); message.author.send(message.translate("administration/backup:LOAD_SUCCESS")); }).catch((err) => { - Sentry.captureException(err); - // If an error occurenced + console.error(err); return message.error("misc:ERR_OCCURRED"); }); - }).catch(() => { - // if the backup wasn't found + }).catch((err) => { + console.error(err); return message.error("administration/backup:NO_BACKUP_FOUND", { backupID }); @@ -76,22 +75,47 @@ class Backup extends Command { const backupID = args[1]; if (!backupID) return message.error("administration/backup:MISSING_BACKUP_ID"); - backup.fetch(backupID).then(async (backupInfos) => { + backup.fetch(backupID).then(async (backupInfo) => { const embed = new Discord.MessageEmbed() - .setAuthor(message.translate("administration/backup:TITLE_INFO")) - // Display the backup ID - .addField(message.translate("administration/backup:TITLE_ID"), backupInfos.id, true) - // Displays the server from which this backup comes - .addField(message.translate("administration/backup:TITLE_SERVER_ID"), backupInfos.data.guildID, true) - // Display the size (in mb) of the backup - .addField(message.translate("administration/backup:TITLE_SIZE"), `${backupInfos.size}mb`, true) - // Display when the backup was created - .addField(message.translate("administration/backup:TITLE_CREATED_AT"), message.printDate(new Date(backupInfos.data.createdTimestamp)), true) + .setAuthor({ + name: message.translate("administration/backup:TITLE_INFO") + }) + .addField(message.translate("administration/backup:TITLE_ID"), backupInfo.id, true) + .addField(message.translate("administration/backup:TITLE_SERVER_ID"), backupInfo.data.guildID.toString(), true) + .addField(message.translate("administration/backup:TITLE_SIZE"), `${backupInfo.size} kb`, true) + .addField(message.translate("administration/backup:TITLE_CREATED_AT"), message.printDate(new Date(backupInfo.data.createdTimestamp)), true) .setColor(data.config.embed.color) - .setFooter(data.config.embed.footer); - message.channel.send(embed); - }).catch(() => { - // if the backup wasn't found + .setFooter({ + text: data.config.embed.footer + }); + message.channel.send({ + embeds: [embed] + }); + }).catch((err) => { + console.error(err); + return message.error("administration/backup:NO_BACKUP_FOUND", { + backupID + }); + }); + } else if (status === "remove") { + const backupID = args[1]; + if (!backupID) return message.error("administration/backup:MISSING_BACKUP_ID"); + + backup.fetch(backupID).then(async () => { + message.sendT("administration/backup:REMOVE_CONFIRMATION"); + await message.channel.awaitMessages(m => (m.author.id === message.author.id) && (m.content === "confirm"), { + max: 1, + time: 20000, + errors: ["time"] + }).catch(() => { + return message.error("administration/backup:TIMES_UP"); + }); + + backup.remove(backupID).then(async () => { + message.success("administration/backup:SUCCESS_REMOVED"); + }); + }).catch((err) => { + console.error(err); return message.error("administration/backup:NO_BACKUP_FOUND", { backupID }); diff --git a/commands/Administration/configuration.js b/commands/Administration/configuration.js index 96ec1fdf..d6601bda 100644 --- a/commands/Administration/configuration.js +++ b/commands/Administration/configuration.js @@ -61,9 +61,6 @@ class Configuration extends Command { }) + "\n" + message.translate("administration/configuration:BIRTHDAYS", { channel: guildData.plugins.birthdays ? `<#${guildData.plugins.birthdays}>` : message.translate("common:NOT_DEFINED") - }) + "\n" + - message.translate("administration/configuration:FORTNITESHOP", { - channel: guildData.plugins.fortniteshop ? `<#${guildData.plugins.fortniteshop}>` : message.translate("common:NOT_DEFINED") }) ); diff --git a/commands/Economy/achievements.js b/commands/Economy/achievements.js index 4b19154a..358eee3d 100644 --- a/commands/Economy/achievements.js +++ b/commands/Economy/achievements.js @@ -18,45 +18,54 @@ class Achievements extends Command { } async run(message, args, data) { + const arg = args[0] || message.author + let member = await this.client.resolveMember(arg, message.guild); + if (!member) member = message.member; + if (member.user.bot) return message.error("economy/profile:BOT_USER"); + + const userData = (member.id === message.author.id ? data.userData : await this.client.findOrCreateUser({ + id: member.id + })); + const embed = new Discord.MessageEmbed() .setAuthor(message.translate("economy/achievements:TITLE")) .setColor(data.config.embed.color) .setFooter(data.config.embed.footer); embed.addField(message.translate("economy/achievements:SEND_CMD"), message.translate("economy/achievements:PROGRESS", { - now: data.userData.achievements.firstCommand.progress.now, - total: data.userData.achievements.firstCommand.progress.total, - percent: Math.round(100 * (data.userData.achievements.firstCommand.progress.now / data.userData.achievements.firstCommand.progress.total)) + now: userData.achievements.firstCommand.progress.now, + total: userData.achievements.firstCommand.progress.total, + percent: Math.round(100 * (userData.achievements.firstCommand.progress.now / userData.achievements.firstCommand.progress.total)) })); embed.addField(message.translate("economy/achievements:CLAIM_SALARY"), message.translate("economy/achievements:PROGRESS", { - now: data.userData.achievements.work.progress.now, - total: data.userData.achievements.work.progress.total, - percent: Math.round(100 * (data.userData.achievements.work.progress.now / data.userData.achievements.work.progress.total)) + now: userData.achievements.work.progress.now, + total: userData.achievements.work.progress.total, + percent: Math.round(100 * (userData.achievements.work.progress.now / userData.achievements.work.progress.total)) })); embed.addField(message.translate("economy/achievements:MARRY"), message.translate("economy/achievements:PROGRESS", { - now: data.userData.achievements.married.progress.now, - total: data.userData.achievements.married.progress.total, - percent: Math.round(100 * (data.userData.achievements.married.progress.now / data.userData.achievements.married.progress.total)) + now: userData.achievements.married.progress.now, + total: userData.achievements.married.progress.total, + percent: Math.round(100 * (userData.achievements.married.progress.now / userData.achievements.married.progress.total)) })); embed.addField(message.translate("economy/achievements:SLOTS"), message.translate("economy/achievements:PROGRESS", { - now: data.userData.achievements.slots.progress.now, - total: data.userData.achievements.slots.progress.total, - percent: Math.round(100 * (data.userData.achievements.slots.progress.now / data.userData.achievements.slots.progress.total)) + now: userData.achievements.slots.progress.now, + total: userData.achievements.slots.progress.total, + percent: Math.round(100 * (userData.achievements.slots.progress.now / userData.achievements.slots.progress.total)) })); embed.addField(message.translate("economy/achievements:TIP"), message.translate("economy/achievements:PROGRESS", { - now: data.userData.achievements.tip.progress.now, - total: data.userData.achievements.tip.progress.total, - percent: Math.round(100 * (data.userData.achievements.tip.progress.now / data.userData.achievements.tip.progress.total)) + now: userData.achievements.tip.progress.now, + total: userData.achievements.tip.progress.total, + percent: Math.round(100 * (userData.achievements.tip.progress.now / userData.achievements.tip.progress.total)) })); embed.addField(message.translate("economy/achievements:REP"), message.translate("economy/achievements:PROGRESS", { - now: data.userData.achievements.rep.progress.now, - total: data.userData.achievements.rep.progress.total, - percent: Math.round(100 * (data.userData.achievements.rep.progress.now / data.userData.achievements.rep.progress.total)) + now: userData.achievements.rep.progress.now, + total: userData.achievements.rep.progress.total, + percent: Math.round(100 * (userData.achievements.rep.progress.now / userData.achievements.rep.progress.total)) })); embed.addField(message.translate("economy/achievements:INVITE"), message.translate("economy/achievements:PROGRESS", { - now: data.userData.achievements.invite.progress.now, - total: data.userData.achievements.invite.progress.total, - percent: Math.round(100 * (data.userData.achievements.invite.progress.now / data.userData.achievements.invite.progress.total)) + now: userData.achievements.invite.progress.now, + total: userData.achievements.invite.progress.total, + percent: Math.round(100 * (userData.achievements.invite.progress.now / userData.achievements.invite.progress.total)) })); message.channel.send(embed); diff --git a/commands/Economy/pay.js b/commands/Economy/pay.js index b4dc60b5..063a2dd4 100644 --- a/commands/Economy/pay.js +++ b/commands/Economy/pay.js @@ -26,7 +26,13 @@ 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, @@ -40,7 +46,7 @@ class Pay extends Command { memberData.save(); message.success("economy/pay:SUCCESS", { - amount: `${amount} ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, + amount: `**${amount}** ${message.getNoun(amount, message.translate("misc:NOUNS:CREDIT:1"), message.translate("misc:NOUNS:CREDIT:2"), message.translate("misc:NOUNS:CREDIT:5"))}`, username: member.user.tag }); } diff --git a/commands/Economy/profile.js b/commands/Economy/profile.js index 0417ea6f..35eabbb6 100644 --- a/commands/Economy/profile.js +++ b/commands/Economy/profile.js @@ -81,7 +81,19 @@ class Profile extends Command { .setFooter(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({ + embeds: [profileEmbed], + files: [{ + name: "achievements.png", + attachment: buffer + }] + }); // Send the embed in the current channel +>>>>>>> discordjs-13 } }; diff --git a/commands/Economy/work.js b/commands/Economy/work.js index 10ba9f82..4c5d6dc2 100644 --- a/commands/Economy/work.js +++ b/commands/Economy/work.js @@ -80,7 +80,11 @@ 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/number.js b/commands/Fun/number.js index 16fabf36..bb7b8523 100644 --- a/commands/Fun/number.js +++ b/commands/Fun/number.js @@ -66,8 +66,9 @@ class Number extends Command { }); userdata.money = userdata.money + won; userdata.save(); - collector.stop(msg.author.username); }; + + collector.stop(); }; if (parseInt(msg.content) < number) message.error("fun/number:BIG", { user: msg.author.toString(), diff --git a/commands/Fun/tictactoe.js b/commands/Fun/tictactoe.js index 9860ad8f..f394ee9f 100644 --- a/commands/Fun/tictactoe.js +++ b/commands/Fun/tictactoe.js @@ -6,7 +6,7 @@ class TicTacToe extends Command { super(client, { name: "tictactoe", dirname: __dirname, - enabled: true, + enabled: false, guildOnly: false, aliases: ["ttt"], memberPermissions: [], diff --git a/commands/General/serverinfo.js b/commands/General/serverinfo.js index f8947f04..030de95e 100644 --- a/commands/General/serverinfo.js +++ b/commands/General/serverinfo.js @@ -29,6 +29,7 @@ class Serverinfo extends Command { }; await guild.members.fetch(); + const owner = await guild.fetchOwner(); const embed = new Discord.MessageEmbed() .setAuthor(guild.name, guild.iconURL({ @@ -45,8 +46,8 @@ class Serverinfo extends Command { ) .addField(this.client.customEmojis.afk + message.translate("general/serverinfo:AFK_CHANNEL"), guild.afkChannel || message.translate("general/serverinfo:NO_AFK_CHANNEL"), true) .addField(this.client.customEmojis.id + message.translate("common:ID"), guild.id, true) - .addField(this.client.customEmojis.crown + message.translate("common:OWNER"), guild.owner, true) - .addField(this.client.customEmojis.boost + message.translate("general/serverinfo:BOOSTS"), guild.premiumSubscriptionCount || 0, true) + .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"))}` + diff --git a/commands/Moderation/announcement.js b/commands/Moderation/announcement.js index b178cd86..732946fe 100644 --- a/commands/Moderation/announcement.js +++ b/commands/Moderation/announcement.js @@ -24,7 +24,7 @@ class Announcement extends Command { message.delete().catch(() => {}); - let mention = ""; + 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, { time: 240000 diff --git a/commands/Moderation/poll.js b/commands/Moderation/poll.js index 96486f0a..8f8c4438 100644 --- a/commands/Moderation/poll.js +++ b/commands/Moderation/poll.js @@ -23,7 +23,7 @@ class Poll extends Command { message.delete().catch(() => {}); - let mention = ""; + 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, { time: 240000 diff --git a/commands/Music/autoplay.js b/commands/Music/autoplay.js index e015fc72..c80c123f 100644 --- a/commands/Music/autoplay.js +++ b/commands/Music/autoplay.js @@ -23,7 +23,7 @@ class AutoPlay extends Command { if (!voice) return message.error("music/play:NO_VOICE_CHANNEL"); if (!queue) return message.error("music/play:NOT_PLAYING"); - const autoplay = queue.toggleAutoplay() + const autoplay = queue.toggleAutoplay(); message.success(`music/autoplay:SUCCESS_${autoplay ? "ENABLED" : "DISABLED"}`); } diff --git a/commands/Music/np.js b/commands/Music/np.js index 7764f063..dbd5fbbe 100644 --- a/commands/Music/np.js +++ b/commands/Music/np.js @@ -27,6 +27,16 @@ class Np extends Command { // Gets the current song const track = queue.songs[0]; + const status = queue => + `Фильтры: \`${queue.filters.join(", ") + || "Выкл"}\` | Повтор: \`${ + queue.repeatMode + ? queue.repeatMode === 2 + ? "Очереди" + : "Трека" + : "Выкл" + }\` | Автовоспроизведение: \`${queue.autoplay ? "Вкл" : "Выкл"}\``; + // Generate discord embed to display song informations const embed = new Discord.MessageEmbed() .setAuthor(message.translate("music/queue:TITLE")) @@ -34,6 +44,7 @@ class Np extends Command { .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) .setTimestamp(); diff --git a/commands/Music/play.js b/commands/Music/play.js index 43157ba7..b10b4e09 100644 --- a/commands/Music/play.js +++ b/commands/Music/play.js @@ -17,11 +17,10 @@ class Play extends Command { } async run(message, args) { - const name = args.join(" "); - if (!name) return message.error("music/play:MISSING_SONG_NAME"); - const voice = message.member.voice.channel; + const name = args.join(" "); if (!voice) return message.error("music/play:NO_VOICE_CHANNEL"); + if (!name) return message.error("music/play:MISSING_SONG_NAME"); // Check my permissions const perms = voice.permissionsFor(this.client.user); diff --git a/commands/Music/queue.js b/commands/Music/queue.js index 366e959d..d57ab1d9 100644 --- a/commands/Music/queue.js +++ b/commands/Music/queue.js @@ -18,7 +18,7 @@ class Queue extends Command { }); } - async run(message, args, data) { + async run(message, args, data, interaction) { const voice = message.member.voice.channel; const queue = this.client.player.getQueue(message); @@ -44,15 +44,15 @@ class Queue extends Command { })) .addField(message.translate("music/np:CURRENTLY_PLAYING"), `[${queue.songs[0].name}](${queue.songs[0].url})\n*Добавил ${queue.songs[0].member}*\n`); - FieldsEmbed.setArray(queue.songs[1] ? queue.songs.slice(1, queue.songs.length) : []) + FieldsEmbed + .setArray(queue.songs[1] ? queue.songs.slice(1, queue.songs.length) : []) .setAuthorizedUsers([message.author.id]) .setChannel(message.channel) .setElementsPerPage(5) .setDeleteOnTimeout(true) .setPageIndicator(true) - .formatField("Очередь", (track) => `[${track.name}](${track.url})\n*Добавил ${track.member}*\n`); - - FieldsEmbed.build(); + .formatField("Очередь", (track) => `[${track.name}](${track.url})\n*Добавил ${track.member}*\n`) + .build(); } }; diff --git a/commands/Music/seek.js b/commands/Music/seek.js index b0501326..63d6a191 100644 --- a/commands/Music/seek.js +++ b/commands/Music/seek.js @@ -20,6 +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"); diff --git a/dashboard/routes/guild-manager.js b/dashboard/routes/guild-manager.js index ea92252f..86306b0f 100644 --- a/dashboard/routes/guild-manager.js +++ b/dashboard/routes/guild-manager.js @@ -123,9 +123,6 @@ router.post("/:serverID", CheckAuth, async(req, res) => { if (data.modlogs === req.translate("common:NO_CHANNEL")) guildData.plugins.modlogs = false; else guildData.plugins.modlogs = guild.channels.cache.find((ch) => "#" + ch.name === data.modlogs).id; - if (data.fortniteshop === req.translate("common:NO_CHANNEL")) guildData.plugins.fortniteshop = false; - else guildData.plugins.fortniteshop = guild.channels.cache.find((ch) => "#" + ch.name === data.fortniteshop).id; - if (data.birthdays === req.translate("common:NO_CHANNEL")) guildData.plugins.birthdays = false; else guildData.plugins.birthdays = guild.channels.cache.find((ch) => "#" + ch.name === data.birthdays).id; diff --git a/dashboard/views/docs.ejs b/dashboard/views/docs.ejs index 6159af05..e582c1a3 100644 --- a/dashboard/views/docs.ejs +++ b/dashboard/views/docs.ejs @@ -194,6 +194,19 @@
----------------------------------------------------------------------------------------- +<<<<<<< HEAD +======= + JaBa v3.2 + ----------------------------------------------------------------------------------------- + Изменения + - Переход на discord.js v13. + Обновление очень большое, обязательно сообщайте мне если найдёте ошибку! + + Примечания + - tictactoe отключена до обновления модуля на discord.js 13! + + ----------------------------------------------------------------------------------------- +>>>>>>> discordjs-13 JaBa v3.1.6 ----------------------------------------------------------------------------------------- Исправления diff --git a/dashboard/views/manager/guild.ejs b/dashboard/views/manager/guild.ejs index 4010c1ee..789836a1 100644 --- a/dashboard/views/manager/guild.ejs +++ b/dashboard/views/manager/guild.ejs @@ -167,6 +167,7 @@ <% } %>