From f99e26377e78ee312f130eafffe67ae18d595849 Mon Sep 17 00:00:00 2001 From: sgoudham Date: Sun, 13 Sep 2020 22:58:35 +0100 Subject: [PATCH] Making it so that you can get the people's avatar greyscaled --- cogs/info.py | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/cogs/info.py b/cogs/info.py index 95a58638..167e61d7 100644 --- a/cogs/info.py +++ b/cogs/info.py @@ -15,16 +15,18 @@ # along with this program. If not, see . import datetime +import io import string from asyncio.subprocess import Process from platform import python_version from time import time from typing import Optional, Union -from discord import Embed, Role +from PIL import Image +from discord import Embed, Role, File from discord import Member, TextChannel from discord import __version__ as discord_version -from discord.ext.commands import BucketType, cooldown, bot_has_permissions, guild_only, Cog +from discord.ext.commands import bot_has_permissions, guild_only, Cog, group from discord.ext.commands import command from psutil import Process, virtual_memory @@ -436,8 +438,7 @@ class Info(Cog): await ctx.send(embed=stats) - @command(name="avatar") - @cooldown(1, 1, BucketType.user) + @group(name="avatar", invoke_without_command=True, case_insensitive=True, usage="`[member]| [member]`") @bot_has_permissions(embed_links=True) async def get_user_avatar(self, ctx, *, member: Optional[Member] = None): """ @@ -460,6 +461,32 @@ class Info(Cog): await ctx.send(embed=embed) + @get_user_avatar.command(name="greyscale", aliases=["gs"]) + @bot_has_permissions(embed_links=True) + async def greyscale_user_avatar(self, ctx, *, member: Optional[Member] = None): + """Get the greyscale avatar of the member""" + + # Get member mentioned or set to author + member = ctx.author if not member else member + + attach = await member.avatar_url.read() + image = Image.open(io.BytesIO(attach)).convert('LA') + + # Save new grayscale image as bytes + file = io.BytesIO() + image.save(file, format='PNG') + file.seek(0) + + # Send image in an embed + f = File(file, "image.png") + embed = Embed(title=f"{member}'s Avatar | Greyscale", + colour=self.bot.admin_colour, + timestamp=datetime.datetime.utcnow()) + embed.set_image(url="attachment://image.png") + embed.set_footer(text=f"Requested by {ctx.author}", icon_url=ctx.author.avatar_url) + + await ctx.send(file=f, embed=embed) + def setup(bot): bot.add_cog(Info(bot))