Browse Source

Publicly expose a type property for all channels.

Fix #2185
pull/2209/head
Rapptz 6 years ago
parent
commit
7e2da1c93b
  1. 2
      discord/abc.py
  2. 30
      discord/channel.py
  3. 2
      discord/state.py

2
discord/abc.py

@ -611,7 +611,7 @@ class GuildChannel:
base_attrs['name'] = name or self.name
guild_id = self.guild.id
cls = self.__class__
data = await self._state.http.create_channel(guild_id, self._type, reason=reason, **base_attrs)
data = await self._state.http.create_channel(guild_id, self.type.value, reason=reason, **base_attrs)
obj = cls(state=self._state, guild=self.guild, data=data)
# temporarily add it to the cache

30
discord/channel.py

@ -133,6 +133,11 @@ class TextChannel(discord.abc.Messageable, discord.abc.GuildChannel, Hashable):
async def _get_channel(self):
return self
@property
def type(self):
""":class:`ChannelType`: The channel's Discord type."""
return try_enum(ChannelType, self._type)
@property
def _sorting_bucket(self):
return ChannelType.text.value
@ -516,8 +521,9 @@ class VoiceChannel(discord.abc.Connectable, discord.abc.GuildChannel, Hashable):
return self.guild.id, self.id
@property
def _type(self):
return ChannelType.voice.value
def type(self):
""":class:`ChannelType`: The channel's Discord type."""
return ChannelType.voice
def _update(self, guild, data):
self.guild = guild
@ -660,8 +666,9 @@ class CategoryChannel(discord.abc.GuildChannel, Hashable):
return ChannelType.category.value
@property
def _type(self):
return ChannelType.category.value
def type(self):
""":class:`ChannelType`: The channel's Discord type."""
return ChannelType.category
def is_nsfw(self):
"""Checks if the category is NSFW."""
@ -819,8 +826,9 @@ class StoreChannel(discord.abc.GuildChannel, Hashable):
return ChannelType.text.value
@property
def _type(self):
return ChannelType.store.value
def type(self):
""":class:`ChannelType`: The channel's Discord type."""
return ChannelType.store
def permissions_for(self, member):
base = super().permissions_for(member)
@ -928,8 +936,9 @@ class DMChannel(discord.abc.Messageable, Hashable):
return '<DMChannel id={0.id} recipient={0.recipient!r}>'.format(self)
@property
def _type(self):
return ChannelType.private.value
def type(self):
""":class:`ChannelType`: The channel's Discord type."""
return ChannelType.private
@property
def created_at(self):
@ -1041,8 +1050,9 @@ class GroupChannel(discord.abc.Messageable, Hashable):
return '<GroupChannel id={0.id} name={0.name!r}>'.format(self)
@property
def _type(self):
return ChannelType.group.value
def type(self):
""":class:`ChannelType`: The channel's Discord type."""
return ChannelType.group
@property
def icon_url(self):

2
discord/state.py

@ -367,7 +367,7 @@ class ConnectionState:
message = Message(channel=channel, data=data, state=self)
self.dispatch('message', message)
self._messages.append(message)
if channel and channel._type in (0, 5):
if channel and channel.__class__ is TextChannel:
channel.last_message_id = message.id
def parse_message_delete(self, data):

Loading…
Cancel
Save