tux.cogs.info.avatar
¶
Classes:
Name | Description |
---|---|
Avatar | |
Classes¶
Avatar(bot: Tux)
¶
Bases: Cog
Methods:
Name | Description |
---|---|
slash_avatar | Get the global/server avatar for a member. |
prefix_avatar | Get the global/server avatar for a member. |
send_avatar | Send the global/server avatar for a member. |
create_avatar_file | Create a discord file from an avatar url. |
Source code in tux/cogs/info/avatar.py
Functions¶
slash_avatar(interaction: discord.Interaction, member: discord.Member) -> None
async
¶
Get the global/server avatar for a member.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
interaction | Interaction | The discord interaction object. | required |
member | Member | The member to get the avatar of. | required |
Source code in tux/cogs/info/avatar.py
Python
@app_commands.command(name="avatar")
@app_commands.guild_only()
async def slash_avatar(
self,
interaction: discord.Interaction,
member: discord.Member,
) -> None:
"""
Get the global/server avatar for a member.
Parameters
----------
interaction : discord.Interaction
The discord interaction object.
member : discord.Member
The member to get the avatar of.
"""
await self.send_avatar(interaction, member)
prefix_avatar(ctx: commands.Context[Tux], member: discord.Member | None = None) -> None
async
¶
Get the global/server avatar for a member.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ctx | Context[Tux] | The context in which the command is being invoked. | required |
member | Member | The member to get the avatar of. | None |
Source code in tux/cogs/info/avatar.py
Python
@commands.command(
name="avatar",
aliases=["av"],
)
@commands.guild_only()
async def prefix_avatar(
self,
ctx: commands.Context[Tux],
member: discord.Member | None = None,
) -> None:
"""
Get the global/server avatar for a member.
Parameters
----------
ctx : commands.Context[Tux]
The context in which the command is being invoked.
member : discord.Member
The member to get the avatar of.
"""
await self.send_avatar(ctx, member)
send_avatar(source: commands.Context[Tux] | discord.Interaction, member: discord.Member | None = None) -> None
async
¶
Send the global/server avatar for a member.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
source | Context[Tux] | Interaction | The source object for sending the message. | required |
member | Member | The member to get the avatar of. | None |
Source code in tux/cogs/info/avatar.py
Python
async def send_avatar(
self,
source: commands.Context[Tux] | discord.Interaction,
member: discord.Member | None = None,
) -> None:
"""
Send the global/server avatar for a member.
Parameters
----------
source : commands.Context[Tux] | discord.Interaction
The source object for sending the message.
member : discord.Member
The member to get the avatar of.
"""
if member is not None:
guild_avatar = member.guild_avatar.url if member.guild_avatar else None
global_avatar = member.avatar.url if member.avatar else None
files = [await self.create_avatar_file(avatar) for avatar in [guild_avatar, global_avatar] if avatar]
if files:
if isinstance(source, discord.Interaction):
await source.response.send_message(files=files)
else:
await source.reply(files=files)
else:
message = "Member has no avatar."
if isinstance(source, discord.Interaction):
await source.response.send_message(content=message, ephemeral=True, delete_after=30)
else:
await source.reply(content=message, ephemeral=True, delete_after=30)
elif isinstance(source, commands.Context):
member = await commands.MemberConverter().convert(source, str(source.author.id))
guild_avatar = member.guild_avatar.url if member.guild_avatar else None
global_avatar = member.avatar.url if member.avatar else None
files = [await self.create_avatar_file(avatar) for avatar in [guild_avatar, global_avatar] if avatar]
if files:
await source.reply(files=files)
else:
await source.reply("You have no avatar.", ephemeral=True, delete_after=30)
create_avatar_file(url: str) -> discord.File
async
staticmethod
¶
Create a discord file from an avatar url.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
url | str | The url of the avatar. | required |
Returns:
Type | Description |
---|---|
File | The discord file. |
Source code in tux/cogs/info/avatar.py
Python
@staticmethod
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()
content_type = response.headers.get("Content-Type")
extension = mimetypes.guess_extension(content_type) or ".png"
image_data = response.content
image_file = BytesIO(image_data)
image_file.seek(0)
return discord.File(image_file, filename=f"avatar{extension}")