diff options
Diffstat (limited to '')
23 files changed, 134 insertions, 0 deletions
| diff --git a/bot/resources/pride/flags/agender.png b/bot/resources/pride/flags/agender.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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.pngBinary files differ new 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..ce995073 --- /dev/null +++ b/bot/seasons/pride/pride_avatar.py @@ -0,0 +1,134 @@ +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 = await ctx.author.avatar_url.read() +            avatar = Image.open(BytesIO(image_bytes)) +            avatar = avatar.convert("RGBA").resize((1024, 1024)) + +            avatar = self.crop_avatar(avatar) + +            ring = Image.open(Path("bot", "resources", "pride", "flags", f"{flag}.png")).resize((1024, 1024)) +            ring = ring.convert("RGBA") +            ring = self.crop_ring(ring, pixels) + +            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") | 
