Change Permissions constants to be class method factories instead.

This commit is contained in:
Rapptz
2015-10-22 21:24:00 -04:00
parent 8b8312608c
commit b94dffaf87
2 changed files with 47 additions and 3 deletions

View File

@ -80,6 +80,49 @@ class Permissions(object):
def __init__(self, permissions=0, **kwargs):
self.value = permissions
@classmethod
def none(cls):
"""A factory method that creates a :class:`Permission` with all
permissions set to False."""
return cls(0)
@classmethod
def all(cls):
"""A factory method that creates a :class:`Permission` with all
permissions set to True."""
return cls(0b00000011111100111111110000111111)
@classmethod
def all_channel(cls):
"""A :class:`Permission` with all channel-specific permissions set to
True and the server-specific ones set to False. The server-specific
permissions are currently:
- can_manager_server
- can_kick_members
- can_ban_members
"""
return cls(0b00000011111100111111110000011001)
@classmethod
def general(cls):
"""A factory method that creates a :class:`Permission` with all
"General" permissions set to True."""
return cls(0b00000000000000000000000000111111)
@classmethod
def text(cls):
"""A factory method that creates a :class:`Permission` with all
"Text" permissions set to True."""
return cls(0b00000000000000111111110000000000)
@classmethod
def voice(cls):
"""A factory method that creates a :class:`Permission` with all
"Voice" permissions set to True."""
return cls(0b00000011111100000000000000000000)
def _bit(self, index):
return bool((self.value >> index) & 1)