Для проверяющих статью Люди, такой статьи нигде не было. Не путайте спам ботов в лс с крашботами - спам в лс это другое Ку всем, в этой статье я хочу показать вам, как написать на питоне простейших спам ботов в лс дискорд Нахуй мне оно надо? Я этих ботов использую для пранков, недавно выложил видос в тт с пиаром этих ботов, залетел на 300к просмотров видос И зашло 3.5к человек на сервер с ботами Фото Кто вообще не вдупляет чё это такое, обьясню: суть ботов заключается в том, что по команде пользователю начинает спамить в лс одновременно несколько ботов - засоряя лс пользователю и заставляя его бомбить (если ботов много) Реакция людей на спам Есть небольшой трабл у этих ботов - спам никак не сработает, если у мамонта закрыто лс. Это уже лимиты самого дискорда, ничего не поделаешь, но в основном мамонты не думают закрыть лс перед тем как зайти на сервер (особенно если он не вызывает подозрений). Писать этих ботов мы будем максимально оптимально (жрут не более ~50мб ОЗУ, когда остальные в основном по несколько гигов) на питоне (да-да) Устанавливаем Python Если у вас Win7 32bit или ниже - скорее всего более менее новые версии питона у вас не пойдут, юзайте сайт replit.com (онлайн редактор кода, и запускать код на нем можно). В остальных случаях идем сюда: https://www.python.org/downloads/release/python-389/ , и скачиваем питон для вашей ОС. Запускаем скачанный файл, и устанавливаем сам питон. ВАЖНО!!! ПРИ УСТАНОВКЕ СТАВЬТЕ ГАЛКУ ADD PYTHON TO PATH, В ПРОТИВНОМ СЛУЧАЕ БУДЕТ ВОЗНИКАТЬ ОШИБКА!!! Итак, начинаем писать код Для начала, я всегда создаю файл start.bat, в нем я указываю данный "код": echo off title Spam Bots DS cls python main.py pause Code echo off title Spam Bots DS cls python main.py pause Этот файл нужен для запуска кода, и для того чтобы легко было отследить ошибку если таковые возникнут (обычно консоль питона сразу закрывается после ошибки, последняя строка этого кода будет останавливать закрытие консоли) Некоторая часть дела сделана, сейчас открываем cmd (win + r --> cmd), и вводим туда данные команды: pip install discord pip install colorama После этого перезапускаем комп (чтобы все изменения применились) Теперь создаем основной файл: main.py - тут мы и будем творить все чудеса "погромистов". (неудачный рофл) Открываем через блокнот этот файл и пишем код. Для начала, давайте импортируем библиотеки: import requests # эта библа чтобы слать запросы в дискорд import discord #основная библа дискорда import asyncio # либа для потоков from discord.ext import commands # тож надо import json # чтобы простой текст преобразовать в json client = commands.Bot(command_prefix='!') # создаем "переменную бота" с префиксом "!" (можете изменить) Python import requests # эта библа чтобы слать запросы в дискорд import discord #основная библа дискорда import asyncio # либа для потоков from discord.ext import commands # тож надо import json # чтобы простой текст преобразовать в json client = commands.Bot(command_prefix='!') # создаем "переменную бота" с префиксом "!" (можете изменить) Часть дела сделана, думаю, по комментариям всё понятно Идём дальше, сейчас мы напишем функцию для отправки запроса в дискорд, чтобы бот слал сообщение в лс: def send(userid): #создаем функцию send которая принимает аргумент userid with open('tokens.txt','r') as f: #открываем файл с токенами ботов (потом узнаете зачем) tokens = f.readlines() # читаем все строки с токенами for x in tokens: # для каждого токена из списка token = x.rstrip() # обрезаем его от лишнего payload = { "content": f"Спам боты lolz" } # эта штука отвечает за текст который мы шлем u = 'https://discord.com/api/v9/users/@me/channels' # в этой части кода мы получаем "id" лс-а с юзером (нет, это не простой id человека) d = { "recipients":[f"{userid}"] } header = { "authorization": f"Bot {token}" } try: r = requests.post(url=u,json=d,headers=header) #отправляем запрос на получение id лс-а jss = json.loads(r.text) # подгружаем простой текст в json url = f'https://discord.com/api/v9/channels/{jss["id"]}/messages' # url куда шлем запрос чтобы челик получил лс r = requests.post(url,data=payload,headers=header)#ну и шлем смс в лс except: #если что то пойдет не так пишем сообщение об ошибке print('[ - ] Error') Python def send(userid): #создаем функцию send которая принимает аргумент userid with open('tokens.txt','r') as f: #открываем файл с токенами ботов (потом узнаете зачем) tokens = f.readlines() # читаем все строки с токенами for x in tokens: # для каждого токена из списка token = x.rstrip() # обрезаем его от лишнего payload = { "content": f"Спам боты lolz" } # эта штука отвечает за текст который мы шлем u = 'https://discord.com/api/v9/users/@me/channels' # в этой части кода мы получаем "id" лс-а с юзером (нет, это не простой id человека) d = { "recipients":[f"{userid}"] } header = { "authorization": f"Bot {token}" } try: r = requests.post(url=u,json=d,headers=header) #отправляем запрос на получение id лс-а jss = json.loads(r.text) # подгружаем простой текст в json url = f'https://discord.com/api/v9/channels/{jss["id"]}/messages' # url куда шлем запрос чтобы челик получил лс r = requests.post(url,data=payload,headers=header)#ну и шлем смс в лс except: #если что то пойдет не так пишем сообщение об ошибке print('[ - ] Error') Не бейте за говнокод, если он тут есть Теперь давайте писать команды для основного бота, который будет "регулировать процесс слания спама в лс" - он будет: - Отвечать за запуск функции send - Сообщать о том, запущен спам или нет Да блять лолз сука я этот код писал долго да хватит заебал Пишем основную команду: @client.command() #команда бота @commands.cooldown(1, 25, commands.BucketType.user) #с кд 25сек async def spam(ctx, user:discord.Member=None): if user == None:# если пользователь не указан пишем об этом await ctx.author.send(embed=discord.Embed(title='Укажи пользователя для спама в лс!')) else:#если указан try:#пытаемся дослать до него смс await user.send('lolz bots') except:#если не получилось пишем об этом await ctx.send('Пользователь закрыл лс, не могу делать спам!') return #если все ок пишем об этом и ебашим поток await ctx.author.send(embed=discord.Embed(title=f'Спам пользователю {user} запущен')) await asyncio.create_task(send(idd=str(user.id))) @client.event #ну тут хернь с кд, чтобы писало сообщение когда чел в кд async def on_command_error(ctx, error): if isinstance(error, commands.CommandOnCooldown): await ctx.send(embed=discord.Embed(title=f'{ctx.author}, Пожалуйста, повтори попытку через {round(error.retry_after, 2)} секунд')) Python @client.command() #команда бота @commands.cooldown(1, 25, commands.BucketType.user) #с кд 25сек async def spam(ctx, user:discord.Member=None): if user == None:# если пользователь не указан пишем об этом await ctx.author.send(embed=discord.Embed(title='Укажи пользователя для спама в лс!')) else:#если указан try:#пытаемся дослать до него смс await user.send('lolz bots') except:#если не получилось пишем об этом await ctx.send('Пользователь закрыл лс, не могу делать спам!') return #если все ок пишем об этом и ебашим поток await ctx.author.send(embed=discord.Embed(title=f'Спам пользователю {user} запущен')) await asyncio.create_task(send(idd=str(user.id))) @client.event #ну тут хернь с кд, чтобы писало сообщение когда чел в кд async def on_command_error(ctx, error): if isinstance(error, commands.CommandOnCooldown): await ctx.send(embed=discord.Embed(title=f'{ctx.author}, Пожалуйста, повтори попытку через {round(error.retry_after, 2)} секунд')) Ну и давайте добавим последнюю строку кода: client.run('токен бота из discord developer portal') Python client.run('токен бота из discord developer portal') Почти готово! Весь код main.py import requests # эта библа чтобы слать запросы в дискорд import discord #основная библа дискорда import asyncio # либа для потоков from discord.ext import commands # тож надо import json # чтобы простой текст преобразовать в json client = commands.Bot(command_prefix='!') # создаем "переменную бота" с префиксом "!" (можете изменить) def send(userid): #создаем функцию send которая принимает аргумент userid with open('tokens.txt','r') as f: #открываем файл с токенами ботов (потом узнаете зачем) tokens = f.readlines() # читаем все строки с токенами for x in tokens: # для каждого токена из списка token = x.rstrip() # обрезаем его от лишнего payload = { "content": f"Спам боты lolz" } # эта штука отвечает за текст который мы шлем u = 'https://discord.com/api/v9/users/@me/channels' # в этой части кода мы получаем "id" лс-а с юзером (нет, это не простой id человека) d = { "recipients":[f"{userid}"] } header = { "authorization": f"Bot {token}" } try: r = requests.post(url=u,json=d,headers=header) #отправляем запрос на получение id лс-а jss = json.loads(r.text) # подгружаем простой текст в json url = f'https://discord.com/api/v9/channels/{jss["id"]}/messages' # url куда шлем запрос чтобы челик получил лс r = requests.post(url,data=payload,headers=header)#ну и шлем смс в лс except: #если что то пойдет не так пишем сообщение об ошибке print('[ - ] Error') @client.command() #команда бота @commands.cooldown(1, 25, commands.BucketType.user) #с кд 25сек async def spam(ctx, user:discord.Member=None): if user == None:# если пользователь не указан пишем об этом await ctx.author.send(embed=discord.Embed(title='Укажи пользователя для спама в лс!')) else:#если указан try:#пытаемся дослать до него смс await user.send('lolz bots') except:#если не получилось пишем об этом await ctx.send('Пользователь закрыл лс, не могу делать спам!') return #если все ок пишем об этом и ебашим поток await ctx.author.send(embed=discord.Embed(title=f'Спам пользователю {user} запущен')) await asyncio.create_task(send(idd=str(user.id))) @client.event #ну тут хернь с кд, чтобы писало сообщение когда чел в кд async def on_command_error(ctx, error): if isinstance(error, commands.CommandOnCooldown): await ctx.send(embed=discord.Embed(title=f'{ctx.author}, Пожалуйста, повтори попытку через {round(error.retry_after, 2)} секунд')) client.run('токен бота из discord developer portal') Python import requests # эта библа чтобы слать запросы в дискорд import discord #основная библа дискорда import asyncio # либа для потоков from discord.ext import commands # тож надо import json # чтобы простой текст преобразовать в json client = commands.Bot(command_prefix='!') # создаем "переменную бота" с префиксом "!" (можете изменить) def send(userid): #создаем функцию send которая принимает аргумент userid with open('tokens.txt','r') as f: #открываем файл с токенами ботов (потом узнаете зачем) tokens = f.readlines() # читаем все строки с токенами for x in tokens: # для каждого токена из списка token = x.rstrip() # обрезаем его от лишнего payload = { "content": f"Спам боты lolz" } # эта штука отвечает за текст который мы шлем u = 'https://discord.com/api/v9/users/@me/channels' # в этой части кода мы получаем "id" лс-а с юзером (нет, это не простой id человека) d = { "recipients":[f"{userid}"] } header = { "authorization": f"Bot {token}" } try: r = requests.post(url=u,json=d,headers=header) #отправляем запрос на получение id лс-а jss = json.loads(r.text) # подгружаем простой текст в json url = f'https://discord.com/api/v9/channels/{jss["id"]}/messages' # url куда шлем запрос чтобы челик получил лс r = requests.post(url,data=payload,headers=header)#ну и шлем смс в лс except: #если что то пойдет не так пишем сообщение об ошибке print('[ - ] Error') @client.command() #команда бота @commands.cooldown(1, 25, commands.BucketType.user) #с кд 25сек async def spam(ctx, user:discord.Member=None): if user == None:# если пользователь не указан пишем об этом await ctx.author.send(embed=discord.Embed(title='Укажи пользователя для спама в лс!')) else:#если указан try:#пытаемся дослать до него смс await user.send('lolz bots') except:#если не получилось пишем об этом await ctx.send('Пользователь закрыл лс, не могу делать спам!') return #если все ок пишем об этом и ебашим поток await ctx.author.send(embed=discord.Embed(title=f'Спам пользователю {user} запущен')) await asyncio.create_task(send(idd=str(user.id))) @client.event #ну тут хернь с кд, чтобы писало сообщение когда чел в кд async def on_command_error(ctx, error): if isinstance(error, commands.CommandOnCooldown): await ctx.send(embed=discord.Embed(title=f'{ctx.author}, Пожалуйста, повтори попытку через {round(error.retry_after, 2)} секунд')) client.run('токен бота из discord developer portal') Да, всего лишь 54 строки Но у ботов есть небольшой минус, если одновременно несколько людей запустят спам другим людям, например: Вася рассылку Антону, а Петя рассылку Кириллу, то рассылку сначала получит Антон, а только потом когда Антону придут все смс, рассылка начнет идти Кириллу. Я у себя в таких спамботах, добавил "баланс рассылок", сделал спам побыстрее, и пофиксил вышесказанный баг Но дарённому коду в зубы не смотрят, ладно. Переходим к заключительной части. Сейчас мы создаем файл tokens.txt, в который мы ложим токены СПАМ БОТОВ, которые будут спамить (напоминаю, основной бот просто чтобы запускать спам на этих токенах) в формате: token token token token ... Code token token token token ... Ботов же создаем на Bot Developer portal (ЛИМИТЫ!!! - 10 БОТОВ НА 1 АККАУНТ ЗА 2.5ЧАСА) Когда положили токены в этот файл, добавляем всех ботов на сервер, токены которых указаны в этом файле. После этого добавляем основного бота. Теперь запускаем start.bat, и о чудо - основной бот появился в сети. А где другие боты? Они не включаются, мы просто их используем чтобы слать смски Ну а теперь пишем команду ваш префиксspam и профит, боты спамят. (Для большей скорости ставьте на хостинг, или добавьте отдельный поток для каждого токена бота) Да, не мощно - но на любительском уровне пойдёт. Вроде бы всё сказал, пользуйтесь че скажу. Данный код можно спокойно продавать по 150р+. При возникновении вопросов пишите. Удачки.
Добавлять кучу ботов на сервер никто не будет, а добавлять их для рассылки на своём сервере - тупо. Хочешь удивить здешних обитателей - напиши авторег аккаунтов и рассылку с помощью аккаунтов юзеров
РОлТОн_inactive5214446, а как написать боту в лс команду? точнее как его найти, т.к. тот что на дискорд деволопер не работает
Traceback (most recent call last): File "C:\Users\Максим\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\http.py", line 300, in static_login data = await self.request(Route('GET', '/users/@me')) File "C:\Users\Максим\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\http.py", line 254, in request raise HTTPException(r, data) discord.errors.HTTPException: 401 Unauthorized (error code: 0): 401: Unauthorized The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\Максим\Desktop\main.py", line 54, in <module> client.run('токен бота из discord developer portal') File "C:\Users\Максим\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 723, in run return future.result() File "C:\Users\Максим\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 702, in runner await self.start(*args, **kwargs) File "C:\Users\Максим\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 665, in start await self.login(*args, bot=bot) File "C:\Users\Максим\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 511, in login await self.http.static_login(token.strip(), bot=bot) File "C:\Users\Максим\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\http.py", line 304, in static_login raise LoginFailure('Improper token has been passed.') from exc discord.errors.LoginFailure: Improper token has been passed. Что мне делать???
помогите у меня почему то вместо спам ботов пишет основной бот в лс, код спаситл 1в1 только закинул токен в main и в tokens.txt
line 7, in <module> client = commands.Bot(command_prefix='!') # создаем "переменную бота" с префиксом "!" (можете изменить) TypeError: BotBase.__init__() missing 1 required keyword-only argument: 'intents'
MarcusLZT, commands.Bot(command_prefix='!', intents=discord.Intents.all()) Code commands.Bot(command_prefix='!', intents=discord.Intents.all())
la1q1, да раздели ты commands.bot(command_prefix='!' с intents = discord.Intents.all() и еще поставь пробел между intents и = и = discord
Traceback (most recent call last): File "C:\Users\4444\Desktop\main.py", line 7, in <module> client = commands.Bot(command_prefix='!') # создаем "переменную бота" с префиксом "!" (можете изменить) TypeError: BotBase.__init__() missing 1 required keyword-only argument: 'intents' че с этой штукой делать?
wantikcs9_inactive3570373, client = commands.Bot(command_prefix='!', intents=discord.Intents.all()) Python client = commands.Bot(command_prefix='!', intents=discord.Intents.all())