Browse Source

document public get_ methods and make others private

pull/77/merge
Steven Berler 9 years ago
committed by Rapptz
parent
commit
777b5a09e2
  1. 10
      discord/client.py
  2. 14
      discord/server.py
  3. 70
      discord/state.py

10
discord/client.py

@ -213,7 +213,7 @@ class Client:
if isinstance(destination, (Channel, PrivateChannel, Server)):
return destination.id
elif isinstance(destination, User):
found = self.connection.get_private_channel_by_user(destination.id)
found = self.connection._get_private_channel_by_user(destination.id)
if found is None:
# Couldn't find the user, so start a PM with them first.
channel = yield from self.start_private_message(destination)
@ -429,6 +429,10 @@ class Client:
"""Returns a :class:`Channel` or :class:`PrivateChannel` with the following ID. If not found, returns None."""
return self.connection.get_channel(id)
def get_server(self, id):
"""Returns a :class:`Server` with the given ID. If not found, returns None."""
return self.connection._get_server(id)
def get_all_channels(self):
"""A generator that retrieves every :class:`Channel` the client can 'access'.
@ -853,7 +857,7 @@ class Client:
data = yield from r.json()
log.debug(request_success_log.format(response=r, json=payload, data=data))
channel = PrivateChannel(id=data['id'], user=user)
self.connection.add_private_channel(channel)
self.connection._add_private_channel(channel)
return channel
@asyncio.coroutine
@ -1746,7 +1750,7 @@ class Client:
# Invite management
def _fill_invite_data(self, data):
server = self.connection.get_server(data['guild']['id'])
server = self.connection._get_server(data['guild']['id'])
if server is not None:
ch_id = data['channel']['id']
channel = server.get_channel(ch_id)

14
discord/server.py

@ -99,12 +99,13 @@ class Server(Hashable):
return self._channels.values()
def get_channel(self, channel_id):
"""Returns a :class:`Channel` with the given ID. If not found, returns None."""
return self._channels.get(channel_id)
def add_channel(self, channel):
def _add_channel(self, channel):
self._channels[channel.id] = channel
def remove_channel(self, channel):
def _remove_channel(self, channel):
self._channels.pop(channel.id, None)
@property
@ -112,12 +113,13 @@ class Server(Hashable):
return self._members.values()
def get_member(self, user_id):
"""Returns a :class:`Member` with the given ID. If not found, returns None."""
return self._members.get(user_id)
def add_member(self, member):
def _add_member(self, member):
self._members[member.id] = member
def remove_member(self, member):
def _remove_member(self, member):
self._members.pop(member.id, None)
def __str__(self):
@ -163,7 +165,7 @@ class Server(Hashable):
if member.id == owner_id:
self.owner = member
self.add_member(member)
self._add_member(member)
for presence in guild.get('presences', []):
user_id = presence['user']['id']
@ -181,7 +183,7 @@ class Server(Hashable):
channels = guild['channels']
for c in channels:
channel = Channel(server=self, **c)
self.add_channel(channel)
self._add_channel(channel)
afk_id = guild.get('afk_channel_id')
self.afk_channel = self.get_channel(afk_id)

70
discord/state.py

@ -56,40 +56,40 @@ class ConnectionState:
def servers(self):
return self._servers.values()
def get_server(self, server_id):
def _get_server(self, server_id):
return self._servers.get(server_id)
def add_server(self, server):
def _add_server(self, server):
self._servers[server.id] = server
def remove_server(self, server):
def _remove_server(self, server):
self._servers.pop(server.id, None)
@property
def private_channels(self):
return self._private_channels.values()
def get_private_channel(self, channel_id):
def _get_private_channel(self, channel_id):
return self._private_channels.get(channel_id)
def get_private_channel_by_user(self, user_id):
def _get_private_channel_by_user(self, user_id):
return self._private_channels_by_user.get(user_id)
def add_private_channel(self, channel):
def _add_private_channel(self, channel):
self._private_channels[channel.id] = channel
self._private_channels_by_user[channel.user.id] = channel
def remove_private_channel(self, channel):
def _remove_private_channel(self, channel):
self._private_channels.pop(channel.id, None)
self._private_channels_by_user.pop(channel.user.id, None)
def _get_message(self, msg_id):
return utils.find(lambda m: m.id == msg_id, self.messages)
def _add_server(self, guild):
def _add_server_from_data(self, guild):
server = Server(**guild)
server.me = server.get_member(self.user.id)
self.add_server(server)
self._add_server(server)
return server
def parse_ready(self, data):
@ -97,10 +97,10 @@ class ConnectionState:
guilds = data.get('guilds')
for guild in guilds:
self._add_server(guild)
self._add_server_from_data(guild)
for pm in data.get('private_channels'):
self.add_private_channel(PrivateChannel(id=pm['id'],
self._add_private_channel(PrivateChannel(id=pm['id'],
user=User(**pm['recipient'])))
# we're all ready
@ -133,7 +133,7 @@ class ConnectionState:
older_message = message
def parse_presence_update(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
if server is not None:
status = data.get('status')
user = data['user']
@ -158,16 +158,16 @@ class ConnectionState:
self.user = User(**data)
def parse_channel_delete(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
if server is not None:
channel_id = data.get('id')
channel = server.get_channel(channel_id)
if channel is not None:
server.remove_channel(channel)
server._remove_channel(channel)
self.dispatch('channel_delete', channel)
def parse_channel_update(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
if server is not None:
channel_id = data.get('id')
channel = server.get_channel(channel_id)
@ -183,33 +183,33 @@ class ConnectionState:
recipient = User(**data.get('recipient'))
pm_id = data.get('id')
channel = PrivateChannel(id=pm_id, user=recipient)
self.add_private_channel(channel)
self._add_private_channel(channel)
else:
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
if server is not None:
channel = Channel(server=server, **data)
server.add_channel(channel)
server._add_channel(channel)
self.dispatch('channel_create', channel)
def parse_guild_member_add(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
member = Member(server=server, deaf=False, mute=False, **data)
member.roles.append(server.default_role)
server.add_member(member)
server._add_member(member)
self.dispatch('member_join', member)
def parse_guild_member_remove(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
if server is not None:
user_id = data['user']['id']
member = server.get_member(user_id)
if member is not None:
server.remove_member(member)
server._remove_member(member)
self.dispatch('member_remove', member)
def parse_guild_member_update(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
user_id = data['user']['id']
member = server.get_member(user_id)
if member is not None:
@ -232,7 +232,7 @@ class ConnectionState:
# GUILD_CREATE with unavailable in the response
# usually means that the server has become available
# and is therefore in the cache
server = self.get_server(data.get('id'))
server = self._get_server(data.get('id'))
if server is not None:
server.unavailable = False
self.dispatch('server_available', server)
@ -246,18 +246,18 @@ class ConnectionState:
# unavailable during the READY event and is now
# available, so it isn't in the cache...
server = self._add_server(data)
server = self._add_server_from_data(data)
self.dispatch('server_join', server)
def parse_guild_update(self, data):
server = self.get_server(data.get('id'))
server = self._get_server(data.get('id'))
if server is not None:
old_server = copy.copy(server)
server._from_data(data)
self.dispatch('server_update', old_server, server)
def parse_guild_delete(self, data):
server = self.get_server(data.get('id'))
server = self._get_server(data.get('id'))
if server is None:
return
@ -271,7 +271,7 @@ class ConnectionState:
# do a cleanup of the messages cache
self.messages = deque((msg for msg in self.messages if msg.server != server), maxlen=self.max_messages)
self.remove_server(server)
self._remove_server(server)
self.dispatch('server_remove', server)
@ -281,7 +281,7 @@ class ConnectionState:
# hence we don't remove it from cache or do anything
# strange with it, the main purpose of this event
# is mainly to dispatch to another event worth listening to for logging
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
if server is not None:
user_id = data.get('user', {}).get('id')
member = utils.get(server.members, id=user_id)
@ -289,14 +289,14 @@ class ConnectionState:
self.dispatch('member_ban', member)
def parse_guild_ban_remove(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
if server is not None:
if 'user' in data:
user = User(**data['user'])
self.dispatch('member_unban', server, user)
def parse_guild_role_create(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
role_data = data.get('role', {})
everyone = server.id == role_data.get('id')
role = Role(everyone=everyone, **role_data)
@ -304,7 +304,7 @@ class ConnectionState:
self.dispatch('server_role_create', server, role)
def parse_guild_role_delete(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
if server is not None:
role_id = data.get('role_id')
role = utils.find(lambda r: r.id == role_id, server.roles)
@ -316,7 +316,7 @@ class ConnectionState:
self.dispatch('server_role_delete', server, role)
def parse_guild_role_update(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
if server is not None:
role_id = data['role']['id']
role = utils.find(lambda r: r.id == role_id, server.roles)
@ -326,7 +326,7 @@ class ConnectionState:
self.dispatch('server_role_update', old_role, role)
def parse_voice_state_update(self, data):
server = self.get_server(data.get('guild_id'))
server = self._get_server(data.get('guild_id'))
if server is not None:
updated_members = server._update_voice_state(data)
self.dispatch('voice_state_update', *updated_members)
@ -358,6 +358,6 @@ class ConnectionState:
if channel is not None:
return channel
pm = self.get_private_channel(id)
pm = self._get_private_channel(id)
if pm is not None:
return pm

Loading…
Cancel
Save