Add useful repr to all data classes.
This commit is contained in:
		| @@ -341,6 +341,9 @@ class TextChannel(discord.abc.MessageChannel, CommonGuildChannel): | ||||
|         self.id = int(data['id']) | ||||
|         self._update(guild, data) | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<TextChannel id={0.id} name={0.name!r} position={0.position}>'.format(self) | ||||
|  | ||||
|     def _update(self, guild, data): | ||||
|         self.guild = guild | ||||
|         self.name = data['name'] | ||||
| @@ -435,6 +438,9 @@ class VoiceChannel(CommonGuildChannel): | ||||
|         self._update(guild, data) | ||||
|         self.voice_members = [] | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<VoiceChannel id={0.id} name={0.name!r} position={0.position}>'.format(self) | ||||
|  | ||||
|     def _update(self, guild, data): | ||||
|         self.guild = guild | ||||
|         self.name = data['name'] | ||||
| @@ -522,6 +528,9 @@ class DMChannel(discord.abc.MessageChannel, Hashable): | ||||
|     def __str__(self): | ||||
|         return 'Direct Message with %s' % self.recipient | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<DMChannel id={0.id} recipient={0.recipient!r}>'.format(self) | ||||
|  | ||||
|     @property | ||||
|     def created_at(self): | ||||
|         """Returns the direct message channel's creation time in UTC.""" | ||||
| @@ -620,6 +629,9 @@ class GroupChannel(discord.abc.MessageChannel, Hashable): | ||||
|  | ||||
|         return ', '.join(map(lambda x: x.name, self.recipients)) | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<GroupChannel id={0.id} name={0.name!r}>'.format(self) | ||||
|  | ||||
|     @property | ||||
|     def icon_url(self): | ||||
|         """Returns the channel's icon URL if available or an empty string otherwise.""" | ||||
|   | ||||
| @@ -67,6 +67,9 @@ class Colour: | ||||
|     def __str__(self): | ||||
|         return '#{:0>6x}'.format(self.value) | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<Colour value=%s>' % self.value | ||||
|  | ||||
|     def __hash__(self): | ||||
|         return hash(self.value) | ||||
|  | ||||
|   | ||||
| @@ -103,6 +103,9 @@ class Emoji(Hashable): | ||||
|     def __str__(self): | ||||
|         return "<:{0.name}:{0.id}>".format(self) | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<Emoji id={0.id} name={0.name!r}>'.format(self) | ||||
|  | ||||
|     @property | ||||
|     def created_at(self): | ||||
|         """Returns the emoji's creation time in UTC.""" | ||||
|   | ||||
| @@ -61,6 +61,9 @@ class Game: | ||||
|     def __str__(self): | ||||
|         return self.name | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<Game name={0.name!r} type={0.type!r} url={0.url!r}>'.format(self) | ||||
|  | ||||
|     def _iterator(self): | ||||
|         for attr in self.__slots__: | ||||
|             value = getattr(self, attr, None) | ||||
|   | ||||
| @@ -144,6 +144,10 @@ class Guild(Hashable): | ||||
|     def __str__(self): | ||||
|         return self.name | ||||
|  | ||||
|     def __repr__(self): | ||||
|         chunked = getattr(self, '_member_count', None) == len(self._members) | ||||
|         return '<Guild id={0.id} name={0.name!r} chunked={1}>'.format(self, chunked) | ||||
|  | ||||
|     def _update_voice_state(self, data, channel_id): | ||||
|         user_id = int(data['user_id']) | ||||
|         channel = self.get_channel(channel_id) | ||||
|   | ||||
| @@ -95,6 +95,9 @@ class Invite(Hashable): | ||||
|     def __str__(self): | ||||
|         return self.url | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<Invite code={0.code!r}>'.format(self) | ||||
|  | ||||
|     @property | ||||
|     def id(self): | ||||
|         """Returns the proper code portion of the invite.""" | ||||
|   | ||||
| @@ -152,7 +152,11 @@ class Member: | ||||
|         self.nick = data.get('nick', None) | ||||
|  | ||||
|     def __str__(self): | ||||
|         return self._user.__str__() | ||||
|         return str(self._user) | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<Member id={1.id} name={1.name!r} discriminator={1.discriminator!r}' \ | ||||
|                ' bot={1.bot} nick={0.nick!r} guild={0.guild!r}>'.format(self, self._user) | ||||
|  | ||||
|     def __eq__(self, other): | ||||
|         return isinstance(other, Member) and other._user.id == self._user.id and self.guild.id == other.guild.id | ||||
|   | ||||
| @@ -123,6 +123,9 @@ class Message: | ||||
|         self.reactions = [Reaction(message=self, data=d) for d in data.get('reactions', [])] | ||||
|         self._update(channel, data) | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<Message id={0.id} pinned={0.pinned} author={0.author!r}>'.format(self) | ||||
|  | ||||
|     def _try_patch(self, data, key, transform): | ||||
|         try: | ||||
|             value = data[key] | ||||
|   | ||||
| @@ -80,6 +80,9 @@ class Permissions: | ||||
|     def __hash__(self): | ||||
|         return hash(self.value) | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<Permissions value=%s>' % self.value | ||||
|  | ||||
|     def _perm_iterator(self): | ||||
|         for attr in dir(self): | ||||
|             # check if it's a property, because if so it's a permission | ||||
|   | ||||
| @@ -83,6 +83,9 @@ class Reaction: | ||||
|     def __hash__(self): | ||||
|         return hash(self.emoji) | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<Reaction emoji={0.emoji!r} me={0.me} count={0.count}>'.format(self) | ||||
|  | ||||
|     @asyncio.coroutine | ||||
|     def users(self, limit=100, after=None): | ||||
|         """|coro| | ||||
|   | ||||
| @@ -92,6 +92,9 @@ class Role(Hashable): | ||||
|     def __str__(self): | ||||
|         return self.name | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<Role id={0.id} name={0.name!r}>'.format(self) | ||||
|  | ||||
|     def __lt__(self, other): | ||||
|         if not isinstance(other, Role) or  not isinstance(self, Role): | ||||
|             return NotImplemented | ||||
|   | ||||
| @@ -80,6 +80,9 @@ class User: | ||||
|     def __hash__(self): | ||||
|         return hash(self.id) | ||||
|  | ||||
|     def __repr__(self): | ||||
|         return '<User id={0.id} name={0.name!r} discriminator={0.discriminator!r} bot={0.bot}>'.format(self) | ||||
|  | ||||
|     @property | ||||
|     def avatar_url(self): | ||||
|         """Returns a friendly URL version of the avatar variable the user has. An empty string if | ||||
|   | ||||
		Reference in New Issue
	
	Block a user