1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-03 05:23:11 +00:00
Lumi/modules/misc/avatar.py

59 lines
1.3 KiB
Python
Raw Normal View History

2024-06-21 19:36:59 +00:00
from io import BytesIO
import discord
import httpx
from loguru import logger
client = httpx.AsyncClient()
async def get_avatar(ctx, member: discord.Member | None = None) -> None:
"""
Get the avatar of a member.
Parameters:
-----------
interaction : discord.Interaction
The discord interaction object.
member : discord.Member
The member to get the avatar of.
"""
if member is None:
member = ctx.author
guild_avatar = member.guild_avatar.url if member.guild_avatar else None
profile_avatar = member.avatar.url if member.avatar else None
files = [
await create_avatar_file(avatar)
for avatar in [guild_avatar, profile_avatar]
if avatar
]
if files:
await ctx.respond(files=files)
else:
await ctx.respond(content="Member has no avatar.")
async def create_avatar_file(url: str) -> discord.File:
"""
Create a discord file from an avatar url.
Parameters:
-----------
url : str
The url of the avatar.
Returns:
--------
discord.File
The discord file.
"""
response = await client.get(url, timeout=10)
response.raise_for_status()
image_data = response.content
image_file = BytesIO(image_data)
image_file.seek(0)
return discord.File(image_file, filename="avatar.png")