Advertisement
Guest User

Delete DMs

a guest
Dec 18th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. var authToken = '_____________________________________'
  3.  
  4. if (typeof(blockedAuthors) === 'undefined') {
  5.     var blockedAuthors = []
  6. }
  7.  
  8. clearMessages = function() {
  9.     const channel = window.location.href.split('/').pop()
  10.     const baseURL = `https://discordapp.com/api/channels/${channel}/messages`
  11.     const headers = { Authorization: authToken }
  12.  
  13.     let clock = 0
  14.     let interval = 500
  15.     let beforeId = null
  16.     let messagesStore = []
  17.  
  18.     function delay(duration) {
  19.         return new Promise((resolve, reject) => {
  20.             setTimeout(resolve, duration)
  21.         })
  22.     }
  23.  
  24.     function loadMessages() {
  25.  
  26.         let url = `${baseURL}?limit=100`
  27.  
  28.         if (beforeId) {
  29.             url += `&before=${beforeId}`
  30.         }
  31.  
  32.         return fetch(url, { headers })
  33.     }
  34.  
  35.     function tryDeleteMessage(message) {
  36.         if (blockedAuthors.indexOf(message.author.id) === -1) {
  37.  
  38.             console.log(`Deleting message from ${message.author.username} (${message.content.substring(0, 30)}...)`)
  39.  
  40.             return fetch(`${baseURL}/${message.id}`, { headers, method: 'DELETE' })
  41.         }
  42.     }
  43.  
  44.     function filterMessages(message) {
  45.         return blockedAuthors.indexOf(message.author.id) === -1
  46.     }
  47.  
  48.     function onlyNotDeleted(message) {
  49.         return message.deleted === false
  50.     }
  51.  
  52.     loadMessages()
  53.         .then(resp => resp.json())
  54.         .then(messages => {
  55.             if (messages === null || messages.length === 0) {
  56.                 console.log(`We loaded all messages in this chat`)
  57.  
  58.                 return
  59.             }
  60.  
  61.             beforeId = messages[messages.length-1].id
  62.  
  63.             messages.forEach(message => { message.deleted = false })
  64.  
  65.             messagesStore = messagesStore.concat(messages.filter(filterMessages))
  66.  
  67.             return Promise.all(messagesStore.filter(onlyNotDeleted).map(message => {
  68.                 return delay(clock += interval)
  69.                     .then(() => tryDeleteMessage(message))
  70.                     .then(resp => {
  71.                         if (resp && resp.status === 204) {
  72.                             message.deleted = true
  73.                         } else if (resp && resp.status === 403) {
  74.                             console.log(`Cannot delete messages from user ${message.author.username}, skiping it`)
  75.  
  76.                             blockedAuthors.push(message.author.id)
  77.  
  78.                             messagesStore = messagesStore.filter(filterMessages)
  79.                         }
  80.                     })
  81.             }))
  82.         })
  83.         .then(function() {
  84.             if (messagesStore.length !== 0 && messagesStore.length < 100) {
  85.                 clearMessages()
  86.             } else {
  87.                 console.log(`Finished clearing cycle. You can run again this script if you want delete next 100 messages`)
  88.             }
  89.         })
  90. }
  91.  
  92. clearMessages()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement