diff options
author | ziro <palembani@gmail.com> | 2020-08-06 07:37:19 +0000 |
---|---|---|
committer | ziro <palembani@gmail.com> | 2020-08-06 07:37:19 +0000 |
commit | 13447ea06137e9a2d856283037692837836e9b42 (patch) | |
tree | eab42aa5e4e3615162a7581c8b44f4c962654ea3 /cogs/utils.py | |
parent | f797397950a1757a978962e912edae1a7263d3cb (diff) | |
download | steve-bot-13447ea06137e9a2d856283037692837836e9b42.tar steve-bot-13447ea06137e9a2d856283037692837836e9b42.tar.gz steve-bot-13447ea06137e9a2d856283037692837836e9b42.tar.bz2 steve-bot-13447ea06137e9a2d856283037692837836e9b42.tar.lz steve-bot-13447ea06137e9a2d856283037692837836e9b42.tar.xz steve-bot-13447ea06137e9a2d856283037692837836e9b42.tar.zst steve-bot-13447ea06137e9a2d856283037692837836e9b42.zip |
+ Steve Branch
Diffstat (limited to 'cogs/utils.py')
-rwxr-xr-x[-rw-r--r--] | cogs/utils.py | 277 |
1 files changed, 269 insertions, 8 deletions
diff --git a/cogs/utils.py b/cogs/utils.py index 7a5ffac..1309141 100644..100755 --- a/cogs/utils.py +++ b/cogs/utils.py @@ -1,16 +1,277 @@ from discord.ext import commands +from discord.ext import tasks import discord +import json +import datetime +# forgot to import this and ended up looking mentally unstable +# troll literally pointed out atleast 4 things I did wrong in 3 lines of code +from random import choice +from random import randint +from datetime import timedelta +from selenium import webdriver +from selenium.webdriver.chrome.options import Options +#from PIL.Image import core as Image +#import image as Image +from PIL import Image +from PIL import ImageFilter +import functools import asyncio +def set_viewport_size(driver, width, height): + window_size = driver.execute_script(""" + return [window.outerWidth - window.innerWidth + arguments[0], + window.outerHeight - window.innerHeight + arguments[1]]; + """, width, height) + driver.set_window_size(*window_size) + +async def reportStuff(self, ctx, message): + channel = self.bot.get_channel(int(self.bot.config[str(ctx.message.guild.id)]["report_channel"])) + + embed = discord.Embed( + title=f"Report from {ctx.message.author}", + description=f"{message}", + color=ctx.message.author.color, timestamp=ctx.message.created_at) + + await channel.send(embed=embed) + await ctx.author.send("Report has been submitted") + +def save_leaderboard(): + DRIVER = '/usr/lib/chromium-browser/chromedriver' + chrome_options = Options() + chrome_options.add_argument("--disable-dev-shm-usage") + chrome_options.add_argument("--headless") + chrome_options.add_argument("--no-sandbox") + chrome_options.add_argument("--disable-gpu") + #chrome_options.binary_location = "" + driver = webdriver.Chrome(DRIVER, chrome_options=chrome_options) + set_viewport_size(driver, 1000, 1000) + driver.get('https://aninternettroll.github.io/mcbeVerifierLeaderboard/') + screenshot = driver.find_element_by_id('table').screenshot('leaderboard.png') + driver.quit() + #transparency time + img = Image.open('leaderboard.png') + img = img.convert("RGB") + pallette = Image.open("palette.png") + pallette = pallette.convert("P") + img = img.quantize(colors=256, method=3, kmeans=0, palette=pallette) + img = img.convert("RGBA") + datas = img.getdata() + + newData = [] + for item in datas: + if item[0] == 255 and item[1] == 255 and item[2] == 255: + newData.append((255, 255, 255, 0)) + else: + newData.append(item) + + img.putdata(newData) + """ + img = img.filter(ImageFilter.SHARPEN) + img = img.filter(ImageFilter.SHARPEN) + img = img.filter(ImageFilter.SHARPEN) + """ + #height, width = img.size + #img = img.resize((height*10,width*10), resample=Image.BOX) + img.save("leaderboard.png", "PNG") + class Utils(commands.Cog): - def __init__(self, bot): - self.bot = bot - @commands.command() - async def ping(self, ctx): - """Tell the ping of the bot to the discord servers""" - await ctx.send(f'Pong! {round(self.bot.latency*1000)}ms') + def __init__(self, bot): + self.bot = bot + self.tries = 1 -def setup(bot): - bot.add_cog(Utils(bot)) + @commands.command(description="Pong!", help="Tells the ping of the bot to the discord servers", brief="Tells the ping") + async def ping(self, ctx): + await ctx.send(f'Pong! {round(self.bot.latency*1000)}ms') + + @commands.cooldown(1, 25, commands.BucketType.guild) + @commands.command() + async def findseed(self, ctx): + """Test your luck""" + if ctx.message.channel.id != int(self.bot.config[str(ctx.message.guild.id)]["bot_channel"]): + await ctx.message.delete() + ctx.command.reset_cooldown(ctx) + return + + # Don't ask + rigged_findseed = { + 280428276810383370: 12, # Thomas's User ID + 199070670221475842: -1, # Kai's User ID + 615658069132836865: -12 # What a fraud! They didn't use their real name. + } + + if ctx.author.id in rigged_findseed: + totalEyes = rigged_findseed[ctx.author.id] + else: + totalEyes = 0 + for i in range(12): + randomness = randint(1, 10) + if randomness <= 1: + totalEyes += 1 + await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)} -> your seed is a {totalEyes} eye") + + @findseed.error + async def findseed_handler(self,ctx,error): + if isinstance(error, commands.CommandOnCooldown): + if ctx.message.channel.id != int(self.bot.config[str(ctx.message.guild.id)]["bot_channel"]): + ctx.command.reset_cooldown(ctx) + await ctx.message.delete() + return + else: + await ctx.send(error) + #await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)}, you have to wait {round(error.retry_after, 7)} seconds before using this again.") + + @commands.command() + async def findsleep(self, ctx): + """Test your sleep""" + if ctx.message.channel.id != int(self.bot.config[str(ctx.message.guild.id)]["bot_channel"]): + await ctx.message.delete() + return + + # DON'T ASK! + lessSleepMsg = [ + "gn, insomniac!", + "counting sheep didn't work? try counting chloroform vials!", + "try a glass of water", + "some decaf coffee might do the trick!" + ] + + moreSleepMsg = [ + "waaakeee uuuppp!", + "are they dead or asleep? I can't tell.", + "wake up, muffin head", + "psst... coffeeee \\:D" + ] + # Optional TODO: Create non-normal distribution + sleepHrs = randint(0, 24) + + # Add extra comment based on number of sleepHrs + if sleepHrs == 0: + await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)} -> your sleep is 0 hours long - nice try \:D") + elif sleepHrs <= 5: + if sleepHrs == 1: + s = '' + else: + s = 's' + await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)} -> your sleep is {sleepHrs} hour{s} long - {lessSleepMsg[randint(0, len(lessSleepMsg) - 1)]}") + else: + await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)} -> your sleep is {sleepHrs} hours long - {moreSleepMsg[randint(0, len(moreSleepMsg) - 1)]}") + + @commands.Cog.listener() + async def on_member_join(self, member): + if member.id == 640933433215811634: + await member.edit(nick="JoetheSheepFucker") + def check(msg): + return msg.author == member and msg.type != discord.MessageType.new_member + try: + msg = await self.bot.wait_for("message", check=check, timeout=300) + await msg.channel.send("<:PeepoPog:732172337956257872>") + except asyncio.TimeoutError: + await msg.channel.send("<:pepesadcrash:739927552260440185>") + + @commands.Cog.listener() + async def on_member_update(self, before, after): + if after.id == 640933433215811634: + await after.edit(nick="JoetheSheepFucker") + + @commands.Cog.listener() + async def on_message(self, message): + if not message.guild: + return + if message.channel.id != int(self.bot.config[str(message.guild.id)]["fair_channel"]): + return + if message.author.bot: + return + badWords = ["fair", "ⓕⓐⓘⓡ"] + count = 0 + + coolKids = [ + ['Cameron', self.bot.get_user(468262902969663488), datetime.date(2020, 10, 8)], + ['Indy', self.bot.get_user(274923326890311691), datetime.date(2020, 9, 10)], + ['Kai', self.bot.get_user(199070670221475842), datetime.date(2020, 11, 20)], + ['Luca', self.bot.get_user(99457716614885376), datetime.date(2020, 11, 5)], + ['Max', self.bot.get_user(543958509243596800), datetime.date(2020, 11, 10)], + ['Mistaken', self.bot.get_user(264121998173536256), datetime.date(2020, 7, 6)], + ['Murray', self.bot.get_user(400344183333847060), datetime.date(2020, 11, 10)], + ['RKREE', self.bot.get_user(395872198323077121), datetime.date(2020, 11, 5)], + # idk if she goes by her irl name but I'm sticking with it for the sake of uniformity + # also idk how to pronounce prakxo + ['Samantha', self.bot.get_user(226312219787264000), datetime.date(2020, 6, 24)], + ['Scott', self.bot.get_user(223937483774230528), datetime.date(2020, 6, 23)], + ['Sky', self.bot.get_user(329538915805691905), datetime.date(2020, 6, 24)], + ['Thomas', self.bot.get_user(280428276810383370), datetime.date(2020, 9, 29)], + ['Samantha', self.bot.get_user(536071288859656193), datetime.date(2020, 8, 23)], + ['Landen', self.bot.get_user(654025117025828885), datetime.date(2020, 8, 25)] + ] + + + for coolKid in coolKids: + if datetime.date.today() == coolKid[2]: + try: + for i in range(self.tries): + await coolKid[1].send(f'Happy Birthday {coolKid[0]}! You\'re a boomer now! :mango:') + self.tries = 1 + except: + self.tries +=1 + + for word in badWords: + if word in message.content.lower().replace(" ", ""): + count += 1; + fair = 'Fair '*count + await message.channel.send(fair) + + @commands.cooldown(1, 60, commands.BucketType.member) + @commands.command() + async def report(self, ctx, *, message=None): + """Send a message to the super mods about anything""" + if ctx.message.guild != None: + await ctx.message.delete() + if message == None: + await ctx.message.author.send("Please type a report to report (hehe, sounds funny)") + else: + await reportStuff(self, ctx, message) + + @commands.cooldown(1, 20, commands.BucketType.guild) + @commands.command() + async def leaderboard(self, ctx): + """Leaderboard of the people that matter""" + async with ctx.typing(): + try: + lbFunc = functools.partial(save_leaderboard) + await self.bot.loop.run_in_executor(None, lbFunc) + await ctx.send(file=discord.File("leaderboard.png")) + except: + await ctx.send("https://aninternettroll.github.io/mcbeVerifierLeaderboard/") + + @leaderboard.error + async def leaderboard_handler(self,ctx,error): + if isinstance(error, commands.CommandOnCooldown): + #return + await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)}, you have to wait {round(error.retry_after, 2)} seconds before using this again.") + + @commands.cooldown(1, 60, commands.BucketType.guild) + @commands.command() + async def someone(self, ctx): + """Discord's mistake""" + if ctx.channel.id != int(self.bot.config[str(ctx.message.guild.id)]["fair_channel"]): + await ctx.send(choice(ctx.guild.members).mention) + + @commands.command() + async def roll(self, ctx, pool): + """Roll the dice""" + await ctx.send(f"You rolled a {randint(0, int(pool))}") + + @commands.command(aliases=['commands', 'allcommands']) + async def listcommands(self, ctx): + """List all custom commands""" + with open('custom_commands.json', 'r') as f: + commands = json.load(f) + output = '```List of custom commands:\n' + for key in commands: + output += f'{key}, ' + output += '```' + await ctx.send(output) + +def setup(bot): + bot.add_cog(Utils(bot)) |