Untitled

 avatar
unknown
plain_text
2 years ago
4.1 kB
1
Indexable
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');