diff options
| author | 2021-06-02 09:51:00 -0500 | |
|---|---|---|
| committer | 2021-06-02 09:51:00 -0500 | |
| commit | 5be1c59450c363b5f4483d3e46a82780ea229632 (patch) | |
| tree | 5e96634a881df963cdbdfaa19208059a7a3cc08f /bot/exts | |
| parent | Merge branch 'main' of github.com:kronifer/sir-lancebot (diff) | |
Finished extra functionality
Diffstat (limited to 'bot/exts')
| -rw-r--r-- | bot/exts/evergreen/avatar_modification/avatar_modify.py | 50 | 
1 files changed, 43 insertions, 7 deletions
| diff --git a/bot/exts/evergreen/avatar_modification/avatar_modify.py b/bot/exts/evergreen/avatar_modification/avatar_modify.py index 526ad3d0..940ff69e 100644 --- a/bot/exts/evergreen/avatar_modification/avatar_modify.py +++ b/bot/exts/evergreen/avatar_modification/avatar_modify.py @@ -9,6 +9,7 @@ from concurrent.futures import ThreadPoolExecutor  from pathlib import Path  import discord +from PIL import UnidentifiedImageError  from aiohttp import client_exceptions  from discord.ext import commands @@ -121,8 +122,9 @@ class AvatarModify(commands.Cog):          await ctx.send(embed=embed, file=file) -    @avatar_modify.group(name="reverse") +    @avatar_modify.group(name="reverse", root_aliases=['reverse'])      async def reverse(self, ctx: commands.Context) -> None: +        """Group for the reverse commands."""          if not ctx.invoked_subcommand:              await invoke_help_command(ctx) @@ -132,14 +134,48 @@ class AvatarModify(commands.Cog):          await ctx.send(f"> {text[::-1]}", allowed_mentions=discord.AllowedMentions.none())      @reverse.command(name="image") -    async def image(self, ctx: commands.Context) -> None: -        """Sends a reversed version of the users profile picture.""" +    async def photo(self, ctx: commands.Context) -> None: +        """ +        Sends a reversed version of the users profile picture. + +        If an image is attached, the given image will be flipped. +        """          async with ctx.typing(): -            user = self._fetch_user(ctx.author.id) +            user = await self._fetch_user(ctx.author.id)              if not user:                  await ctx.send(f"{Emojis.cross_mark} Could not get user info.")                  return -             +            if ctx.message.attachments: +                url = str(ctx.message.attachments[0]) +                async with self.bot.http_session.get(url) as r: +                    image_bytes = await r.read() +                    filename = file_safe_name("reverse_image", ctx.author.display_name) + +                    try: +                        file = await in_executor( +                            PfpEffects.apply_effect, +                            image_bytes, +                            PfpEffects.flip_effect, +                            filename +                        ) +                    except UnidentifiedImageError: +                        raise commands.BadArgument( +                            "The attachment given is not an image. Please ensure you send an image." +                        ) +                        return + +                    embed = discord.Embed( +                        title="Your reversed image.", +                        description="Here is your reversed image. I think it looks somewhat flipped." +                    ) + +                    embed.set_image(url=f"attachment://{filename}") +                    embed.set_footer(text=f"Made by {ctx.author.display_name}.", icon_url=user.avatar_url) + +                    await ctx.send(embed=embed, file=file) + +                    return +              image_bytes = await user.avatar_url_as(size=1024).read()              filename = file_safe_name("reverse_avatar", ctx.author.display_name) @@ -151,11 +187,11 @@ class AvatarModify(commands.Cog):              )              embed = discord.Embed( -                title="Your reversed avatar.",  +                title="Your reversed avatar.",                  description="Here is your reversed avatar. I think it is a spitting image of you."              ) -            embed.set_image(f"attachment://{filename}") +            embed.set_image(url=f"attachment://{filename}")              embed.set_footer(text=f"Made by {ctx.author.display_name}.", icon_url=user.avatar_url)              await ctx.send(embed=embed, file=file) | 
