diff options
Diffstat (limited to 'bot')
23 files changed, 135 insertions, 0 deletions
diff --git a/bot/resources/pride/flags/agender.png b/bot/resources/pride/flags/agender.png Binary files differnew file mode 100644 index 00000000..8a09e5fa --- /dev/null +++ b/bot/resources/pride/flags/agender.png diff --git a/bot/resources/pride/flags/androgyne.png b/bot/resources/pride/flags/androgyne.png Binary files differnew file mode 100644 index 00000000..da40ec01 --- /dev/null +++ b/bot/resources/pride/flags/androgyne.png diff --git a/bot/resources/pride/flags/aromantic.png b/bot/resources/pride/flags/aromantic.png Binary files differnew file mode 100644 index 00000000..7c42a200 --- /dev/null +++ b/bot/resources/pride/flags/aromantic.png diff --git a/bot/resources/pride/flags/asexual.png b/bot/resources/pride/flags/asexual.png Binary files differnew file mode 100644 index 00000000..c339b239 --- /dev/null +++ b/bot/resources/pride/flags/asexual.png diff --git a/bot/resources/pride/flags/bigender.png b/bot/resources/pride/flags/bigender.png Binary files differnew file mode 100644 index 00000000..9864f9bb --- /dev/null +++ b/bot/resources/pride/flags/bigender.png diff --git a/bot/resources/pride/flags/bisexual.png b/bot/resources/pride/flags/bisexual.png Binary files differnew file mode 100644 index 00000000..2479bc8e --- /dev/null +++ b/bot/resources/pride/flags/bisexual.png diff --git a/bot/resources/pride/flags/demiboy.png b/bot/resources/pride/flags/demiboy.png Binary files differnew file mode 100644 index 00000000..95f68717 --- /dev/null +++ b/bot/resources/pride/flags/demiboy.png diff --git a/bot/resources/pride/flags/demigirl.png b/bot/resources/pride/flags/demigirl.png Binary files differnew file mode 100644 index 00000000..6df49bce --- /dev/null +++ b/bot/resources/pride/flags/demigirl.png diff --git a/bot/resources/pride/flags/demisexual.png b/bot/resources/pride/flags/demisexual.png Binary files differnew file mode 100644 index 00000000..5339330e --- /dev/null +++ b/bot/resources/pride/flags/demisexual.png diff --git a/bot/resources/pride/flags/gay.png b/bot/resources/pride/flags/gay.png Binary files differnew file mode 100644 index 00000000..5a454ca3 --- /dev/null +++ b/bot/resources/pride/flags/gay.png diff --git a/bot/resources/pride/flags/genderfluid.png b/bot/resources/pride/flags/genderfluid.png Binary files differnew file mode 100644 index 00000000..ac22f093 --- /dev/null +++ b/bot/resources/pride/flags/genderfluid.png diff --git a/bot/resources/pride/flags/genderqueer.png b/bot/resources/pride/flags/genderqueer.png Binary files differnew file mode 100644 index 00000000..4652c7e6 --- /dev/null +++ b/bot/resources/pride/flags/genderqueer.png diff --git a/bot/resources/pride/flags/intersex.png b/bot/resources/pride/flags/intersex.png Binary files differnew file mode 100644 index 00000000..c58a3bfe --- /dev/null +++ b/bot/resources/pride/flags/intersex.png diff --git a/bot/resources/pride/flags/lesbian.png b/bot/resources/pride/flags/lesbian.png Binary files differnew file mode 100644 index 00000000..824b9a89 --- /dev/null +++ b/bot/resources/pride/flags/lesbian.png diff --git a/bot/resources/pride/flags/nonbinary.png b/bot/resources/pride/flags/nonbinary.png Binary files differnew file mode 100644 index 00000000..ee3c50e2 --- /dev/null +++ b/bot/resources/pride/flags/nonbinary.png diff --git a/bot/resources/pride/flags/omnisexual.png b/bot/resources/pride/flags/omnisexual.png Binary files differnew file mode 100644 index 00000000..2527051d --- /dev/null +++ b/bot/resources/pride/flags/omnisexual.png diff --git a/bot/resources/pride/flags/pangender.png b/bot/resources/pride/flags/pangender.png Binary files differnew file mode 100644 index 00000000..38004654 --- /dev/null +++ b/bot/resources/pride/flags/pangender.png diff --git a/bot/resources/pride/flags/pansexual.png b/bot/resources/pride/flags/pansexual.png Binary files differnew file mode 100644 index 00000000..0e56b534 --- /dev/null +++ b/bot/resources/pride/flags/pansexual.png diff --git a/bot/resources/pride/flags/polyamory.png b/bot/resources/pride/flags/polyamory.png Binary files differnew file mode 100644 index 00000000..b41f061f --- /dev/null +++ b/bot/resources/pride/flags/polyamory.png diff --git a/bot/resources/pride/flags/polysexual.png b/bot/resources/pride/flags/polysexual.png Binary files differnew file mode 100644 index 00000000..b2aba22c --- /dev/null +++ b/bot/resources/pride/flags/polysexual.png diff --git a/bot/resources/pride/flags/transgender.png b/bot/resources/pride/flags/transgender.png Binary files differnew file mode 100644 index 00000000..73f01043 --- /dev/null +++ b/bot/resources/pride/flags/transgender.png diff --git a/bot/resources/pride/flags/trigender.png b/bot/resources/pride/flags/trigender.png Binary files differnew file mode 100644 index 00000000..06ff0f7c --- /dev/null +++ b/bot/resources/pride/flags/trigender.png diff --git a/bot/seasons/pride/pride_avatar.py b/bot/seasons/pride/pride_avatar.py new file mode 100644 index 00000000..925c0ebf --- /dev/null +++ b/bot/seasons/pride/pride_avatar.py @@ -0,0 +1,135 @@ +import logging +from io import BytesIO +from pathlib import Path + +import discord +from PIL import Image, ImageDraw +from discord.ext import commands + +log = logging.getLogger(__name__) + +OPTIONS = { + "agender": "agender", + "androgyne": "androgyne", + "androgynous": "androgyne", + "aromantic": "aromantic", + "aro": "aromantic", + "ace": "asexual", + "asexual": "asexual", + "bigender": "bigender", + "bisexual": "bisexual", + "bi": "bisexual", + "demiboy": "demiboy", + "demigirl": "demigirl", + "demi": "demisexual", + "demisexual": "demisexual", + "gay": "gay", + "lgbt": "gay", + "queer": "gay", + "homosexual": "gay", + "fluid": "genderfluid", + "genderfluid": "genderfluid", + "genderqueer": "genderqueer", + "intersex": "intersex", + "lesbian": "lesbian", + "non-binary": "nonbinary", + "enby": "nonbinary", + "nb": "nonbinary", + "nonbinary": "nonbinary", + "omnisexual": "omnisexual", + "omni": "omnisexual", + "pansexual": "pansexual", + "pan": "pansexual", + "pangender": "pangender", + "poly": "polysexual", + "polysexual": "polysexual", + "polyamory": "polyamory", + "polyamorous": "polyamory", + "transgender": "transgender", + "trans": "transgender", + "trigender": "trigender" +} + + +class PrideAvatar(commands.Cog): + """Put an LGBT spin on your avatar!""" + + def __init__(self, bot): + self.bot = bot + + @staticmethod + def crop_avatar(avatar): + """This crops the avatar into a circle.""" + + mask = Image.new("L", avatar.size, 0) + draw = ImageDraw.Draw(mask) + draw.ellipse((0, 0) + avatar.size, fill=255) + avatar.putalpha(mask) + return avatar + + @staticmethod + def crop_ring(ring, px): + """This crops the ring into a circle.""" + + mask = Image.new("L", ring.size, 0) + draw = ImageDraw.Draw(mask) + draw.ellipse((0, 0) + ring.size, fill=255) + draw.ellipse((px, px, 1024-px, 1024-px), fill=0) + ring.putalpha(mask) + return ring + + @commands.command(aliases=["avatarpride", "pridepfp", "prideprofile"]) + async def prideavatar(self, ctx, option="lgbt", pixels: int = 64): + """ + This surrounds an avatar with a border of a specified LGBT flag. + + This defaults to the LGBT rainbow flag if none is given. + The amount of pixels can be given which determines the thickness of the flag border. + This has a maximum of 512px and defaults to a 64px border. + The full image is 1024x1024. + """ + + pixels = 0 if pixels < 0 else 512 if pixels > 512 else pixels + + option = option.lower() + + if option not in OPTIONS.keys(): + return await ctx.send("I don't have that flag!") + + flag = OPTIONS[option] + + async with ctx.typing(): + + # Get avatar bytes + image_bytes = ctx.author.avatar_url.read() + avatar = Image.open(BytesIO(image_bytes)) + avatar = avatar.convert("RGBA").resize((1024, 1024)) + + print(avatar.size) + + avatar = self.crop_avatar(avatar) + + ring = Image.open(Path("bot", "resources", "pride", "flags", f"{flag}.png")).resize((1024, 1024)) + ring = self.crop_ring(ring, pixels) + print(ring.size) + avatar.alpha_composite(ring, (0, 0)) + bufferedio = BytesIO() + avatar.save(bufferedio, format="PNG") + bufferedio.seek(0) + + file = discord.File(bufferedio, filename="pride_avatar.png") # Creates file to be used in embed + embed = discord.Embed( + name="Your Lovely Pride Avatar", + description=f"Here is your lovely avatar, surrounded by\n a beautiful {option} flag. Enjoy :D" + ) + embed.set_image(url="attachment://pride_avatar.png") + embed.set_footer(text=f"Made by {ctx.author.display_name}", icon_url=ctx.author.avatar_url) + + await ctx.send(file=file, embed=embed) + + +def setup(bot): + """Cog load.""" + + bot.add_cog(PrideAvatar(bot)) + log.info("PrideAvatar cog loaded") |