diff options
| -rw-r--r-- | bot/exts/evergreen/avatar_modification/_effects.py | 12 | ||||
| -rw-r--r-- | bot/exts/evergreen/avatar_modification/avatar_modify.py | 27 |
2 files changed, 39 insertions, 0 deletions
diff --git a/bot/exts/evergreen/avatar_modification/_effects.py b/bot/exts/evergreen/avatar_modification/_effects.py index b53b26f3..7811d148 100644 --- a/bot/exts/evergreen/avatar_modification/_effects.py +++ b/bot/exts/evergreen/avatar_modification/_effects.py @@ -97,6 +97,18 @@ class PfpEffects: return image.quantize() @staticmethod + def reverse_effect(image: Image.Image) -> Image.Image: + """ + Flips the image horizontally. + + This is done by just using ImageOps.flip(). + """ + image = image.resize((1024, 1024)) + image = ImageOps.mirror(image) + + return image + + @staticmethod def easterify_effect(image: Image.Image, overlay_image: t.Optional[Image.Image] = None) -> Image.Image: """ Applies the easter effect to the given image. diff --git a/bot/exts/evergreen/avatar_modification/avatar_modify.py b/bot/exts/evergreen/avatar_modification/avatar_modify.py index 17f34ed4..442df2f0 100644 --- a/bot/exts/evergreen/avatar_modification/avatar_modify.py +++ b/bot/exts/evergreen/avatar_modification/avatar_modify.py @@ -121,6 +121,33 @@ class AvatarModify(commands.Cog): await ctx.send(embed=embed, file=file) + @avatar_modify.command(aliases=("flip", "mirror")) + async def reverse(self, ctx: commands.Context, *, text: t.Optional[str]) -> None: + """Either flips your profile picture or the submitted text.""" + if not text: + async with ctx.typing(): + user = self._fetch_user(ctx.author.id) + image_bytes = await user.avatar_url_as(size=1024).read() + file_name = file_safe_name("reverse_avatar", ctx.author.display_name) + + file = await in_executor( + PfpEffects.apply_effect, + image_bytes, + PfpEffects.reverse_effect, + file_name + ) + + embed = discord.Embed( + title="Your reversed avatar", + description="Here is your avatar. I think it's a spitting image of you." + ) + + embed.set_image(url=f"attachment://{file_name}") + embed.set_footer(f"Made by {ctx.author.display_name}.", icon_url=user.avatar_url) + + await ctx.send(embed=embed, file=file) + + @avatar_modify.command(aliases=("easterify",), root_aliases=("easterify", "avatareasterify")) async def avatareasterify(self, ctx: commands.Context, *colours: t.Union[discord.Colour, str]) -> None: """ |