Skip to content

Instantly share code, notes, and snippets.

@guicaulada
Last active December 24, 2020 01:08
Show Gist options
  • Select an option

  • Save guicaulada/c093c7c0a5364f4150c2d2003f1e7579 to your computer and use it in GitHub Desktop.

Select an option

Save guicaulada/c093c7c0a5364f4150c2d2003f1e7579 to your computer and use it in GitHub Desktop.
Discord Console Functions
// Use CTRL + SHIFT + I to open Discord Developer Console
let _$$ = $$ // Setup jQuery
// Forever utilities
let forevers = {}
let startForever = async (id, f, t) => {
f()
forevers[id] = setTimeout(() => startForever(id, f, t), t)
}
let stopForever = id => {
clearTimeout(forevers[id])
delete forevers[id]
}
// Verify message group username
let verifyUsername = (username, message, index, messages) => {
if (!username) return true;
while(index >= 0 && !messages[index].attributes.class.value.includes('groupStart-')) {
index -= 1
}
return messages[index].textContent.startsWith(username)
}
// Lookup messages
let lastLookupMessages = []
let lookupMessage = async (lookup={}, interval=1000) => {
const messages = _$$('[class^="message-"]')
const lastMessage = messages.filter((m, i) =>
(!lastLookupMessages.includes(m)) &&
(!lookup.text || m.textContent.includes(lookup.text)) &&
(verifyUsername(lookup.username, m, i, messages))).pop()
if (lastMessage) {
lastLookupMessages.push(lastMessage)
return lastMessage.textContent
} else {
throw Error("Message not found!")
}
}
// Lookup reactions
let lastLookupReactions = []
let lookupReaction = async (lookup={}, interval=1000) => {
const messages = _$$('[class^="message-"]')
const reactions = _$$('[class^="reactionInner-"]')
const lastReaction = reactions.filter(e =>
(!lastLookupReactions.includes(e)) &&
(!lookup.emote || e.outerHTML.includes(lookup.emote))).pop()
const lastMessage = messages.filter((m, i) =>
(!lookup.text || m.textContent.includes(lookup.text)) &&
(verifyUsername(lookup.username, m, i, messages)) &&
m.querySelector('[class^="reactionInner-"]') == lastReaction).pop()
if (lastReaction && lastMessage) {
lastLookupReactions.push(lastReaction)
return lastReaction
} else {
throw Error("Reaction not found!")
}
}
// Get the REMOVED information from the Network tab on the "messages" request
// Also... the referrer number might change.. to be honest I didn't figure out what that is
let sendMessage = (channel, content) => {
return fetch(`https://discord.com/api/v8/channels/${channel}/messages`, {
"headers": {
"accept": "*/*",
"accept-language": "en-US",
"authorization": "REMOVED",
"content-type": "application/json",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-super-properties": "REMOVED"
},
"referrer": `https://discord.com/channels/757958131618676897/${channel}`,
"referrerPolicy": "no-referrer-when-downgrade",
"body": `{"content":"${content}","tts":false}`,
"method": "POST",
"mode": "cors",
"credentials": "include"
});
}
// Example of message lookup
startForever("send", () => lookupMessage({text: "text to lookup", username: "Username"}).then(() => sendMessage("785989864826863617", "text to send")).catch(() => {}), 1000)
startForever("smile", () => lookupReaction({emote: "😊", username: "Username"}).then((e) => e.click()).catch(() => {}), 1000)
// Use to clear interval
stopForever("send")
stopForever("smile")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment