UNPKG

discord-backup-v12

Version:

A complete framework to facilitate server backup using discord.js v12

156 lines (155 loc) 5.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadEmbedChannel = exports.loadBans = exports.loadEmojis = exports.loadAFK = exports.loadChannels = exports.loadRoles = exports.loadConfig = void 0; var util_1 = require("./util"); /** * Restores the guild configuration */ var loadConfig = function (guild, backupData) { var configPromises = []; if (backupData.name) { configPromises.push(guild.setName(backupData.name)); } if (backupData.iconBase64) { configPromises.push(guild.setIcon(Buffer.from(backupData.iconBase64, 'base64'))); } else if (backupData.iconURL) { configPromises.push(guild.setIcon(backupData.iconURL)); } if (backupData.splashBase64) { configPromises.push(guild.setSplash(Buffer.from(backupData.splashBase64, 'base64'))); } else if (backupData.splashURL) { configPromises.push(guild.setSplash(backupData.splashURL)); } if (backupData.bannerBase64) { configPromises.push(guild.setBanner(Buffer.from(backupData.bannerBase64, 'base64'))); } else if (backupData.bannerURL) { configPromises.push(guild.setBanner(backupData.bannerURL)); } if (backupData.region) { if(backupData.region != "deprecated") { configPromises.push(guild.setRegion(backupData.region)); } } if (backupData.verificationLevel) { configPromises.push(guild.setVerificationLevel(backupData.verificationLevel)); } if (backupData.defaultMessageNotifications) { configPromises.push(guild.setDefaultMessageNotifications(backupData.defaultMessageNotifications)); } var changeableExplicitLevel = guild.features.includes('COMMUNITY'); if (backupData.explicitContentFilter && changeableExplicitLevel) { configPromises.push(guild.setExplicitContentFilter(backupData.explicitContentFilter)); } return Promise.all(configPromises); }; exports.loadConfig = loadConfig; /** * Restore the guild roles */ var loadRoles = function (guild, backupData) { var rolePromises = []; backupData.roles.forEach(function (roleData) { if (roleData.isEveryone) { rolePromises.push(guild.roles.cache.get(guild.id).edit({ name: roleData.name, color: roleData.color, permissions: roleData.permissions, mentionable: roleData.mentionable })); } else { rolePromises.push(guild.roles.create({ // Create the role data: { name: roleData.name, color: roleData.color, hoist: roleData.hoist, permissions: roleData.permissions, mentionable: roleData.mentionable } })); } }); return Promise.all(rolePromises); }; exports.loadRoles = loadRoles; /** * Restore the guild channels */ var loadChannels = function (guild, backupData, options) { var loadChannelPromises = []; backupData.channels.categories.forEach(function (categoryData) { loadChannelPromises.push(new Promise(function (resolve) { util_1.loadCategory(categoryData, guild).then(function (createdCategory) { categoryData.children.forEach(function (channelData) { util_1.loadChannel(channelData, guild, createdCategory, options); resolve(true); }); }); })); }); backupData.channels.others.forEach(function (channelData) { loadChannelPromises.push(util_1.loadChannel(channelData, guild, null, options)); }); return Promise.all(loadChannelPromises); }; exports.loadChannels = loadChannels; /** * Restore the afk configuration */ var loadAFK = function (guild, backupData) { var afkPromises = []; if (backupData.afk) { afkPromises.push(guild.setAFKChannel(guild.channels.cache.find(function (ch) { return ch.name === backupData.afk.name; }))); afkPromises.push(guild.setAFKTimeout(backupData.afk.timeout)); } return Promise.all(afkPromises); }; exports.loadAFK = loadAFK; /** * Restore guild emojis */ var loadEmojis = function (guild, backupData) { var emojiPromises = []; backupData.emojis.forEach(function (emoji) { if (emoji.url) { emojiPromises.push(guild.emojis.create(emoji.url, emoji.name)); } else if (emoji.base64) { emojiPromises.push(guild.emojis.create(Buffer.from(emoji.base64, 'base64'), emoji.name)); } }); return Promise.all(emojiPromises); }; exports.loadEmojis = loadEmojis; /** * Restore guild bans */ var loadBans = function (guild, backupData) { var banPromises = []; backupData.bans.forEach(function (ban) { banPromises.push(guild.members.ban(ban.id, { reason: ban.reason })); }); return Promise.all(banPromises); }; exports.loadBans = loadBans; /** * Restore embedChannel configuration */ var loadEmbedChannel = function (guild, backupData) { var embedChannelPromises = []; if (backupData.widget.channel) { embedChannelPromises.push(guild.setWidget({ enabled: backupData.widget.enabled, channel: guild.channels.cache.find(function (ch) { return ch.name === backupData.widget.channel; }) })); } return Promise.all(embedChannelPromises); }; exports.loadEmbedChannel = loadEmbedChannel;