Данная инструкция научит вас удалять сразу большое количество сообщений в программе Discord.
Вы выполняете эти действия только на свой страх и риск. Я не несу ответственности за то, что вы таким образом удалите важные данные или передадите таким образом доступ к своему аккаунту другому лицу.
НЕ ЗАПУСКАЙТЕ ТАКИЕ СКРИПТЫ, пока вы не будете достаточно уверены в том, что скрипт был написан честным человеком и не содержит ничего такого, что поможет ему получить доступ к вашим данным. Сделать это очень просто, уверяю вас, поэтому несколько раз подумайте перед тем как выполнить какой-то код в браузере от какого-то человека.
Исходный код скрипта
```js var authToken = '_____________________________________'if (typeof(blockedAuthors) === 'undefined') { var blockedAuthors = [] }
clearMessages = function() {
const channel = window.location.href.split('/').pop()
const baseURL = https://discordapp.com/api/channels/${channel}/messages
const headers = { Authorization: authToken }
let clock = 0
let interval = 500
let beforeId = null
let messagesStore = []
function delay(duration) {
return new Promise((resolve, reject) => {
setTimeout(resolve, duration)
})
}
function loadMessages() {
let url = `${baseURL}?limit=100`
if (beforeId) {
url += `&before=${beforeId}`
}
return fetch(url, { headers })
}
function tryDeleteMessage(message) {
if (blockedAuthors.indexOf(message.author.id) === -1) {
console.log(`Deleting message from ${message.author.username} (${message.content.substring(0, 30)}...)`)
return fetch(`${baseURL}/${message.id}`, { headers, method: 'DELETE' })
}
}
function filterMessages(message) {
return blockedAuthors.indexOf(message.author.id) === -1
}
function onlyNotDeleted(message) {
return message.deleted === false
}
loadMessages()
.then(resp => resp.json())
.then(messages => {
if (messages === null || messages.length === 0) {
console.log(`We loaded all messages in this chat`)
return
}
beforeId = messages[messages.length-1].id
messages.forEach(message => { message.deleted = false })
messagesStore = messagesStore.concat(messages.filter(filterMessages))
return Promise.all(messagesStore.filter(onlyNotDeleted).map(message => {
return delay(clock += interval)
.then(() => tryDeleteMessage(message))
.then(resp => {
if (resp && resp.status === 204) {
message.deleted = true
} else if (resp && resp.status === 403) {
console.log(`Cannot delete messages from user ${message.author.username}, skiping it`)
blockedAuthors.push(message.author.id)
messagesStore = messagesStore.filter(filterMessages)
}
})
}))
})
.then(function() {
if (messagesStore.length !== 0 && messagesStore.length < 100) {
clearMessages()
} else {
console.log(`Finished clearing cycle. You can run again this script if you want delete next 100 messages`)
}
})
}
clearMessages()
</details>
Данный скрипт делает следующие вещи:
1. Пытается загрузить последние 100 сообщений в текущем чате, которые он может удалить
2. Пытается удалить каждое сообщение. Если он не может удалить сообщение одного из
пользователей в истории, далее он не будет пытаться удалять его сообщения
Чтобы работал данный скрипт, вам придётся скопировать токен безопасности из консоли разработчика браузера. **Никому не передавайте данный токен из посторонних лиц**, так как они смогут использовать его для доступа
к вашему аккаунту.
## Короткая инструкция
Для тех кто знаком с веб-разработкой:
1. Откройте Discord в браузере
2. Скопируйте токен авторизации в консоли разработчика из localStorage
3. Вставьте его в начало скрипта, в переменную `authToken`
4. Откройте приватную беседу или чат на каком-либо сервере, где вам надо удалить сообщения
5. Запустите скрипт из консоли разработчика
6. Скрипт начнёт удалять сообщения и будет оповещать вас о своей работе
## Подробная инструкция
### Вставьте код скрипта в "блокнот"
1. Откройте самый обычный блокнот, который есть на любой Windows машине, тот самый, который notepad.exe
1. Вернитесь в начало данной инструкции, кликните по строке "исходный код скрипта"
1. Вы увидите длинный код. Он нужен нам весь, от начала и до конца. Выделите и скопируйте его
1. Вставьте этот код в блокнот
### Подключите свой токен авторизации
1. Откройте Discord в браузере Google Chrome
1. Авторизуйтесь в Discord под своим логином и паролем
1. Откройте консоль разработчика в браузере (горячие клавиши: F12, Ctrl+Shift+J)
1. Откройте вкладку `Application`
1. В левой панели найдите надпись "Local Storage", нажмите на треугольник слева от неё
1. Панель развернёт список из нескольких элементов, выберите `https://discordapp.com`
1. Вам отобразят таблицу с различными данными, найдите среди них строку `token` (на момент написания этой инструкции, эта строка была последней в таблице)
1. Скопируйте код во второй колонке таблицы, это токен безопасности, который нужен для выполнения действий от вашего лица.
1. Откройте блокнот с кодом скрипта
1. Замените в коде первую строку `var authToken = '_____________________________________'` на `var authToken = '{токен-безопасности-который-вы-скопировали-из-localStorage}'`.
То есть, мы изменяем одну строку скрипта, самую первую. Это установка переменной `authToken`,
она должна иметь значение вашего токена авторизации, который вы скопировали, чтобы скрипт смог работать.
В итоге, у вас должно получиться что-то вроде этого:
```js
var authToken = "MJEUWEJJNJWEYDE.CJASYE.JJNWNJWDYSJAKKJWNSY"
if (typeof(blockedAuthors) === 'undefined') {
var blockedAuthors = []
}
// и далее продолжение кода скрипта...
- Откройте в Discord приватную беседу или чат на каком-либо сервере, где вам надо удалить сообщения
- Скопируйте скрипт из своего блокнота со своим токеном авторизации
- Снова откройте консоль разработчика в браузере на вкладке с Discord
- Откройте вкладку
Console
- Там будут отображаться различные предупреждения, всё так и должно быть
- Прокрутите в самый низ, там будет строка ввода команд
- Вставьте туда весь код своего скрипта и нажмите
Enter
- Скрипт начнёт удалять сообщения и будет оповещать вас о своей работе
Great script, but this will only delete 100 messages. If I run the script a second time it will not delete more than 100 messages.