try some discord generation

This commit is contained in:
eneller
2023-02-12 19:41:34 +01:00
parent 43b3ad4e1d
commit 65bad62ee9
2 changed files with 189 additions and 0 deletions

177
discord/main.py Normal file
View File

@@ -0,0 +1,177 @@
# Inspired by webtr333/Nitro-Generator-AND-Checker TODO fix this mess (not my doing, i swear)
#This module does commands like titles for the window
import os
#This module does requests - we can use it for scraping and using the discord api
import requests
#This module allows threading - meaning we can do multiple tasks at once for SPEED
import threading
#This module helps efficiently get random codes (no repeats / suspicious patterns)
#import pyfuncts
#This module is used for system help
import sys
#This module is like requests but most advanced, we can use it for the same purposes of scraping and using the api
import httpx
#This module is used for random - it is used to make decisions, generate codes, and adding random delays
import random
#This module is used to generate codes - it lets us get every character of choice (a-z,0-9) without having to type them all out
import string
#This module is used for colors - we can print stuff nicely
from colorama import Fore, init;init(convert = True)
#This module is used for delays - we can add a delay to stop threads overlapping, and make it easier for users to see what's going on
import time
def generate_code(code_length=16):
"""Generates a nitro code of 16 length (which is how long nitro codes are)"""
characters = string.ascii_letters
return "".join(random.choice(characters) for i in range(code_length))
def get_domain():
"""Simply discords domain for nitro - you can also change the variable to https://discord.com/gifts/ or remove the http:// bit - up to your choosing """
return f"https://discord.gift/"
def clear():
"""Clears screen"""
try:
os.system("cls")
except:
pass
def pprint(text,color,spacing=0):
"""This lets me print stuff nicely and if I choose to change the interface I won't need to edit lots of individual print statements"""
spacestr = spacing * " "
print(f"{color}[{spacestr}{Fore.WHITE}{text}{color}{spacestr}]{Fore.WHITE}")
rps = 0;status="Waiting";total_codes = 0
def per_second_check():
global rps,status,total_codes
"""Calculates actions a second"""
while True:
if status == "Waiting for user":
time.sleep(1)
else:
time.sleep(1)
rps = 0
def write_code(nitro,file="nitro.txt"):
"""Used for writing down codes - can be on generation, success, retries, ratelimits etc"""
f = open(file,"a")
f.write(f"{nitro}\n")
f.close()
def get_written_codes(file="nitro.txt"):
"""Used for reading the file and getting it into a list variable"""
f = open(file)
allcodes = f.readlines()
codesall = []
for code in allcodes:
if "discord" in code:
codesall.append(code.replace("\n",""))
if len(codesall) % 100 == 0:
pprint(f"{len(codesall)} nitros loaded.",Fore.CYAN,9)
return codesall
def generate():
global rps,total_codes
"""Generates nitro codes"""
domain = get_domain()
while True:
code = f"{domain}{generate_code()}"
write_code(code);rps+=1;total_codes+=1
pprint(f"{total_codes} | {code}",Fore.CYAN)
proxies_enabled = False
proxy_list = []
def scrape_proxies(timeout="3000"):
"""Scrapes proxies off a proxyservice - the timeout variable refers to how fast they are. Lower timeout = better proxies (but less proxies!)"""
global proxy_list
pprint(f"Scraping proxies.",Fore.GREEN,2)
proxy_url = f"https://api.proxyscrape.com/v2/?request=getproxies&protocol=http&timeout={timeout}&country=all&ssl=all&anonymity=all&simplified=true"
r = requests.get(f"{proxy_url}")
for proxy in r.text.splitlines():
proxy_list.append(proxy)
if len(proxy_list) % 50 == 0:
pprint(f"Scraped {len(proxy_list)} proxies | {proxy}",Fore.GREEN)
def get_proxy():
"""Determines whether to use a proxy - this is coded so we use a proxy once our ip is ratelimited (as proxies are slow)"""
global proxies_enabled
global proxy_list
if proxies_enabled == False:
return None
else:
if len(proxy_list) == 0:
time.sleep(random.randint(2,10)/10) #stops threads overlapping and causing trouble
if len(proxy_list) == 0:
scrape_proxies()
proxy = random.choice(proxy_list)
return f"http://{proxy}"
def check_code(nitro):
global rps,total_codes,proxies_enabled
"""Uses discord API to check code"""
just_code = nitro.split("/")[1]
api_url = f"https://discord.com/api/v9/entitlements/gift-codes/{just_code}?with_application=true&with_subscription_plan=true"
try:
r = httpx.get(f"{api_url}",proxies=get_proxy(),timeout=30)
total_codes += 1;rps+=1
if r.status_code == 404:
pprint(f"{nitro} INVALID",Fore.RED)
elif r.status_code == 429:
pprint(f"{nitro} RATELIMITED",Fore.RED)
write_code(nitro,"retry.txt")
proxies_enabled = True
elif r.status_code == 200:
pprint(f"{nitro} VALID",Fore.GREEN)
write_code(nitro,"valid.txt")
except Exception as e:
if random.randint(1,400) == 1: #don't want to spam users with this
pprint(f"{nitro} Timeout",Fore.RED)
write_code(nitro,"retry.txt")
def check():
"""Checks nitro codes"""
pprint("Max threads? (Recommended : 50)",Fore.GREEN)
max_threads = input()
try:
max_threads = int(max_threads)
except:
max_threads = 40
while True:
nitro =f"{get_domain()}{generate_code()}"
#for nitro in allcodes:
while threading.active_count() > max_threads:
time.sleep(0.1)
threading.Thread(target = check_code, args = (nitro,)).start()
def startprint():
"""Specifies printing"""
sys.stdout = sys.__stdout__
def main():
"""Manages everything"""
global status
clear();startprint()
threading.Thread(target = per_second_check).start()
pprint(f"Please input an option..",Fore.GREEN,5)
pprint(f"1 OR GEN to GENERATE NITRO CODES",Fore.CYAN,1)
pprint(f"2 OR CHECK to GENERATE NITRO CODES",Fore.CYAN)
userchoice = input().upper()
if userchoice in ["1","GEN"]:
status = "generated this second"
generate()
elif userchoice in ["2","CHECK"]:
status = "checked this second"
check()
else:
pprint("....",Fore.RED,15)
main()
main()
input()

12
discord/requirements.txt Normal file
View File

@@ -0,0 +1,12 @@
anyio==3.6.2
certifi==2022.12.7
charset-normalizer==3.0.1
colorama==0.4.6
h11==0.14.0
httpcore==0.16.3
httpx==0.23.3
idna==3.4
requests==2.28.2
rfc3986==1.5.0
sniffio==1.3.0
urllib3==1.26.14