diff options
Diffstat (limited to 'bot/exts/halloween/spookyavatar.py')
| -rw-r--r-- | bot/exts/halloween/spookyavatar.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/bot/exts/halloween/spookyavatar.py b/bot/exts/halloween/spookyavatar.py new file mode 100644 index 00000000..268de3fb --- /dev/null +++ b/bot/exts/halloween/spookyavatar.py @@ -0,0 +1,53 @@ +import logging +import os +from io import BytesIO + +import aiohttp +import discord +from PIL import Image +from discord.ext import commands + +from bot.utils.halloween import spookifications + +log = logging.getLogger(__name__) + + +class SpookyAvatar(commands.Cog): + """A cog that spookifies an avatar.""" + + def __init__(self, bot: commands.Bot): + self.bot = bot + + async def get(self, url: str) -> bytes: + """Returns the contents of the supplied URL.""" + async with aiohttp.ClientSession() as session: + async with session.get(url) as resp: + return await resp.read() + + @commands.command(name='savatar', aliases=('spookyavatar', 'spookify'), + brief='Spookify an user\'s avatar.') + async def spooky_avatar(self, ctx: commands.Context, user: discord.Member = None) -> None: + """A command to print the user's spookified avatar.""" + if user is None: + user = ctx.message.author + + async with ctx.typing(): + embed = discord.Embed(colour=0xFF0000) + embed.title = "Is this you or am I just really paranoid?" + embed.set_author(name=str(user.name), icon_url=user.avatar_url) + + image_bytes = await ctx.author.avatar_url.read() + im = Image.open(BytesIO(image_bytes)) + modified_im = spookifications.get_random_effect(im) + modified_im.save(str(ctx.message.id)+'.png') + f = discord.File(str(ctx.message.id)+'.png') + embed.set_image(url='attachment://'+str(ctx.message.id)+'.png') + + await ctx.send(file=f, embed=embed) + os.remove(str(ctx.message.id)+'.png') + + +def setup(bot: commands.Bot) -> None: + """Spooky avatar Cog load.""" + bot.add_cog(SpookyAvatar(bot)) + log.info("SpookyAvatar cog loaded") |