Add enumerators instead of strings.
Changes channel type, status and server region into 3.4 enums.
This commit is contained in:
		@@ -26,44 +26,37 @@ DEALINGS IN THE SOFTWARE.
 | 
			
		||||
from copy import deepcopy
 | 
			
		||||
from . import utils
 | 
			
		||||
from .permissions import Permissions
 | 
			
		||||
from .enums import ChannelType
 | 
			
		||||
from collections import namedtuple
 | 
			
		||||
 | 
			
		||||
Overwrites = namedtuple('Overwrites', 'id allow deny type')
 | 
			
		||||
 | 
			
		||||
class Channel(object):
 | 
			
		||||
class Channel:
 | 
			
		||||
    """Represents a Discord server channel.
 | 
			
		||||
 | 
			
		||||
    Instance attributes:
 | 
			
		||||
 | 
			
		||||
    .. attribute:: name
 | 
			
		||||
 | 
			
		||||
    Attributes
 | 
			
		||||
    -----------
 | 
			
		||||
    name : str
 | 
			
		||||
        The channel name.
 | 
			
		||||
    .. attribute:: server
 | 
			
		||||
 | 
			
		||||
        The :class:`Server` the channel belongs to.
 | 
			
		||||
    .. attribute:: id
 | 
			
		||||
 | 
			
		||||
    server : :class:`Server`
 | 
			
		||||
        The server the channel belongs to.
 | 
			
		||||
    id : str
 | 
			
		||||
        The channel ID.
 | 
			
		||||
    .. attribute:: topic
 | 
			
		||||
 | 
			
		||||
    topic : Optional[str]
 | 
			
		||||
        The channel's topic. None if it doesn't exist.
 | 
			
		||||
    .. attribute:: is_private
 | 
			
		||||
 | 
			
		||||
    is_private : bool
 | 
			
		||||
        ``True`` if the channel is a private channel (i.e. PM). ``False`` in this case.
 | 
			
		||||
    .. attribute:: position
 | 
			
		||||
 | 
			
		||||
    position : int
 | 
			
		||||
        The position in the channel list.
 | 
			
		||||
    .. attribute:: type
 | 
			
		||||
 | 
			
		||||
        The channel type. Usually ``'voice'`` or ``'text'``.
 | 
			
		||||
    .. attribute:: changed_roles
 | 
			
		||||
 | 
			
		||||
    type : :class:`ChannelType`
 | 
			
		||||
        The channel type. There is a chance that the type will be ``str`` if
 | 
			
		||||
        the channel type is not within the ones recognised by the enumerator.
 | 
			
		||||
    changed_roles
 | 
			
		||||
        A list of :class:`Roles` that have been overridden from their default
 | 
			
		||||
        values in the :attr:`Server.roles` attribute.
 | 
			
		||||
    .. attribute:: voice_members
 | 
			
		||||
 | 
			
		||||
    voice_members
 | 
			
		||||
        A list of :class:`Members` that are currently inside this voice channel.
 | 
			
		||||
        If :attr:`type` is not ``'voice'`` then this is always an empty array.
 | 
			
		||||
        If :attr:`type` is not :attr:`ChannelType.voice` then this is always an empty array.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, **kwargs):
 | 
			
		||||
@@ -78,6 +71,11 @@ class Channel(object):
 | 
			
		||||
        self.is_private = False
 | 
			
		||||
        self.position = kwargs.get('position')
 | 
			
		||||
        self.type = kwargs.get('type')
 | 
			
		||||
        try:
 | 
			
		||||
            self.type = ChannelType(self.type)
 | 
			
		||||
        except:
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        self.changed_roles = []
 | 
			
		||||
        self._permission_overwrites = []
 | 
			
		||||
        for overridden in kwargs.get('permission_overwrites', []):
 | 
			
		||||
@@ -98,11 +96,11 @@ class Channel(object):
 | 
			
		||||
            self.changed_roles.append(override)
 | 
			
		||||
 | 
			
		||||
    def is_default_channel(self):
 | 
			
		||||
        """Checks if this is the default channel for the :class:`Server` it belongs to."""
 | 
			
		||||
        """bool : Indicates if this is the default channel for the :class:`Server` it belongs to."""
 | 
			
		||||
        return self.server.id == self.id
 | 
			
		||||
 | 
			
		||||
    def mention(self):
 | 
			
		||||
        """Returns a string that allows you to mention the channel."""
 | 
			
		||||
        """str : The string that allows you to mention the channel."""
 | 
			
		||||
        return '<#{0.id}>'.format(self)
 | 
			
		||||
 | 
			
		||||
    def permissions_for(self, member):
 | 
			
		||||
@@ -116,8 +114,15 @@ class Channel(object):
 | 
			
		||||
        - Member overrides
 | 
			
		||||
        - Whether the channel is the default channel.
 | 
			
		||||
 | 
			
		||||
        :param member: The :class:`Member` to resolve permissions for.
 | 
			
		||||
        :return: The resolved :class:`Permissions` for the :class:`Member`.
 | 
			
		||||
        Parameters
 | 
			
		||||
        ----------
 | 
			
		||||
        member : :class:`Member`
 | 
			
		||||
            The member to resolve permissions for.
 | 
			
		||||
 | 
			
		||||
        Returns
 | 
			
		||||
        -------
 | 
			
		||||
        :class:`Permissions`
 | 
			
		||||
            The resolved permissions for the member.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        # The current cases can be explained as:
 | 
			
		||||
@@ -173,19 +178,16 @@ class Channel(object):
 | 
			
		||||
 | 
			
		||||
        return base
 | 
			
		||||
 | 
			
		||||
class PrivateChannel(object):
 | 
			
		||||
class PrivateChannel:
 | 
			
		||||
    """Represents a Discord private channel.
 | 
			
		||||
 | 
			
		||||
    Instance attributes:
 | 
			
		||||
 | 
			
		||||
    .. attribute:: user
 | 
			
		||||
 | 
			
		||||
        The :class:`User` in the private channel.
 | 
			
		||||
    .. attribute:: id
 | 
			
		||||
 | 
			
		||||
    Attributes
 | 
			
		||||
    ----------
 | 
			
		||||
    user : :class:`User`
 | 
			
		||||
        The user you are participating with in the private channel.
 | 
			
		||||
    id : str
 | 
			
		||||
        The private channel ID.
 | 
			
		||||
    .. attribute:: is_private
 | 
			
		||||
 | 
			
		||||
    is_private : bool
 | 
			
		||||
        ``True`` if the channel is a private channel (i.e. PM). ``True`` in this case.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
@@ -207,8 +209,15 @@ class PrivateChannel(object):
 | 
			
		||||
        - can_manage_messages: You cannot delete others messages in a PM.
 | 
			
		||||
        - can_mention_everyone: There is no one to mention in a PM.
 | 
			
		||||
 | 
			
		||||
        :param user: The :class:`User` to check permissions for.
 | 
			
		||||
        :return: A :class:`Permission` with the resolved permission value.
 | 
			
		||||
        Parameters
 | 
			
		||||
        -----------
 | 
			
		||||
        user : :class:`User`
 | 
			
		||||
            The user to check permissions for.
 | 
			
		||||
 | 
			
		||||
        Returns
 | 
			
		||||
        --------
 | 
			
		||||
        :class:`Permission`
 | 
			
		||||
            The resolved permissions for the user.
 | 
			
		||||
        """
 | 
			
		||||
 | 
			
		||||
        base = Permissions.TEXT
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user