forked from Its-LALOL/Discord-Selfbot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
320 lines (294 loc) · 19.3 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
# -*- coding: utf-8 -*-
version = 3.1
lencommands = 0
import os
clear = lambda: os.system(f'cls && title Selfbot {version} - {lencommands} Commands' if os.name == 'nt' else 'clear')
try:
import discord
from discord.ext import commands
from colorama import init, Fore;
init()
import requests
from plyer import notification
from googletrans import Translator
from emoji import EMOJI_DATA
from qrcode import make
except:
os.system('pip install -U discord.py-self==1.9.2 colorama requests plyer googletrans==4.0.0rc1 emoji qrcode')
import discord
from discord.ext import commands
from colorama import init, Fore;
init()
import requests
from subprocess import Popen
from time import sleep
from webbrowser import open as webopen
from threading import Thread
from datetime import datetime, timedelta
import random
import json
with open("config.json", "r", encoding="utf-8-sig") as f:
try:
config = json.load(f)
except Exception as e:
clear()
print(e)
print(Fore.LIGHTBLUE_EX + '\nОшибка конфига')
while True: sleep(9)
theme = config['GENERAL']['theme']
if theme == 'random':
theme = random.choice(['standart', 'discord', 'hacker', 'beach'])
if theme == 'standart':
color = {'Intro': Fore.RED, 'Info_name': Fore.MAGENTA, 'Info_value': Fore.YELLOW}
elif theme == 'discord':
color = {'Intro': Fore.LIGHTBLUE_EX, 'Info_name': Fore.WHITE, 'Info_value': Fore.LIGHTCYAN_EX}
elif theme == 'hacker':
color = {'Intro': Fore.LIGHTGREEN_EX, 'Info_name': Fore.GREEN, 'Info_value': Fore.WHITE}
elif theme == 'beach':
color = {'Intro': Fore.LIGHTYELLOW_EX, 'Info_name': Fore.LIGHTYELLOW_EX, 'Info_value': Fore.LIGHTCYAN_EX}
else:
clear()
print(Fore.LIGHTBLUE_EX + 'Неизвестная тема')
while True: sleep(9)
on_command_error = True
Intro = color['Intro'] + r"""
____ ___ .__
\ \/ /___.__.|__|
\ /< | || |
/ \ \___ || |
/___/\ \/ ____||__|
\_/\/
"""
lencommands = 0
clear()
print(Fore.WHITE + 'Загрузка...')
pref = config['GENERAL']['prefix']
try:
bot = commands.Bot(command_prefix=pref, case_insensitive=True, self_bot=True)
except Exception as e:
clear()
print(e)
print(Fore.LIGHTBLUE_EX + '\nНа гитхабе селфбота написано как решить эту ошибку!!!')
sleep(3)
webopen('https://github.com/PuroSlavKing/Discord-AIM-SBot', 2)
while True: sleep(9)
bot.remove_command('help')
start_time = datetime.now()
update = ''
async def check(ctx):
if not config['OTHER']['nuke_commands']:
await ctx.message.edit(
content='**:warning: Краш команды отключены! Для того чтобы включить краш команды измените файл config.json**')
return False
return True
def disco_status():
while True:
text = ''
lasttext = ''
for i in range(5):
while True:
emoji = random.choice(['🔴', '🟢', '🔵', '🟡', '🟣'])
if not emoji in text:
text += emoji
break
if text == lasttext: continue
lasttext = text
try:
requests.patch("https://discord.com/api/v9/users/@me/settings", headers={'authorization': bot.http.token},
json={'custom_status': {'text': text}})
except:
pass
sleep(5)
@bot.event
async def on_connect():
global lencommands
lencommands = len(bot.commands)
for file in ['LICENSE', 'README.md']:
try:
os.remove(file)
except:
pass
for file in os.listdir():
if file.endswith('.txt') or file.endswith('.png'):
os.remove(file)
if config['OTHER']['disco_status']: Thread(target=disco_status).start()
# status=config['GENERAL']['status']
response = requests.get('https://discord.com/api/users/@me/settings', headers={'authorization': bot.http.token})
status = response.json()['status']
sstatus = discord.Status.online
if status == 'idle':
sstatus = discord.Status.idle
elif status == 'dnd':
sstatus = discord.Status.dnd
elif status == 'invisible':
sstatus = discord.Status.invisible
await bot.change_presence(status=sstatus)
try:
channel = bot.get_channel(config['OTHER']['auto_send_channel'])
for i in config['OTHER']['auto_send_text']:
await channel.send(i)
except:
pass
clear()
print(Intro)
print(f"{color['Info_name']}Аккаунт: {color['Info_value']}{bot.user}")
print(f"{color['Info_name']}ID: {color['Info_value']}{bot.user.id}")
print(f"{color['Info_name']}Префикс: {color['Info_value']}{pref}")
print(f"{color['Info_name']}Время запуска: {color['Info_value']}{start_time.strftime('%Y-%m-%d %H:%M:%S')}")
if float(requests.get(
'https://raw.githubusercontent.com/PuroSlavKing/Discord-AIM-SBot/main/cogs/version').text) > version:
global update
update = f':warning: Пожалуйста, обновите селфбота используя команду {pref}bot**\n**'
print(
f'{Fore.CYAN}Пожалуйста, обновите селфбота используя команду {Fore.LIGHTCYAN_EX}{pref}bot{Fore.RESET}{Fore.RED}\n')
return
print(Fore.RED)
if on_command_error:
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, commands.MissingRequiredArgument):
error = ':warning: Недостаточно аргументов!'
elif isinstance(error, commands.CommandNotFound):
return
elif isinstance(error, commands.BadArgument):
error = ':warning: Указан не правильный аргумент!'
elif isinstance(error, discord.errors.Forbidden):
error = ':warning: Не достаточно прав для выполнения данной команды!'
error = str(error).replace('Command raised an exception: ', '')
print(f"{Fore.RED}[ERROR] {error}")
try:
await ctx.send(f'**:warning: Произошла ошибка :x:\n```{error}```**')
except:
pass
@bot.event
async def on_command(ctx):
time = datetime.now().strftime('%H:%M:%S')
arguments = ctx.message.content.replace(pref + ctx.invoked_with, '')
print(
f'{Fore.LIGHTWHITE_EX}[{time}] {Fore.LIGHTCYAN_EX}{pref}{ctx.invoked_with}{Fore.LIGHTGREEN_EX}{arguments}{Fore.RESET}')
@bot.event
async def on_message_edit(before, after):
await bot.process_commands(after)
@bot.command(aliases=['хелп', 'помощь'])
async def help(ctx, cat=None):
if cat == None:
await ctx.message.edit(content=(f'\n'
f'⟃⟞⟞⟞⟞⟞⟞⟞✫**⟮Разделы⟯**✫⟝⟝⟝⟝⟝⟝⟝⟝⟄\n'
f'**{pref}help tools** — полезные команды.\n'
f'**{pref}help info** — команды для получения информации.\n'
f'**{pref}help fun** — развлекательные команды.\n'
f'**{pref}help moderation** — команды модерации.\n'
f'**{pref}help image** — команды связанные с изображениями.\n'
f'**{pref}help nuke** — команды краша.\n'
f'\n'
f'⟃⟞⟞⟞⟞⟞⟞⟞✫**⟮Debug⟯**✫⟝⟝⟝⟝⟝⟝⟝⟄\n'
f'**{pref}reload** — перезагрузить бота.\n'
f'**{pref}github** — ссылка на GitHub.\n'))
return
cat = cat.lower()
if cat == 'tools':
await ctx.message.edit(content=(f'\n'
f'⟃⟞⟞⟞⟞⟞⟞⟞✫**⟮Tools⟯**✫⟝⟝⟝⟝⟝⟝⟝⟝⟄\n'
f'**{pref}status [Тип статуса] [Текст]** — меняет статус.\n'
f'**{pref}purge [Количество]** — удаляет ваши сообщения.\n'
f'**{pref}clear [Количество]** — удаляет все сообщения.\n'
f'**{pref}masspin [Количество]** — закрепляет последние сообщения.\n'
f'**{pref}messages [Количество]** — сохраняет последние сообщения в файл.\n'
f'**{pref}groupsleave** — выходит из всех групп.\n'
f'**{pref}blocksend [Пинг/ID] [Текст]** — отправляет сообщение в ЛС, даже если вы добавили пользователя в ЧС.\n'
f'**{pref}copystatus [Пинг/ID]** — копирует RPC статус.\n'
f'**{pref}translate [На какой язык] [Текст]** — переводчик.\n'
f'**{pref}nitro [Количество] [classic/full]** — генерирует нитро (без проверок).\n'
f'**{pref}copyemojis [ID Сервера на который нужно скопировать]** — копирует эмодзи.\n'
f'**{pref}hackpurge** — "удаляет" сообщения без прав.\n'
f'**{pref}deletedms [Имя]** — удаляет ЛС от ботов с указанным именем.\n'))
elif cat == 'info':
await ctx.message.edit(content=(f'\n'
f'⟃⟞⟞⟞⟞⟞⟞⟞✫**⟮Info⟯**✫⟝⟝⟝⟝⟝⟝⟝⟝⟄\n'
f'**{pref}server** — показывает информацию о сервере.\n'
f'**{pref}user [Пинг/ID]** — показывает информацию о пользователе.\n'
f'**{pref}token [Токен]** — показывает информацию о токене.\n'))
elif cat == 'fun':
await ctx.message.edit(content=(f'\n'
f'⟃⟞⟞⟞⟞⟞⟞⟞✫**⟮Fun⟯**✫⟝⟝⟝⟝⟝⟝⟝⟝⟄\n'
f'**{pref}trolldelete [Пинг/ID]** — удаление всех сообщений от пользователя.\n'
f'**{pref}trollreaction [Пинг/ID] [Эмодзи]** — ставит эмодзи на все сообщения пользователя.\n'
f'**{pref}trollrepeat [Пинг/ID]** — повторение всех сообщений пользователя.\n'
f'**{pref}trollmove [Количество] [Пинг/ID]** — перемещает пользователя по голосовым каналам.\n'
f'**{pref}untroll** — выключение команды troll.\n'
f'**{pref}reactions [Количество] [Эмодзи] [ID Канала]** — спамит реакциями.\n'
f'**{pref}ball [Вопрос]** — ответит на любые вопросы.\n'
f'**{pref}hack [Пинг/ID]** — взлом аккаунта.\n'
f'**{pref}faketyping [Длительность в секундах] [ID Канала]** — печатает сообщение...\n'
f'**{pref}reactionbot [Эмодзи] [ID Сервера]** — ставит реакции на все сообщения.\n'
f'**{pref}say [Пинг/ID] [Текст]** — пишет сообщение от имени другого пользователя.\n'
f'**{pref}criptext** — делает ваши сообщения очень страшними!!!\n'
f'**{pref}color [rainbow/water/white]** — делает ваши сообщения красочными.\n'))
elif cat == 'moderation':
await ctx.message.edit(content=(f'\n'
f'⟃⟞⟞⟞⟞⟞⟞⟞✫**⟮Moderation⟯**✫⟝⟝⟝⟝⟝⟝⟝⟝⟄\n'
f'**{pref}ban [Пинг/ID] [Причина]** — банит пользователя.\n'
f'**{pref}unban - [Пинг/ID]** — разбанивает пользователя.\n'
f'**{pref}kick [Пинг/ID] [Причина]** — кикает пользователя.\n'
f'**{pref}mute [Пинг/ID] [Длительность] [Причина]** — мутит пользователя.\n'
f'**{pref}unmute [Пинг/ID] [Причина]** — размучивает пользователя.\n'
f'**{pref}slowmode [Длительность]** — ставит слоумод на канал (Пример длительности: 3ч - 3 часа).\n'))
elif cat == 'image':
await ctx.message.edit(content=(f'\n'
f'⟃⟞⟞⟞⟞⟞⟞⟞✫**⟮Image⟯**✫⟝⟝⟝⟝⟝⟝⟝⟝⟄\n'
f'**{pref}lgbt [Пинг/ID]** — делает аватарку пользователя разноцветной.\n'
f'**{pref}comment [Пинг/ID] [Текст]** — делает комментарий на ютубе.\n'
f'**{pref}jail [Пинг/ID]** — садит пользователя в тюрьму.\n'
f'**{pref}cmm [Текст]** — change my mind.\n'
f'**{pref}fox** — картинка лисы.\n'
f'**{pref}lightshot [Количество]** — генерирует случайные ссылки на lighshot.\n'
f'**{pref}qrcode [Контент]** — создаёт QRcode.\n'))
elif cat == 'nuke':
if await check(ctx):
await ctx.message.edit(content=(f'\n'
f'⟃⟞⟞⟞⟞⟞⟞⟞✫**⟮Nuke⟯**✫⟝⟝⟝⟝⟝⟝⟝⟝⟄\n'
f'**{pref}nuke** — уничтожение сервера.\n'
f'**{pref}silentnuke [ID Сервера] [Сообщение]** — уничтожение сервера с обходом ВСЕХ анти-краш ботов, и нельзя определить, кто уничтожил сервер.\n'
f'**{pref}spamchannels [Имя]** — спам каналами.\n'
f'**{pref}spamroles [Имя]** — спам ролями.\n'
f'**{pref}spamwebhooks [Сообщение]** — спам вебхуками.\n'
f'**{pref}spam [Количество] [Текст]** — спам с обходом анти-спама.\n'
f'**{pref}timedspam [Задержка (с)] [Количество] [Текст]** — спам с задержкой между сообщениями и обходом анти-спама.\n'
f'**{pref}spamall [Количество] [Текст]** — спам во все каналы.\n'
f'**{pref}spamthreads [Количество] [Имя ветки]** — спамит ветками.\n'
f'**{pref}spamthreadsall [Количество] [Имя ветки]** — спамит во всех каналах ветками.\n'
f'**{pref}spamgroups [Количество] [Жертвы от 2 до 9]** — спамит группами.\n'
f'**{pref}pingall [Количество]** — пингует всех участников на сервере.\n'
f'**{pref}lags [Тип лагов] [Количество]** — делает сильные лаги в канале.\n'
f'**{pref}nukechannel** — удаляет все сообщения в канале, и меняет айди канала.\n'
f'**{pref}deleteall** — удаление всего.\n'
f'**{pref}deletechannels** — удаляет только каналы.\n'
f'**{pref}deleteroles** — удаляет только роли.\n'
f'**{pref}deleteemojis** — удаляет только эмодзи.\n'))
else:
await ctx.message.edit(
content=f'**Напишите `{pref}help`, для просмотра всех категорий команд**')
@bot.command(name='github', aliases=['selfbot', 'бот', 'селфбот', 'гит', 'гитхаб', 'git', 'hub'])
async def __bot(ctx):
await ctx.message.edit(content='**Ссылка: https://github.com/PuroSlavKing/Discord-AIM-SBot**')
@bot.command(aliases=['перезагрузка', 'стоп', 'перезагрузить', 'stop_all', 'остановить', 'reload', 'stop', 'reset'])
async def stopall(ctx):
await ctx.message.edit(content=(f'\n'
f'Перезагрузка бота...\n'
f'█▒▒▒▒▒▒▒▒▒\n'))
clear()
Popen('python main.py')
await ctx.message.edit(content=(f'\n'
f'Перезагрузка завершена!\n'
f'██████████\n'))
await bot.logout()
for filename in os.listdir("./cogs"):
if filename.endswith(".py"):
bot.load_extension(f"cogs.{filename[:-3]}")
try:
bot.run(config['GENERAL']["token"])
except:
while True:
clear()
print(Fore.LIGHTBLUE_EX + "Неверный токен")
while True: sleep(9)