aboutsummaryrefslogtreecommitdiff
path: root/cogs/utils.py
diff options
context:
space:
mode:
authorziro <palembani@gmail.com>2020-08-06 07:37:19 +0000
committerziro <palembani@gmail.com>2020-08-06 07:37:19 +0000
commit13447ea06137e9a2d856283037692837836e9b42 (patch)
treeeab42aa5e4e3615162a7581c8b44f4c962654ea3 /cogs/utils.py
parentf797397950a1757a978962e912edae1a7263d3cb (diff)
downloadsteve-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.py277
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))