mirror of
https://github.com/JonnyBro/JaBa.git
synced 2024-11-30 00:54:57 +05:00
145 lines
No EOL
4.5 KiB
JavaScript
145 lines
No EOL
4.5 KiB
JavaScript
const Command = require("../../base/Command"),
|
|
Discord = require("discord.js"),
|
|
backup = require("discord-backup");
|
|
|
|
backup.setStorageFolder(__dirname + "/../../backups");
|
|
|
|
class Backup extends Command {
|
|
constructor(client) {
|
|
super(client, {
|
|
name: "backup",
|
|
dirname: __dirname,
|
|
enabled: true,
|
|
guildOnly: true,
|
|
aliases: ["ba"],
|
|
memberPermissions: ["MANAGE_GUILD"],
|
|
botPermissions: ["SEND_MESSAGES", "EMBED_LINKS", "ADMINISTRATOR"],
|
|
nsfw: false,
|
|
ownerOnly: false,
|
|
cooldown: 20000
|
|
});
|
|
}
|
|
|
|
async run(message, args, data) {
|
|
const status = args[0];
|
|
if (!status) return message.error("administration/backup:MISSING_STATUS");
|
|
|
|
if (status === "create") {
|
|
const m = await message.sendT("misc:PLEASE_WAIT", null, {
|
|
prefixEmoji: "loading"
|
|
});
|
|
backup.create(message.guild).then((backup) => {
|
|
m.delete();
|
|
|
|
message.success("administration/backup:SUCCESS_PUBLIC");
|
|
message.author.send(message.translate("administration/backup:SUCCESS_PRIVATE", {
|
|
backupID: backup.id
|
|
})).catch(() => {
|
|
backup.remove(backup.id);
|
|
message.error("misc:CANNOT_DM");
|
|
});
|
|
}).catch((err) => {
|
|
console.error(err);
|
|
return message.error("misc:ERR_OCCURRED");
|
|
});
|
|
} else if (status === "load") {
|
|
const backupID = args[1];
|
|
if (!backupID) return message.error("administration/backup:MISSING_BACKUP_ID");
|
|
|
|
backup.fetch(backupID).then(async () => {
|
|
message.sendT("administration/backup:CONFIRMATION");
|
|
|
|
const filter = m => m.author.id === message.author.id;
|
|
const collector = message.channel.createMessageCollector({
|
|
filter,
|
|
time: 20000
|
|
});
|
|
|
|
collector.on("collect", async msg => {
|
|
if (msg.content.toLowerCase() === message.translate("common:YES").toLowerCase()) {
|
|
message.author.send(message.translate("administration/backup:START_LOADING"));
|
|
|
|
backup.load(backupID, message.guild).then(() => {
|
|
backup.remove(backupID);
|
|
message.author.send(message.translate("administration/backup:LOAD_SUCCESS"));
|
|
collector.stop();
|
|
}).catch((err) => {
|
|
console.error(err);
|
|
return message.error("misc:ERR_OCCURRED");
|
|
});
|
|
}
|
|
});
|
|
|
|
collector.on("end", (_, reason) => {
|
|
if (reason === "time") return message.error("misc:TIMES_UP");
|
|
});
|
|
}).catch((err) => {
|
|
console.error(err);
|
|
return message.error("administration/backup:NO_BACKUP_FOUND", {
|
|
backupID
|
|
});
|
|
});
|
|
} else if (status === "info") {
|
|
const backupID = args[1];
|
|
if (!backupID) return message.error("administration/backup:MISSING_BACKUP_ID");
|
|
|
|
backup.fetch(backupID).then(async (backupInfo) => {
|
|
const embed = new Discord.MessageEmbed()
|
|
.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({
|
|
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");
|
|
|
|
const filter = m => m.author.id === message.author.id;
|
|
const collector = message.channel.createMessageCollector({
|
|
filter,
|
|
time: 20000
|
|
});
|
|
|
|
collector.on("collect", async msg => {
|
|
if (msg.content.toLowerCase() === message.translate("common:YES").toLowerCase()) {
|
|
backup.remove(backupID).then(async () => {
|
|
message.success("administration/backup:SUCCESS_REMOVED");
|
|
});
|
|
collector.stop();
|
|
}
|
|
});
|
|
|
|
collector.on("end", (_, reason) => {
|
|
if (reason === "time") return message.error("misc:TIMES_UP");
|
|
});
|
|
}).catch((err) => {
|
|
console.error(err);
|
|
return message.error("administration/backup:NO_BACKUP_FOUND", {
|
|
backupID
|
|
});
|
|
});
|
|
} else {
|
|
return message.error("administration/backup:MISSING_STATUS");
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = Backup; |