Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
V4NSH4J
GitHub Repository: V4NSH4J/discord-mass-DM-GO
Path: blob/main/discord/token_nuker.go
310 views
1
// Copyright (C) 2021 github.com/V4NSH4J
2
//
3
// This source code has been released under the GNU Affero General Public
4
// License v3.0. A copy of this license is available at
5
// https://www.gnu.org/licenses/agpl-3.0.en.html
6
7
package discord
8
9
import (
10
"time"
11
12
"github.com/V4NSH4J/discord-mass-dm-GO/instance"
13
"github.com/V4NSH4J/discord-mass-dm-GO/utilities"
14
"github.com/zenthangplus/goccm"
15
)
16
17
func LaunchTokenNuker() {
18
_, instances, err := instance.GetEverything()
19
if err != nil {
20
utilities.LogErr("Error while getting necessary data: %v", err)
21
utilities.ExitSafely()
22
}
23
threads := utilities.UserInputInteger("Enter the number of threads: (0 for Maximum)")
24
if threads > len(instances) {
25
threads = len(instances)
26
}
27
if threads == 0 {
28
threads = len(instances)
29
}
30
delay := utilities.UserInputInteger("Enter the delay between each request: (0 for No Delay)")
31
c := goccm.New(threads)
32
for i := 0; i < len(instances); i++ {
33
c.Wait()
34
go func(i int) {
35
defer c.Done()
36
// Getting all guilds
37
func(i int) {
38
respCode, _, guilds, err := instances[i].Guilds()
39
if err != nil {
40
utilities.LogFailed("Instance %v Error while getting guilds: %s", instances[i].Token, err)
41
return
42
}
43
if respCode != 200 {
44
utilities.LogFailed("Instance %v Invalid Status Code while getting guilds: %s", instances[i].Token, respCode)
45
return
46
}
47
// Nuking all guilds
48
for j := 0; j < len(guilds); j++ {
49
p := instances[i].Leave(guilds[j])
50
if p == 0 {
51
utilities.LogFailed("Instance %v Error while leaving %v", instances[i].Token, guilds[j])
52
}
53
if p == 200 || p == 204 {
54
utilities.LogSuccess("%v Left server %v", instances[i].CensorToken(), guilds[j])
55
if delay > 0 {
56
time.Sleep(time.Duration(delay) * time.Millisecond)
57
}
58
} else {
59
utilities.LogFailed("%v Error while leaving - Invalid status code %v", instances[i].CensorToken(), p)
60
}
61
}
62
utilities.LogSuccess("Instance %v no servers left", instances[i].CensorToken())
63
}(i)
64
65
// Getting all channels (DMs, GCs, etc)
66
func(i int) {
67
respCode, _, channels, err := instances[i].Channels()
68
if err != nil {
69
utilities.LogFailed("Instance %v Error while getting channels: %s", instances[i].Token, err)
70
return
71
}
72
if respCode != 200 {
73
utilities.LogFailed("Instance %v Invalid Status Code while getting channels: %s", instances[i].Token, respCode)
74
return
75
}
76
// Nuking all channels
77
for j := 0; j < len(channels); j++ {
78
p, err := instances[i].CloseDMS(channels[j].ID)
79
if p == -1 {
80
utilities.LogFailed("Instance %v Error %v while closing %v", instances[i].Token, err, channels[j])
81
continue
82
}
83
if p == 204 {
84
if channels[j].Type == 1 {
85
utilities.LogSuccess("%v Closed DM %v", instances[i].CensorToken(), channels[j])
86
} else if channels[j].Type == 3 {
87
utilities.LogSuccess("%v Closed Group DM %v", instances[i].CensorToken(), channels[j])
88
} else {
89
utilities.LogSuccess("%v Closed Channel %v", instances[i].CensorToken(), channels[j])
90
}
91
if delay > 0 {
92
time.Sleep(time.Duration(delay) * time.Millisecond)
93
}
94
} else {
95
utilities.LogFailed("%v Error while closing - Invalid status code %v", instances[i].CensorToken(), p)
96
}
97
utilities.LogSuccess("Instance %v no channels left", instances[i].CensorToken())
98
}
99
}(i)
100
// Getting all Blocked, Pending, and Friends
101
func(i int) {
102
respCode, _, _, _, _, relations, err := instances[i].Relationships()
103
if err != nil {
104
utilities.LogFailed("Instance %v Error while getting relationships: %s", instances[i].Token, err)
105
return
106
}
107
if respCode != 200 {
108
utilities.LogFailed("Instance %v Invalid Status Code while getting relationships: %s", instances[i].Token, respCode)
109
return
110
}
111
// Nuking all relationships
112
for j := 0; j < len(relations); j++ {
113
p, err := instances[i].EndRelation(relations[j].ID)
114
if p == -1 {
115
utilities.LogFailed("Instance %v Error %v while ending %v", instances[i].Token, err, relations[j])
116
return
117
}
118
if p == 204 {
119
utilities.LogSuccess("%v Ended relationship %v", instances[i].CensorToken(), relations[j])
120
if delay > 0 {
121
time.Sleep(time.Duration(delay) * time.Millisecond)
122
}
123
} else {
124
utilities.LogFailed("%v Error while ending relationship - Invalid status code %v", instances[i].CensorToken(), p)
125
}
126
127
}
128
utilities.LogSuccess("Instance %v no relationships left", instances[i].CensorToken())
129
}(i)
130
utilities.LogSuccess("Instance %v nuked", instances[i].CensorToken())
131
}(i)
132
}
133
c.WaitAllDone()
134
}
135
136