mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-07-21 10:26:47 +00:00
Server members are now their own class that subclass Users.
Roles are also now properly parsed.
This commit is contained in:
parent
bcaf33e304
commit
108f0a6c45
@ -21,7 +21,7 @@ __build__ = 0x002010
|
|||||||
from client import Client
|
from client import Client
|
||||||
from user import User
|
from user import User
|
||||||
from channel import Channel, PrivateChannel
|
from channel import Channel, PrivateChannel
|
||||||
from server import Server
|
from server import Server, Member, Permissions, Role
|
||||||
from message import Message
|
from message import Message
|
||||||
from errors import *
|
from errors import *
|
||||||
from permissions import Permissions
|
from permissions import Permissions
|
||||||
|
@ -34,7 +34,7 @@ from sys import platform as sys_platform
|
|||||||
from errors import InvalidEventName, InvalidDestination
|
from errors import InvalidEventName, InvalidDestination
|
||||||
from user import User
|
from user import User
|
||||||
from channel import Channel, PrivateChannel
|
from channel import Channel, PrivateChannel
|
||||||
from server import Server
|
from server import Server, Member, Permissions, Role
|
||||||
from message import Message
|
from message import Message
|
||||||
|
|
||||||
def _null_event(*args, **kwargs):
|
def _null_event(*args, **kwargs):
|
||||||
@ -148,8 +148,8 @@ class Client(object):
|
|||||||
guilds = data.get('guilds')
|
guilds = data.get('guilds')
|
||||||
|
|
||||||
for guild in guilds:
|
for guild in guilds:
|
||||||
guild['roles'] = [role.get('name') for role in guild['roles']]
|
guild['roles'] = [Role(**role) for role in guild['roles']]
|
||||||
guild['members'] = [User(**member['user']) for member in guild['members']]
|
guild['members'] = [Member(**member) for member in guild['members']]
|
||||||
|
|
||||||
self.servers.append(Server(**guild))
|
self.servers.append(Server(**guild))
|
||||||
channels = [Channel(server=self.servers[-1], **channel) for channel in guild['channels']]
|
channels = [Channel(server=self.servers[-1], **channel) for channel in guild['channels']]
|
||||||
|
@ -25,6 +25,59 @@ DEALINGS IN THE SOFTWARE.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from user import User
|
from user import User
|
||||||
|
from permissions import Permissions
|
||||||
|
import datetime, re
|
||||||
|
|
||||||
|
class Role(object):
|
||||||
|
""""Represents a Discord role in a :class:`Server`.
|
||||||
|
|
||||||
|
Instance attributes:
|
||||||
|
|
||||||
|
.. attribute:: id
|
||||||
|
|
||||||
|
The ID for the role.
|
||||||
|
.. attribute:: name
|
||||||
|
|
||||||
|
The name of the role.
|
||||||
|
.. attribute:: permissions
|
||||||
|
|
||||||
|
A :class:`Permissions` that represents the role's permissions.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, id, name, permissions):
|
||||||
|
self.id = id
|
||||||
|
self.name = name
|
||||||
|
self.permissions = Permissions(permissions)
|
||||||
|
|
||||||
|
class Member(User):
|
||||||
|
"""Represents a Discord member to a :class:`Server`.
|
||||||
|
|
||||||
|
This is a subclass of :class:`User` that extends more functionality
|
||||||
|
that server members have such as roles and permissions.
|
||||||
|
|
||||||
|
Instance attributes:
|
||||||
|
|
||||||
|
.. attribute:: deaf
|
||||||
|
|
||||||
|
Specifies if the member is currently deafened by the user.
|
||||||
|
.. attribute:: mute
|
||||||
|
|
||||||
|
Specifies if the member is currently muted by the user.
|
||||||
|
.. attribute:: roles
|
||||||
|
|
||||||
|
An array of :class:`Role` that the member belongs to.
|
||||||
|
.. attribute:: joined_at
|
||||||
|
|
||||||
|
A datetime object that specifies the date and time that the member joined the server for
|
||||||
|
the first time.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, deaf, joined_at, user, roles, mute):
|
||||||
|
super(Member, self).__init__(**user)
|
||||||
|
self.deaf = deaf
|
||||||
|
self.mute = mute
|
||||||
|
self.joined_at = datetime.datetime(*map(int, re.split(r'[^\d]', joined_at.replace('+00:00', ''))))
|
||||||
|
self.roles = roles
|
||||||
|
|
||||||
class Server(object):
|
class Server(object):
|
||||||
"""Represents a Discord server.
|
"""Represents a Discord server.
|
||||||
@ -36,7 +89,7 @@ class Server(object):
|
|||||||
The server name.
|
The server name.
|
||||||
.. attribute:: roles
|
.. attribute:: roles
|
||||||
|
|
||||||
An array of role names.
|
An array of :class:`Role` that the server has available.
|
||||||
.. attribute:: region
|
.. attribute:: region
|
||||||
|
|
||||||
The region the server belongs on.
|
The region the server belongs on.
|
||||||
@ -48,7 +101,7 @@ class Server(object):
|
|||||||
The channel ID for the AFK channel. None if it doesn't exist.
|
The channel ID for the AFK channel. None if it doesn't exist.
|
||||||
.. attribute:: members
|
.. attribute:: members
|
||||||
|
|
||||||
An array of :class:`User` that are currently on the server.
|
An array of :class:`Member` that are currently on the server.
|
||||||
.. attribute:: channels
|
.. attribute:: channels
|
||||||
|
|
||||||
An array of :class:`Channel` that are currently on the server.
|
An array of :class:`Channel` that are currently on the server.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user