aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/evergreen/avatar_modification/_effects.py12
-rw-r--r--bot/exts/evergreen/avatar_modification/avatar_modify.py27
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:
"""