const Discord = require('discord.js');
const client = new Discord.Client();
const db = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', msg => {
if (msg.content === '!backup-foro') {
msg.channel.send('Comenzando la copia de seguridad de los foros...');
const channelIds = ['ID_DEL_CANAL_1', 'ID_DEL_CANAL_2', 'ID_DEL_CANAL_3'];
const promises = channelIds.map(id => {
const channel = client.channels.cache.get(id);
return channel.messages.fetch()
.then(messages => {
const messagesArray = messages.array();
// Guarda los mensajes en la base de datos
db.connect(url, function(err, client) {
const db = client.db('discord_backup');
db.collection(`${id}_messages`).insertMany(messagesArray, function(err, res) {
if (err) throw err;
console.log(`Mensajes guardados para el canal ${id}`);
client.close();
});
});
})
.catch(console.error);
});
Promise.all(promises)
.then(() => {
msg.channel.send('Copia de seguridad de los foros completa!');
})
.catch(console.error);
}
if (msg.content === '!backup') {
msg.channel.send('Comenzando la copia de seguridad de todos los canales...');
const channels = msg.guild.channels.cache.filter(channel => channel.type === 'text');
const promises = channels.map(channel => {
return channel.messages.fetch()
.then(messages => {
const messagesArray = messages.array();
// Guarda los mensajes en la base de datos
db.connect(url, function(err, client) {
const db = client.db('discord_backup');
db.collection(`${channel.id}_messages`).insertMany(messagesArray, function(err, res) {
if (err) throw err;
console.log(`Mensajes guardados para el canal ${channel.id}`);
client.close();
});
});
})
.catch(console.error);
});
Promise.all(promises)
.then(() => {
msg.channel.send('Copia de seguridad de todos los canales completa!');
})
.catch(console.error);
}
if (msg.content === '!load') {
msg.channel.send('Cargando copia de seguridad de todos los canales...');
const channels = msg.guild.channels.cache.filter(channel => channel.type === 'text');
const promises = channels.map(channel => {
return db.connect(url, function(err, client) {
const db = client.db('discord_backup');
return db.collection(`${channel.id}_messages`).find().toArray()
.then(messages => {
const promises = messages.map(message => {
return channel.send(message.content);
});
return Promise.all(promises)
.then(() => {
console.log(`Mensajes cargados para el canal ${channel.id}`);
client.close();
});
})
.catch(console.error);
});
});
Promise.all(promises)
.then(() => {
msg.channel.send('Carga de todos los canales completa!');
})
.catch(console.error);
}
if (msg.content === '!load-content') {
msg.channel.send('Cargando contenido de la copia de seguridad...');
const channelIds = ['ID_DEL_CANAL_1', 'ID_DEL_CANAL_2', 'ID_DEL_CANAL_3'];
const promises = channelIds.map(id => {
const channel = client.channels.cache.get(id);
return db.connect(url, function(err, client) {
const db = client.db('discord_backup');
return db.collection(${id}_messages).find().toArray()
.then(messages => {
const promises = messages.map(message => {
return channel.send(message.content);
});
return Promise.all(promises)
.then(() => {
console.log(Mensajes cargados para el canal ${id});
client.close();
});
})
.catch(console.error);
});
});
Promise.all(promises)
.then(() => {
msg.channel.send('Carga del contenido de la copia de seguridad completa!');
})
.catch(console.error);
}
});
client.login('TOKEN_DEL_BOT');