Skip to content

Commit f941cbd

Browse files
committed
First commit.
0 parents  commit f941cbd

File tree

6 files changed

+227
-0
lines changed

6 files changed

+227
-0
lines changed

Group Chat Spammer/main.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import selfcord as discord
2+
from selfcord.ext import commands
3+
import sys
4+
bot = commands.Bot(command_prefix=";;;", self_bot=True)
5+
6+
def process_data():
7+
data = ['','','','']
8+
data[0] = sys.argv[1] #token
9+
data[1] = int(sys.argv[2]) #chatroom/ID
10+
data[2] = sys.argv[3] #messsage
11+
data[3] = int(sys.argv[4]) #repeat
12+
return data
13+
14+
# attack!
15+
@bot.event
16+
async def on_ready():
17+
print("Bot initialised.")
18+
19+
@bot.event
20+
async def on_message(message):
21+
data = process_data()
22+
if message.author.id == bot.user.id and message.content == "start":
23+
chatroom = bot.get_channel(data[1])
24+
for member in chatroom.recipients:
25+
if member.id == bot.user.id:
26+
pass
27+
else:
28+
index = 0
29+
try:
30+
while index < data[3]:
31+
await member.send(data[2])
32+
print(f"Sent message to {member.name}. Repetition {index}")
33+
index += 1
34+
except: #Usually meaning the account has been deleted, could also be rate limitation, but selfcord would send the warning in that case.
35+
pass
36+
print("JOB COMPLETE!")
37+
38+
else:
39+
return
40+
41+
42+
43+
bot.run(token=process_data()[0])

Server Leaver/main.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import selfcord as discord
2+
from selfcord.ext import commands
3+
import asyncio
4+
import sys
5+
import sys
6+
bot = commands.Bot(command_prefix=";;;", self_bot=True)
7+
8+
9+
TOKEN = sys.argv[1]
10+
11+
12+
# attack!
13+
@bot.event
14+
async def on_ready():
15+
game = discord.Game("with the API")
16+
await bot.change_presence(activity=game)
17+
18+
print("Bot initialised. Beginning attack.")
19+
20+
index = 0
21+
22+
# async for message in channel.history(limit=None):
23+
# if message.author == bot.user:
24+
# await message.delete()
25+
# await asyncio.sleep(0.7) #Must avoid rate limiting.
26+
# print("-1")
27+
print(len(bot.guilds))
28+
for server in bot.guilds:
29+
try:
30+
await server.leave()
31+
index += 1
32+
print(index)
33+
asyncio.sleep(3)
34+
except:
35+
pass
36+
37+
38+
print("JOB COMPLETE!")
39+
await bot.close()
40+
41+
42+
bot.run(token=TOKEN)

Unfriender/main.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import selfcord as discord
2+
from selfcord.ext import commands
3+
import asyncio
4+
import sys
5+
6+
bot = commands.Bot(command_prefix=";;;", self_bot=True)
7+
8+
9+
TOKEN = sys.argv[1] #token
10+
11+
12+
# attack!
13+
@bot.event
14+
async def on_ready():
15+
index = 1
16+
game = discord.Game("with the API")
17+
await bot.change_presence(activity=game)
18+
print("Bot initialised. Beginning attack.")
19+
original_friends = len(bot.friends)
20+
for relationship in bot.friends:
21+
try:
22+
await relationship.delete()
23+
print(f"-1 Removed")
24+
index += 1
25+
except:
26+
print(f"IGNORING EXCEPTION WITH USER")
27+
pass
28+
29+
print(f"JOB COMPLETE! {index} users have been removed from the friend list, {original_friends} originally!")
30+
await bot.close()
31+
32+
33+
bot.run(token=TOKEN)
34+
print("BOT CLOSED.")

User Spammer/main.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import selfcord as discord
2+
from selfcord.ext import commands
3+
import asyncio
4+
import sys
5+
bot = commands.Bot(command_prefix=";;;", self_bot=True)
6+
7+
8+
TOKEN = sys.argv[1] #token
9+
ID = int(sys.argv[2])
10+
MESSAGE = sys.argv[3] #messsage
11+
REPETITION = int(sys.argv[4]) #repeat
12+
13+
14+
# attack!
15+
@bot.event
16+
async def on_ready():
17+
game = discord.Game("with the API")
18+
await bot.change_presence(activity=game)
19+
20+
print("Bot initialised. Beginning attack.")
21+
user = bot.get_user(ID)
22+
channel = user.create_dm() #KIM:1142851870130446478
23+
24+
index = 0
25+
26+
# async for message in channel.history(limit=None):
27+
# if message.author == bot.user:
28+
# await message.delete()
29+
# await asyncio.sleep(0.7) #Must avoid rate limiting.
30+
# print("-1")
31+
32+
while index != REPETITION:
33+
await asyncio.sleep(1.5)
34+
await channel.send(MESSAGE)
35+
index += 1
36+
37+
print("JOB COMPLETE!")
38+
await bot.close()
39+
print("BOT CLOSED.")
40+
41+
42+
bot.run(token=TOKEN)

default_info.txt

Whitespace-only changes.

launcher.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import easygui as easy
2+
import os
3+
import subprocess
4+
5+
DATA = {
6+
'TOKEN': None,
7+
'PRIMARY ID':'0', #usually the user/server ID
8+
'CONTENT':'0',
9+
'REPEAT':'0'
10+
}
11+
12+
#key: script. value: req args.
13+
#current args: Token, Target ID(user/group/guild), Message, Repeat Times. IN THAT ORDER.
14+
choices = {
15+
'Group Chat Spammer':['Token','Target ID','Message','Repeat Times'],
16+
'Server Leaver':['Token'],
17+
'Unfriender':['Token'],
18+
'User Spammer':['Token','Target ID','Message','Repeat Times']
19+
}
20+
21+
def token_prompt():
22+
if os.path.exists('default_info.txt') and open('default_info.txt','r').readline() != None:
23+
if easy.choicebox("Use default token?",choices=["Yes","No"]) == 'Yes':
24+
DATA['TOKEN'] = open("default_info.txt", 'r').readline()
25+
return
26+
27+
token_prompt = easy.enterbox("Please enter your account token.",'Token needed.')
28+
if len(token_prompt) < 10:
29+
easy.msgbox("That appears to be an invalid token. Consult youtube if you do not know to extract your token properly.")
30+
else:
31+
DATA['TOKEN'] = token_prompt
32+
33+
def select_script_and_data():
34+
script = easy.choicebox("Which script would you like to activate?", choices=choices)
35+
print(script)
36+
script_requirements = choices[script]
37+
print(script_requirements)
38+
for requirement in script_requirements:
39+
match requirement:
40+
case 'Token':
41+
pass
42+
case 'Target ID':
43+
DATA['PRIMARY ID'] = str(easy.enterbox("Please fill requirement: Target ID"))
44+
case 'Message':
45+
DATA['CONTENT'] = str(easy.enterbox(r"What message should I send? Note: You can use special character \n to denote new lines."))
46+
case 'Repeat Times':
47+
DATA['REPEAT'] = str(easy.enterbox(r"How many times should the message be send?"))
48+
case _:
49+
pass
50+
51+
return script
52+
53+
def exec_script(script):
54+
file_path = f"{script}/main.py"
55+
creationflags = subprocess.CREATE_NEW_CONSOLE
56+
subprocess.Popen(["python", file_path, DATA['TOKEN'], DATA['PRIMARY ID'], DATA['CONTENT'], DATA['REPEAT']], creationflags=creationflags)
57+
def launcher():
58+
while DATA['TOKEN'] == None:
59+
token_prompt()
60+
script = select_script_and_data()
61+
exec_script(script)
62+
63+
running = True
64+
while running == True:
65+
launcher()
66+
running = False if easy.buttonbox("Script has been launched in a new shell window, and will work in the background. Exit Launcher, or continue to menu?",choices=['Exit','Continue']) == 'Exit' else True

0 commit comments

Comments
 (0)