Удаление моих сообщений на сервере с помощью bulkdelete (discord.js)

Я новичок в discord.js, но узнал, что могу удалять свои сообщения с помощью bulkDelete, и он удалит их все, даже если они старше двух недель. Я очищаю свои сообщения на сервере, который модерирую вручную раз в месяц, и, разумеется, это занимает вечность. Мне было интересно, сможет ли кто-нибудь помочь мне создать команду, которая будет делать это автоматически, когда я ее вызываю?

Спасибо, K

4
0
2 368
2

Ответы 2

Я бы настроил рекурсивную функцию, которая проверяет, есть ли сообщения в канале (максимум 100 каждый раз): если сообщений нет, он останавливается, в противном случае он удаляет их и перезапускается.

function clean(channel, limit = 100) {
  return channel.fetchMessages({limit}).then(async collected => {
    let mine = collected.filter(m => m.author.id == 'your_id_here'); // this gets only your messages
    if (mine.size > 0) {
      await channel.bulkDelete(mine, true);
      clean(channel);
    } else channel.send("The channel is now empty!").delete(5000); // this message is deleted after 5 s
  });
}

Вы можете адаптировать эту идею к существующему парсеру команд или, если вы не знаете, как это реализовать, попробуйте:

client.on('message', msg => {
  if (msg.author.bot || msg.author != YOU) return; 
  // with YOU i mean your User object, to check permissions

  let command = 'clean', // the name of your command
    args = msg.content.split(' ');
  if (args[0].toLowerCase() == command) 
    clean(msg.channel, !isNaN(args[1]) ? args[1] : undefined); //<-- THIS is how to use the function
  // used a ternary operator to check if the other arg is a number
});

Это просто базовая реализация очень, есть много лучших способов обнаружения команд.

Это удаляет все сообщения, я просто хотел, чтобы он нашел мои собственные и удалил их, даже если они старше 2 недель.

xxx 22.09.2018 23:13

Я только что нашел способ фильтровать сообщения. Вы можете получать сообщения, а затем проверять каждое сообщение, если оно ваше.

await message.channel.fetchMessages({
  limit: 100
}).then((msgCollection) => {
  msgCollection.forEach((msg) => {
    if(msg.author.id == message.author.id) {
      msg.delete();
    }
  })
});

Другие вопросы по теме