Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
V4NSH4J
GitHub Repository: V4NSH4J/discord-mass-DM-GO
Path: blob/main/discord/friend_spammer.go
310 views
1
package discord
2
3
import (
4
"regexp"
5
"strconv"
6
"strings"
7
"sync"
8
"time"
9
10
"github.com/V4NSH4J/discord-mass-dm-GO/instance"
11
"github.com/V4NSH4J/discord-mass-dm-GO/utilities"
12
)
13
14
func LaunchFriendSpammer() {
15
utilities.PrintMenu([]string{"Send Friend Requests", "Send DMs to friends", "Check Status of Friends"})
16
choice := utilities.UserInputInteger("Enter your choice!")
17
switch choice {
18
default:
19
utilities.LogErr("Invalid choice!")
20
LaunchFriendSpammer()
21
case 1:
22
utilities.LogInfo("Enter people to be friended in memberids.txt in format username#discriminator (All scrapers make such a file in logs folder if enabled)")
23
_, instances, err := instance.GetEverything()
24
if err != nil {
25
utilities.LogErr(err.Error())
26
LaunchFriendSpammer()
27
}
28
friends, err := utilities.ReadLines("memberids.txt")
29
if err != nil {
30
utilities.LogErr(err.Error())
31
LaunchFriendSpammer()
32
}
33
var toBeFriended []FriendsInfo
34
r := regexp.MustCompile(`%s#%s`)
35
for _, friend := range friends {
36
if r.MatchString(friend) {
37
x := strings.Split(friend, "#")
38
toBeFriended = append(toBeFriended, FriendsInfo{
39
Username: x[0],
40
Discrim: x[1],
41
})
42
}
43
}
44
utilities.LogInfo("%d friends to be friended", len(toBeFriended))
45
var friendChan chan FriendsInfo = make(chan FriendsInfo, len(toBeFriended))
46
for i := 0; i < len(toBeFriended); i++ {
47
go func(i int) {
48
friendChan <- toBeFriended[i]
49
}(i)
50
}
51
var success int
52
delay := utilities.UserInputInteger("Enter delay between requests (in seconds)")
53
var wg sync.WaitGroup
54
for i := 0; i < len(instances); i++ {
55
wg.Add(1)
56
go func(i int) {
57
defer wg.Done()
58
for {
59
if len(friendChan) == 0 {
60
break
61
}
62
friend := <-friendChan
63
discrimInt, err := strconv.Atoi(friend.Discrim)
64
if err != nil {
65
utilities.LogErr(" Error %s while converting Discrim %s to an integer", err, friend.Discrim)
66
continue
67
}
68
resp, err := instances[i].Friend(friend.Username, discrimInt)
69
if err != nil {
70
utilities.LogErr("Token %s Error %s while friending %s#%s", instances[i].CensorToken(), err, friend.Username, friend.Discrim)
71
time.Sleep(time.Duration(delay) * time.Second)
72
continue
73
}
74
if resp.StatusCode == 200 || resp.StatusCode == 204 {
75
utilities.LogInfo("Token %s Successfully friended %s#%s", instances[i].CensorToken(), friend.Username, friend.Discrim)
76
success++
77
} else {
78
utilities.LogFailed("Token %s Invalid Status Code %s while friending %s#%s", instances[i].CensorToken(), resp.Status, friend.Username, friend.Discrim)
79
}
80
resp.Body.Close()
81
time.Sleep(time.Duration(delay) * time.Second)
82
}
83
84
}(i)
85
}
86
wg.Wait()
87
utilities.LogInfo("%d friends friended!", success)
88
case 2:
89
utilities.LogInfo("This will check tokens which have friends and send them DMs")
90
_, instances, err := instance.GetEverything()
91
if err != nil {
92
utilities.LogErr(err.Error())
93
LaunchFriendSpammer()
94
}
95
delay := utilities.UserInputInteger("Enter delay between messages (in seconds)")
96
var wg sync.WaitGroup
97
for i := 0; i < len(instances); i++ {
98
wg.Add(1)
99
go func(i int) {
100
defer wg.Done()
101
r, friendCount, blockedCount, incomingCount, outgoingCount, ids, err := instances[i].Relationships()
102
if err != nil {
103
utilities.LogErr("Token %s Error %s while getting relationships", instances[i].CensorToken(), err)
104
return
105
}
106
if r != 200 && r != 204 {
107
utilities.LogFailed("Token %s Invalid Status Code %s while getting relationships", instances[i].CensorToken(), r)
108
return
109
}
110
utilities.LogSuccess("Token %s [%d friends, %d blocked, %d incoming requests, %d pending friends]", instances[i].CensorToken(), friendCount, blockedCount, incomingCount, outgoingCount)
111
for x := 0; x < len(ids); x++ {
112
if x != 1 {
113
// Not a friend
114
continue
115
}
116
snowflake, err := instances[i].OpenChannel(ids[x].ID)
117
if err != nil {
118
utilities.LogErr("Token %s Error %s while opening channel %s", instances[i].CensorToken(), err, ids[x].ID)
119
continue
120
}
121
r, bytes, err := instances[i].SendMessage(snowflake, ids[x].ID)
122
if err != nil {
123
utilities.LogErr("Token %s Error %s while sending message to %s", instances[i].CensorToken(), err, ids[x].ID)
124
continue
125
}
126
if r != 200 && r != 204 {
127
utilities.LogFailed("Token %s Invalid Status Code %s while sending message to %s [%s]", instances[i].CensorToken(), r, ids[x].ID, string(bytes))
128
continue
129
}
130
utilities.LogSuccess("Token %s Successfully sent message to %s", instances[i].CensorToken(), ids[x].ID)
131
time.Sleep(time.Duration(delay) * time.Second)
132
}
133
134
}(i)
135
}
136
wg.Wait()
137
utilities.LogInfo("All Completed!")
138
139
case 3:
140
utilities.LogInfo("This will check tokens which have friends")
141
_, instances, err := instance.GetEverything()
142
if err != nil {
143
utilities.LogErr(err.Error())
144
LaunchFriendSpammer()
145
}
146
var wg sync.WaitGroup
147
for i := 0; i < len(instances); i++ {
148
wg.Add(1)
149
go func(i int) {
150
defer wg.Done()
151
r, friendCount, blockedCount, incomingCount, outgoingCount, _, err := instances[i].Relationships()
152
if err != nil {
153
utilities.LogErr("Token %s Error %s while getting relationships", instances[i].CensorToken(), err)
154
return
155
}
156
if r != 200 && r != 204 {
157
utilities.LogFailed("Token %s Invalid Status Code %s while getting relationships", instances[i].CensorToken(), r)
158
return
159
}
160
utilities.LogSuccess("Token %s [%d friends, %d blocked, %d incoming requests, %d pending friends]", instances[i].CensorToken(), friendCount, blockedCount, incomingCount, outgoingCount)
161
162
}(i)
163
}
164
wg.Wait()
165
utilities.LogInfo("All Completed!")
166
167
}
168
169
}
170
171
type FriendsInfo struct {
172
Username string
173
Discrim string
174
}
175
176