Advertisement
Guest User

Untitled

a guest
Sep 20th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. clearMessages = function (guild_id, author_id, authToken, deleted = new Set()) {
  2. const searchURL = `https://discordapp.com/api/v6/guilds/${guild_id}/messages/search?author_id=${author_id}&include_nsfw=true`
  3. const headers = { Authorization: authToken }
  4. let clock = 0
  5. interval = 500
  6. function delay(duration) {
  7. return new Promise((resolve, reject) => {
  8. setTimeout(resolve, duration)
  9. })
  10. }
  11. function loadMessages() {
  12. return fetch(searchURL, { headers })
  13. }
  14. function tryDeleteMessage(message) {
  15. // RAce coNDItiOn
  16. if (message.author.id == author_id && !deleted.has(message.id)) { // skip already deleted messages
  17. console.log(`Deleting message ${message.id} from ${message.author.username} (${message.content}...)`)
  18. return fetch(`https://discordapp.com/api/v6/channels/${message.channel_id}/messages/${message.id}`, { headers, method: 'DELETE' })
  19. }
  20. }
  21. let messagesStore = []
  22.  
  23. loadMessages()
  24. .then(resp => resp.json())
  25. .then(messages => {
  26. messages = messages.messages
  27. if (messages === undefined || messages === null || messages.length == 0) {
  28. console.log(`Couldn't load messages. Check guild id, author id, and auth token.`)
  29. return
  30. }
  31. messages = messages.filter(m => m) // clean undefined
  32. messages = [].concat.apply([], messages); // flatten
  33. messages = messages.filter(m => m) // clean undefined
  34. if (messages.length === 0) {
  35. console.log(`Couldn't load messages. Check guild id, author id, and auth token.`)
  36. return
  37. }
  38.  
  39. //filter by author
  40. messages = messages.filter(m => m.author.id == author_id)
  41. // unique by id
  42. messages = messages.filter((e, i) => messages.findIndex(a => a.id === e.id) === i);
  43.  
  44. beforeId = messages[messages.length-1].id
  45. messagesStore = messagesStore.concat(messages)
  46. return Promise.all(messagesStore.map(message => {
  47. return delay(clock += interval)
  48. .then(() => tryDeleteMessage(message))
  49. .then(resp => {
  50. if (resp) {
  51. if (resp.status == 429) {
  52. interval += 10
  53. console.log(`Too fast; bumping interval to ${interval}`)
  54. } else if (resp.status === 204) {
  55. deleted.add(message.id) // mark deleted
  56. return resp.text()
  57. }
  58. }
  59. })
  60. }))
  61. })
  62. .then(function() {
  63. if (messagesStore.length !== 0) {
  64. clearMessages(guild_id, author_id, authToken, deleted)
  65. } else {
  66. console.log(`We have loaded all messages in this chat.`)
  67. }
  68. })
  69. }
  70. var authToken = "mfa.YAEFtFq5m-uIBg5WVxO8R_aOTgtXf_faFXKwmSvGXgrdBZN2EHcYuHIdxXZUXGgI79yp98RS2Gt7rEwuId62"
  71. if (authToken == "mfa.YAEFtFq5m-uIBg5WVxO8R_aOTgtXf_faFXKwmSvGXgrdBZN2EHcYuHIdxXZUXGgI79yp98RS2Gt7rEwuId62") {
  72. // bypass token security measures (?)
  73. window.alert("Getting token. When confirm window showed up, please click 'Cancel' in Chrome / 'Stay on Page' in Firefox.");
  74. window.onbeforeunload = function () {
  75. return false;
  76. }
  77. window.location.reload();
  78.  
  79. // yoink
  80. var localToken = document.body.appendChild(document.createElement(`iframe`)).contentWindow.localStorage.token
  81. if (localToken === undefined) {
  82. console.log(`Getting the auth token from localStorage isn't supported on your client. Use Firefox or grab it from a network request's headers.`)
  83. console.log(`To do that go to the Network tab of your inspector and copy the Authorization header of a request. There are detailed instructions in the README.`)
  84. authToken = ""
  85. } else {
  86. authToken = JSON.parse(localToken)
  87. }
  88. }
  89. if (authToken.length !== 0) {
  90. clearMessages('614175023619375104', '624748701453254696', 'mfa.YAEFtFq5m-uIBg5WVxO8R_aOTgtXf_faFXKwmSvGXgrdBZN2EHcYuHIdxXZUXGgI79yp98RS2Gt7rEwuId62')
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement