Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
V4NSH4J
GitHub Repository: V4NSH4J/discord-mass-DM-GO
Path: blob/main/discord/profile_changer.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
"fmt"
11
"math/rand"
12
"os"
13
"os/exec"
14
"path"
15
"path/filepath"
16
17
"github.com/V4NSH4J/discord-mass-dm-GO/instance"
18
"github.com/V4NSH4J/discord-mass-dm-GO/utilities"
19
"github.com/zenthangplus/goccm"
20
)
21
22
func LaunchNameChanger() {
23
_, instances, err := instance.GetEverything()
24
if err != nil {
25
utilities.LogErr("Error while getting config or instances %v", err)
26
}
27
var TotalCount, SuccessCount, FailedCount int
28
title := make(chan bool)
29
go func() {
30
Out:
31
for {
32
select {
33
case <-title:
34
break Out
35
default:
36
cmd := exec.Command("cmd", "/C", "title", fmt.Sprintf(`DMDGO [%v Success, %v Failed, %v Unprocessed]`, SuccessCount, FailedCount, TotalCount-SuccessCount-FailedCount))
37
_ = cmd.Run()
38
}
39
40
}
41
}()
42
for i := 0; i < len(instances); i++ {
43
if instances[i].Password == "" {
44
utilities.LogWarn("Token %v does not have password set. Name changer requires token in format email:password:token", instances[i].CensorToken())
45
continue
46
}
47
}
48
utilities.LogWarn("Usernames are changed randomly from file.")
49
users, err := utilities.ReadLines("names.txt")
50
if err != nil {
51
utilities.LogErr("Error while reading names.txt: %v", err)
52
return
53
}
54
if len(users) == 0 {
55
utilities.LogErr("names.txt is empty")
56
return
57
}
58
threads := utilities.UserInputInteger("Enter number of threads (0 for maximum):")
59
if threads > len(instances) || threads == 0 {
60
threads = len(instances)
61
}
62
TotalCount = len(instances)
63
c := goccm.New(threads)
64
for i := 0; i < len(instances); i++ {
65
c.Wait()
66
go func(i int) {
67
err := instances[i].StartWS()
68
if err != nil {
69
utilities.LogErr("Token %v Error while opening websocket %v", instances[i].CensorToken(), err)
70
} else {
71
utilities.LogSuccess("Token %v websocket open", instances[i].CensorToken())
72
}
73
r, err := instances[i].NameChanger(users[rand.Intn(len(users))])
74
if err != nil {
75
utilities.LogErr("Token %v Error while changing name: %v", instances[i].CensorToken(), err)
76
FailedCount++
77
return
78
}
79
body, err := utilities.ReadBody(r)
80
if err != nil {
81
utilities.LogErr("Token %v Error while reading body: %v", instances[i].CensorToken(), err)
82
FailedCount++
83
return
84
}
85
if r.StatusCode == 200 || r.StatusCode == 204 {
86
utilities.LogSuccess("Token %v Name changed successfully", instances[i].CensorToken())
87
SuccessCount++
88
} else {
89
utilities.LogFailed("Token %v Error while changing name: %v %v", instances[i].CensorToken(), r.Status, string(body))
90
FailedCount++
91
}
92
if instances[i].Ws != nil {
93
if instances[i].Ws.Conn != nil {
94
err = instances[i].Ws.Close()
95
if err != nil {
96
utilities.LogFailed("Token %v Error while closing websocket: %v", instances[i].CensorToken(), err)
97
} else {
98
utilities.LogSuccess("Token %v websocket closed", instances[i].CensorToken())
99
}
100
c.Done()
101
}
102
}
103
}(i)
104
}
105
c.WaitAllDone()
106
title <- true
107
utilities.LogSuccess("Name changer finished")
108
109
}
110
111
func LaunchAvatarChanger() {
112
_, instances, err := instance.GetEverything()
113
if err != nil {
114
utilities.LogErr("Error while getting config or instances %v", err)
115
}
116
var TotalCount, SuccessCount, FailedCount int
117
title := make(chan bool)
118
go func() {
119
Out:
120
for {
121
select {
122
case <-title:
123
break Out
124
default:
125
cmd := exec.Command("cmd", "/C", "title", fmt.Sprintf(`DMDGO [%v Success, %v Failed, %v Unprocessed]`, SuccessCount, FailedCount, TotalCount-SuccessCount-FailedCount))
126
_ = cmd.Run()
127
}
128
129
}
130
}()
131
utilities.LogWarn("NOTE: Only PNG and JPEG/JPG supported. Profile Pictures are changed randomly from the folder. Use PNG format for faster results.")
132
utilities.LogInfo("Loading Avatars..")
133
ex, err := os.Executable()
134
if err != nil {
135
utilities.LogErr("Error while getting executable path: %v", err)
136
utilities.ExitSafely()
137
}
138
ex = filepath.ToSlash(ex)
139
path := path.Join(path.Dir(ex) + "/input/pfps")
140
141
images, err := instance.GetFiles(path)
142
if err != nil {
143
utilities.LogErr("Error while getting files from %v: %v", path, err)
144
utilities.ExitSafely()
145
}
146
utilities.LogInfo("%v files loaded", len(images))
147
var avatars []string
148
149
for i := 0; i < len(images); i++ {
150
av, err := instance.EncodeImg(images[i])
151
if err != nil {
152
utilities.LogErr("Error while encoding image %v: %v", images[i], err)
153
continue
154
}
155
avatars = append(avatars, av)
156
}
157
utilities.LogInfo("%v avatars loaded", len(avatars))
158
threads := utilities.UserInputInteger("Enter number of threads (0 for maximum):")
159
if threads > len(instances) || threads == 0 {
160
threads = len(instances)
161
}
162
TotalCount = len(instances)
163
c := goccm.New(threads)
164
for i := 0; i < len(instances); i++ {
165
c.Wait()
166
go func(i int) {
167
err := instances[i].StartWS()
168
if err != nil {
169
utilities.LogFailed("Token %v Error while opening websocket", instances[i].CensorToken())
170
} else {
171
utilities.LogSuccess("Websocket opened %v", instances[i].CensorToken())
172
}
173
r, err := instances[i].AvatarChanger(avatars[rand.Intn(len(avatars))])
174
if err != nil {
175
utilities.LogFailed("Token %v Error while changing avatar: %v", instances[i].CensorToken(), err)
176
FailedCount++
177
} else {
178
if r.StatusCode == 204 || r.StatusCode == 200 {
179
utilities.LogSuccess("Token %v Avatar changed successfully", instances[i].CensorToken())
180
SuccessCount++
181
} else {
182
utilities.LogFailed("Token %v Error while changing avatar: %v", instances[i].CensorToken(), r.StatusCode)
183
FailedCount++
184
}
185
}
186
if instances[i].Ws != nil {
187
if instances[i].Ws.Conn != nil {
188
err = instances[i].Ws.Close()
189
if err != nil {
190
utilities.LogFailed("Token %v Error while closing websocket: %v", instances[i].CensorToken(), err)
191
} else {
192
utilities.LogSuccess("Token %v websocket closed", instances[i].CensorToken())
193
}
194
c.Done()
195
}
196
}
197
198
}(i)
199
}
200
c.WaitAllDone()
201
title <- true
202
utilities.LogSuccess("Avatar changer finished")
203
}
204
205
func LaunchBioChanger() {
206
bios, err := utilities.ReadLines("bios.txt")
207
if err != nil {
208
utilities.LogErr("Error while reading bios.txt: %v", err)
209
utilities.ExitSafely()
210
}
211
_, instances, err := instance.GetEverything()
212
if err != nil {
213
utilities.LogErr("Error while getting config or instances %v", err)
214
utilities.ExitSafely()
215
}
216
var TotalCount, SuccessCount, FailedCount int
217
title := make(chan bool)
218
go func() {
219
Out:
220
for {
221
select {
222
case <-title:
223
break Out
224
default:
225
cmd := exec.Command("cmd", "/C", "title", fmt.Sprintf(`DMDGO [%v Success, %v Failed, %v Unprocessed]`, SuccessCount, FailedCount, TotalCount-SuccessCount-FailedCount))
226
_ = cmd.Run()
227
}
228
229
}
230
}()
231
bios = instance.ValidateBios(bios)
232
utilities.LogInfo("Loaded %v bios, %v instances", len(bios), len(instances))
233
threads := utilities.UserInputInteger("Enter number of threads (0 for maximum):")
234
if threads > len(instances) || threads == 0 {
235
threads = len(instances)
236
}
237
TotalCount = len(instances)
238
c := goccm.New(threads)
239
for i := 0; i < len(instances); i++ {
240
c.Wait()
241
go func(i int) {
242
err := instances[i].StartWS()
243
if err != nil {
244
utilities.LogFailed("Token %v Error while opening websocket", instances[i].CensorToken())
245
} else {
246
utilities.LogSuccess("Token %v Websocket opened", instances[i].CensorToken())
247
}
248
err = instances[i].BioChanger(bios)
249
if err != nil {
250
utilities.LogFailed("%v Error while changing bio: %v", instances[i].CensorToken(), err)
251
FailedCount++
252
} else {
253
utilities.LogSuccess("%v Bio changed successfully", instances[i].CensorToken())
254
SuccessCount++
255
}
256
if instances[i].Ws != nil {
257
if instances[i].Ws.Conn != nil {
258
err = instances[i].Ws.Close()
259
if err != nil {
260
utilities.LogFailed("Token %v Error while closing websocket: %v", instances[i].CensorToken(), err)
261
} else {
262
utilities.LogSuccess("Token %v Websocket closed", instances[i].CensorToken())
263
}
264
c.Done()
265
}
266
}
267
}(i)
268
}
269
title <- true
270
c.WaitAllDone()
271
utilities.LogSuccess("Bio changer finished")
272
}
273
274
func LaunchHypeSquadChanger() {
275
_, instances, err := instance.GetEverything()
276
if err != nil {
277
utilities.LogErr("Error while getting config or instances %v", err)
278
utilities.ExitSafely()
279
}
280
var TotalCount, SuccessCount, FailedCount int
281
title := make(chan bool)
282
go func() {
283
Out:
284
for {
285
select {
286
case <-title:
287
break Out
288
default:
289
cmd := exec.Command("cmd", "/C", "title", fmt.Sprintf(`DMDGO [%v Success, %v Failed, %v Unprocessed]`, SuccessCount, FailedCount, TotalCount-SuccessCount-FailedCount))
290
_ = cmd.Run()
291
}
292
293
}
294
}()
295
threads := utilities.UserInputInteger("Enter number of threads (0 for maximum):")
296
if threads > len(instances) || threads == 0 {
297
threads = len(instances)
298
}
299
TotalCount = len(instances)
300
c := goccm.New(threads)
301
for i := 0; i < len(instances); i++ {
302
c.Wait()
303
go func(i int) {
304
err := instances[i].RandomHypeSquadChanger()
305
if err != nil {
306
utilities.LogFailed("Token %v Error while changing hype squad: %v", instances[i].CensorToken(), err)
307
FailedCount++
308
} else {
309
utilities.LogSuccess("Token %v Hype squad changed successfully", instances[i].CensorToken())
310
SuccessCount++
311
}
312
c.Done()
313
}(i)
314
}
315
title <- true
316
c.WaitAllDone()
317
utilities.LogSuccess("Hype squad changer finished")
318
}
319
320
func LaunchTokenChanger() {
321
322
_, instances, err := instance.GetEverything()
323
if err != nil {
324
utilities.LogErr("Error while getting config or instances %v", err)
325
}
326
var TotalCount, SuccessCount, FailedCount int
327
title := make(chan bool)
328
go func() {
329
Out:
330
for {
331
select {
332
case <-title:
333
break Out
334
default:
335
cmd := exec.Command("cmd", "/C", "title", fmt.Sprintf(`DMDGO [%v Changed, %v Failed, %v Unprocessed]`, SuccessCount, FailedCount, TotalCount-SuccessCount-FailedCount))
336
_ = cmd.Run()
337
}
338
339
}
340
}()
341
for i := 0; i < len(instances); i++ {
342
if instances[i].Password == "" {
343
utilities.LogWarn("%v No password set. It may be wrongly formatted. Only supported format is email:pass:token", instances[i].CensorToken())
344
continue
345
}
346
}
347
mode := utilities.UserInputInteger("Enter 0 to change passwords randomly and 1 to change them to a constant input")
348
349
if mode != 0 && mode != 1 {
350
utilities.LogErr("Invalid mode")
351
utilities.ExitSafely()
352
}
353
var password string
354
if mode == 1 {
355
password = utilities.UserInput("Enter password to change tokens to:")
356
}
357
threads := utilities.UserInputInteger("Enter number of threads (0 for maximum):")
358
if threads > len(instances) || threads == 0 {
359
threads = len(instances)
360
}
361
TotalCount = len(instances)
362
c := goccm.New(threads)
363
for i := 0; i < len(instances); i++ {
364
c.Wait()
365
go func(i int) {
366
if password == "" {
367
password = utilities.RandStringBytes(12)
368
}
369
newToken, err := instances[i].ChangeToken(password)
370
if err != nil {
371
utilities.LogFailed("Token %v Error while changing token: %v", instances[i].CensorToken(), err)
372
FailedCount++
373
err := utilities.WriteLine("input/changed_tokens.txt", fmt.Sprintf(`%s:%s:%s`, instances[i].Email, instances[i].Password, instances[i].Token))
374
if err != nil {
375
utilities.LogErr("Error while writing to file: %v", err)
376
}
377
} else {
378
utilities.LogSuccess("%v Token changed successfully", instances[i].CensorToken())
379
SuccessCount++
380
err := utilities.WriteLine("input/changed_tokens.txt", fmt.Sprintf(`%s:%s:%s`, instances[i].Email, password, newToken))
381
if err != nil {
382
utilities.LogErr("Error while writing to file: %v", err)
383
}
384
}
385
c.Done()
386
}(i)
387
}
388
c.WaitAllDone()
389
title <- true
390
utilities.LogSuccess("Token changer finished")
391
392
}
393
394
func LaunchServerNicknameChanger() {
395
_, instances, err := instance.GetEverything()
396
if err != nil {
397
utilities.LogErr("Error while getting config or instances %v", err)
398
}
399
var TotalCount, SuccessCount, FailedCount int
400
title := make(chan bool)
401
go func() {
402
Out:
403
for {
404
select {
405
case <-title:
406
break Out
407
default:
408
cmd := exec.Command("cmd", "/C", "title", fmt.Sprintf(`DMDGO [%v Success, %v Failed, %v Unprocessed]`, SuccessCount, FailedCount, TotalCount-SuccessCount-FailedCount))
409
_ = cmd.Run()
410
}
411
412
}
413
}()
414
utilities.LogWarn("NOTE: Nicknames are changed randomly from the file.")
415
nicknames, err := utilities.ReadLines("nicknames.txt")
416
if err != nil {
417
utilities.LogErr("Error while reading nicknames.txt: %v", err)
418
utilities.ExitSafely()
419
}
420
421
guildid := utilities.UserInput("Enter guild ID:")
422
423
threads := utilities.UserInputInteger("Enter number of threads (0 for maximum):")
424
if threads > len(instances) || threads == 0 {
425
threads = len(instances)
426
}
427
TotalCount = len(instances)
428
c := goccm.New(threads)
429
for i := 0; i < len(instances); i++ {
430
c.Wait()
431
go func(i int) {
432
r, err := instances[i].NickNameChanger(nicknames[rand.Intn(len(nicknames))], guildid)
433
if err != nil {
434
utilities.LogFailed("Token %v Error while changing nickname: %v", instances[i].CensorToken(), err)
435
FailedCount++
436
return
437
}
438
body, err := utilities.ReadBody(r)
439
if err != nil {
440
fmt.Println(err)
441
}
442
if r.StatusCode == 200 || r.StatusCode == 204 {
443
utilities.LogSuccess("Token %v Changed nickname successfully", instances[i].CensorToken())
444
SuccessCount++
445
} else {
446
utilities.LogFailed("Token %v Error while changing nickname: %v %v", instances[i].CensorToken(), r.Status, string(body))
447
FailedCount++
448
}
449
c.Done()
450
}(i)
451
}
452
c.WaitAllDone()
453
title <- true
454
utilities.LogSuccess("All Done")
455
456
}
457
458
func LaunchFriendRequestSpammer() {
459
_, instances, err := instance.GetEverything()
460
if err != nil {
461
utilities.LogErr("Error while getting config or instances %v", err)
462
return
463
}
464
var TotalCount, SuccessCount, FailedCount int
465
title := make(chan bool)
466
go func() {
467
Out:
468
for {
469
select {
470
case <-title:
471
break Out
472
default:
473
cmd := exec.Command("cmd", "/C", "title", fmt.Sprintf(`DMDGO [%v Success, %v Failed, %v Unprocessed]`, SuccessCount, FailedCount, TotalCount-SuccessCount-FailedCount))
474
_ = cmd.Run()
475
}
476
477
}
478
}()
479
threads := utilities.UserInputInteger("Enter number of threads (0 for maximum):")
480
if threads > len(instances) || threads == 0 {
481
threads = len(instances)
482
}
483
username := utilities.UserInput("Enter username to spam (Only Username, not Discrim):")
484
discrim := utilities.UserInputInteger("Enter discriminator to spam (Only Discrim, not Username):")
485
TotalCount = len(instances)
486
c := goccm.New(threads)
487
for i := 0; i < len(instances); i++ {
488
c.Wait()
489
go func(i int) {
490
defer c.Done()
491
r, err := instances[i].Friend(username, discrim)
492
if err != nil {
493
utilities.LogFailed("Token %v Error while sending friend request: %v", instances[i].CensorToken(), err)
494
FailedCount++
495
return
496
}
497
body, err := utilities.ReadBody(*r)
498
if err != nil {
499
utilities.LogErr("Error while reading body: %v", err)
500
FailedCount++
501
return
502
}
503
if r.StatusCode == 200 || r.StatusCode == 204 {
504
utilities.LogSuccess("Token %v Sent friend request successfully", instances[i].CensorToken())
505
SuccessCount++
506
} else {
507
utilities.LogFailed("Token %v Error while sending friend request: %v %v", instances[i].CensorToken(), r.Status, string(body))
508
FailedCount++
509
}
510
}(i)
511
}
512
c.WaitAllDone()
513
title <- true
514
utilities.LogSuccess("All Done")
515
}
516
517