Source code for image_processor_client.image_methods.discord
from .._http import HttpImageClient
[docs]class DiscordMethods(object):
"""Base class for available discord imaging methods."""
def __init__(self, http: HttpImageClient):
self.http = http
[docs] async def ss_message(
self,
name: str,
message_content: str,
avatar_url: str,
name_color: tuple = None,
time_stamp: str = None
):
"""Requests server to process screenshot of a discord message using provided parameters and returns image\
bytes.
Note
----
For now it only supports text message content.
Parameters
----------
name : str
Name of discord User or Member who sent the message.
message_content : str
Full clean message content
avatar_url : str
Direct avatar URL of discord User or Member who sent the message.
name_color : tuple, optional
A tuple representing RGB color of discord User or Message who sent the message. It's default value\
is set to ``(255, 255, 255)``.
time_stamp : str, optional
String representing date and time stamp of epoch when message was sent. Uses ``Today at 11:38 AM``\
if not provided.
Returns
-------
bytes
Binary image bytes which appears as screenshot of a discord message.
"""
if name_color:
name_color = list(name_color)
kwargs = {
"name": name,
"message_content": message_content,
"avatar_url": avatar_url,
"name_color": name_color,
"time_stamp": time_stamp
}
data = await self.http.ss_discord_message(**kwargs)
return data.read_data
[docs] async def get_welcome_banner(
self, banner_url: str, avatar_url: str, name: str, discriminator: int, text: str, **options
):
"""Requests for welcome banner mostly used by discord servers to welcome newly joined members with custom text.
Note
----
It supports most of the image formats including GIFs.
Parameters
----------
banner_url: str
Direct URL of the banner file to be used as template. It can also be a GIF.
avatar_url: str
Direct URL of member's avatar to be pasted on banner.
name: str
Discord name of new member or anything.
discriminator : int
The discriminator of the Discord user.
text: str
Custom text to be written after name.
border_color: str, optional
Specify banner border color.
font_color: str, optional
Specify font color for banner text.
avatar_border_color: str, optional
Specify border color for avatar.
Returns
-------
bytes
Binary image bytes of banner. It can also be a GIF.
"""
kwargs = {
"banner_url": banner_url,
"avatar_url": avatar_url,
"name": name,
"text": text,
"discriminator": f"#{discriminator}"
}
kwargs.update(options)
data = await self.http.fetch_welcome_banner(**kwargs)
return data.read_data
REQUIRED_PROFILE_RANK_CARD_DATA = [
"name", "avatar_url", "discriminator", "text_rank", "voice_rank",
"text_xp", "text_target_xp", "text_total_xp", "text_level",
"voice_xp", "voice_target_xp", "voice_total_xp", "voice_level",
]
[docs] async def get_profile_rank_card(self, **kwargs):
"""Requests to generate member's rank card bounded to every discord guild.
Parameters
----------
name : str
Discord name of the member. Without discriminator.
discriminator : str
Discord discriminator of the member.
avatar_url : str
Direct link to member's avatar URL.
text_rank : int
Member's text rank in the guild.
voice_rank : int
Member's voice rank in the guild.
text_xp : int
Member's text xp.
text_target_xp : int
The xp needed for the next level.
text_total_xp : int
Total text xp of the member.
text_level : int
Text chat level of the member.
voice_xp : int
Member's voice xp.
voice_target_xp : int
The xp needed for next voice level.
voice_total_xp : int
Total voice xp of the member.
voice_level : int
Voice level of the member.
Returns
-------
bytes
Binary image bytes of generated rank card of the member.
Raises
------
KeyError
Raise KeyError when any of the required data key is not present.
"""
if not all(key in kwargs for key in self.REQUIRED_PROFILE_RANK_CARD_DATA):
raise KeyError
data = await self.http.fetch_profile_rank_card(**kwargs)
return data.read_data