From ccfddb850aa387cd0b4788e61d974a278b4657f1 Mon Sep 17 00:00:00 2001 From: R3T4RD3D Date: Tue, 11 Apr 2017 00:49:23 +0200 Subject: [PATCH] Add docstrings to types.user module --- disco/types/user.py | 71 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/disco/types/user.py b/disco/types/user.py index 2777c5e..aae5313 100644 --- a/disco/types/user.py +++ b/disco/types/user.py @@ -12,6 +12,26 @@ DefaultAvatars = Enum( class User(SlottedModel, with_equality('id'), with_hash('id')): + """ + User object. + + Attributes + ---------- + id : snowflake + The ID of this user. + username : str + The name of the user. + avatar : str + The user\'s avatar hash. + discriminator : str + The user\'s discriminator (4-digit discord-tag). + bot : bool + Whether this user is a bot. + verified : bool + Whether the email on this account has been verified. + email : str + The user\'s email address. + """ id = Field(snowflake) username = Field(text) avatar = Field(binary) @@ -23,6 +43,21 @@ class User(SlottedModel, with_equality('id'), with_hash('id')): presence = Field(None) def get_avatar_url(self, fmt='webp', size=1024): + """ + Returns the URL to the user\'s avatar. + + Args + ---- + fmt : str + Imageformat of the avatar. + size : int + Size of the avatar. + + Returns + ------- + str + The URL to the user\'s avatar. + """ if not self.avatar: return 'https://cdn.discordapp.com/embed/avatars/{}.png'.format(self.default_avatar.value) @@ -35,14 +70,23 @@ class User(SlottedModel, with_equality('id'), with_hash('id')): @property def default_avatar(self): + """ + Returns the Default avatar url of the user. + """ return DefaultAvatars[int(self.discriminator) % len(DefaultAvatars.attrs)] @property def avatar_url(self): + """ + Returns the avatar url of the user. + """ return self.get_avatar_url() @property def mention(self): + """ + Formated string that mentions the user. + """ return '<@{}>'.format(self.id) def open_dm(self): @@ -70,12 +114,39 @@ Status = Enum( class Game(SlottedModel): + """ + Represents the activity of a user. + + Attributes + ---------- + type : `GameType` + Whether the user is just playing the game or streaming. + + Possible values are: `DEFAULT` (Playing ...) and `STREAMING` (Streaming ...). + name : str + Name of the Game. + url : str + Stream URL. Only validated when `GameType` is `STREAMING`. + """ type = Field(GameType) name = Field(text) url = Field(text) class Presence(SlottedModel): + """ + Represents the Presence of a user. + + Attributes + ---------- + user : :class:`disco.types.user.User` + game : :class:`disco.types.user.Game` + The user\'s current activity. + status : `Status` + The user\'s current status. + + Possible values are: `ONLINE`, `IDLE`, `DND` (Do not Disturb) and `OFFLINE`. + """ user = Field(User, alias='user', ignore_dump=['presence']) game = Field(Game) status = Field(Status)