diff options
| author | Rapptz <[email protected]> | 2016-10-17 18:25:23 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2017-01-03 09:51:54 -0500 |
| commit | d1d54a468a88323a8ef7798ff084a1371d5893ec (patch) | |
| tree | 21dd315df95acd2c8d6cf63cc51fa4cadc0c7155 /discord/state.py | |
| parent | Stateful Message and remove Invite.xkcd since it is removed. (diff) | |
| download | discord.py-d1d54a468a88323a8ef7798ff084a1371d5893ec.tar.xz discord.py-d1d54a468a88323a8ef7798ff084a1371d5893ec.zip | |
Rename Server to Guild everywhere.
Diffstat (limited to 'discord/state.py')
| -rw-r--r-- | discord/state.py | 276 |
1 files changed, 138 insertions, 138 deletions
diff --git a/discord/state.py b/discord/state.py index b33d11ae..4aa8d838 100644 --- a/discord/state.py +++ b/discord/state.py @@ -24,7 +24,7 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -from .server import Server +from .guild import Guild from .user import User from .game import Game from .emoji import Emoji @@ -49,7 +49,7 @@ class ListenerType(enum.Enum): Listener = namedtuple('Listener', ('type', 'future', 'predicate')) StateContext = namedtuple('StateContext', 'try_insert_user http') log = logging.getLogger(__name__) -ReadyState = namedtuple('ReadyState', ('launch', 'servers')) +ReadyState = namedtuple('ReadyState', ('launch', 'guilds')) class ConnectionState: def __init__(self, *, dispatch, chunker, syncer, http, loop, **options): @@ -69,7 +69,7 @@ class ConnectionState: self.session_id = None self._calls = {} self._users = {} - self._servers = {} + self._guilds = {} self._voice_clients = {} self._private_channels = {} # extra dict to look up private channels by user id @@ -129,17 +129,17 @@ class ConnectionState: return user @property - def servers(self): - return self._servers.values() + def guilds(self): + return self._guilds.values() - def _get_server(self, server_id): - return self._servers.get(server_id) + def _get_guild(self, guild_id): + return self._guilds.get(guild_id) - def _add_server(self, server): - self._servers[server.id] = server + def _add_guild(self, guild): + self._guilds[guild.id] = guild - def _remove_server(self, server): - self._servers.pop(server.id, None) + def _remove_guild(self, guild): + self._guilds.pop(guild.id, None) @property def private_channels(self): @@ -164,16 +164,16 @@ class ConnectionState: def _get_message(self, msg_id): return utils.find(lambda m: m.id == msg_id, self.messages) - def _add_server_from_data(self, guild): - server = Server(data=guild, state=self.ctx) - Server.me = property(lambda s: s.get_member(self.user.id)) - Server.voice_client = property(lambda s: self._get_voice_client(s.id)) - self._add_server(server) - return server + def _add_guild_from_data(self, guild): + guild = Guild(data=guild, state=self.ctx) + Guild.me = property(lambda s: s.get_member(self.user.id)) + Guild.voice_client = property(lambda s: self._get_voice_client(s.id)) + self._add_guild(guild) + return guild - def chunks_needed(self, server): - for chunk in range(math.ceil(server._member_count / 1000)): - yield self.receive_chunk(server.id) + def chunks_needed(self, guild): + for chunk in range(math.ceil(guild._member_count / 1000)): + yield self.receive_chunk(guild.id) @asyncio.coroutine def _delay_ready(self): @@ -184,15 +184,15 @@ class ConnectionState: launch.set() yield from asyncio.sleep(2, loop=self.loop) - servers = self._ready_state.servers + guilds = self._ready_state.guilds # get all the chunks chunks = [] - for server in servers: - chunks.extend(self.chunks_needed(server)) + for guild in guilds: + chunks.extend(self.chunks_needed(guild)) # we only want to request ~75 guilds per chunk request. - splits = [servers[i:i + 75] for i in range(0, len(servers), 75)] + splits = [guilds[i:i + 75] for i in range(0, len(guilds), 75)] for split in splits: yield from self.chunker(split) @@ -211,22 +211,22 @@ class ConnectionState: # call GUILD_SYNC after we're done chunking if not self.is_bot: - log.info('Requesting GUILD_SYNC for %s guilds' % len(self.servers)) - yield from self.syncer([s.id for s in self.servers]) + log.info('Requesting GUILD_SYNC for %s guilds' % len(self.guilds)) + yield from self.syncer([s.id for s in self.guilds]) # dispatch the event self.dispatch('ready') def parse_ready(self, data): - self._ready_state = ReadyState(launch=asyncio.Event(), servers=[]) + self._ready_state = ReadyState(launch=asyncio.Event(), guilds=[]) self.user = self.try_insert_user(data['user']) guilds = data.get('guilds') - servers = self._ready_state.servers - for guild in guilds: - server = self._add_server_from_data(guild) - if not self.is_bot or server.large: - servers.append(server) + guilds = self._ready_state.guilds + for guild_data in guilds: + guild = self._add_server_from_data(guild_data) + if not self.is_bot or guild.large: + guilds.append(guild) for pm in data.get('private_channels'): factory, _ = _channel_factory(pm['type']) @@ -324,22 +324,22 @@ class ConnectionState: self.dispatch('reaction_remove', reaction, member) def parse_presence_update(self, data): - server = self._get_server(utils._get_as_snowflake(data, 'guild_id')) - if server is None: + guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) + if guild is None: return status = data.get('status') user = data['user'] member_id = user['id'] - member = server.get_member(member_id) + member = guild.get_member(member_id) if member is None: if 'username' not in user: # sometimes we receive 'incomplete' member data post-removal. # skip these useless cases. return - member = self._make_member(server, data) - server._add_member(member) + member = self._make_member(guild, data) + guild._add_member(member) old_member = copy.copy(member) member._presence_update(data=data, user=user) @@ -349,12 +349,12 @@ class ConnectionState: self.user = User(state=self.ctx, data=data) def parse_channel_delete(self, data): - server = self._get_server(utils._get_as_snowflake(data, 'guild_id')) + guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) channel_id = int(data['id']) - if server is not None: - channel = server.get_channel(channel_id) + if guild is not None: + channel = guild.get_channel(channel_id) if channel is not None: - server._remove_channel(channel) + guild._remove_channel(channel) self.dispatch('channel_delete', channel) else: # the reason we're doing this is so it's also removed from the @@ -372,12 +372,12 @@ class ConnectionState: self.dispatch('channel_update', old_channel, channel) return - server = self._get_server(utils._get_as_snowflake(data, 'guild_id')) - if server is not None: - channel = server.get_channel(channel_id) + guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) + if guild is not None: + channel = guild.get_channel(channel_id) if channel is not None: old_channel = copy.copy(channel) - channel._update(server, data) + channel._update(guild, data) self.dispatch('channel_update', old_channel, channel) def parse_channel_create(self, data): @@ -387,10 +387,10 @@ class ConnectionState: channel = factory(me=self.user, data=data, state=self.ctx) self._add_private_channel(channel) else: - server = self._get_server(utils._get_as_snowflake(data, 'guild_id')) - if server is not None: - channel = factory(server=server, state=self.ctx, data=data) - server._add_channel(channel) + guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) + if guild is not None: + channel = factory(guild=guild, state=self.ctx, data=data) + guild._add_channel(channel) self.dispatch('channel_create', channel) @@ -410,34 +410,34 @@ class ConnectionState: else: self.dispatch('group_remove', channel, user) - def _make_member(self, server, data): - roles = [server.default_role] + def _make_member(self, guild, data): + roles = [guild.default_role] for roleid in data.get('roles', []): - role = utils.get(server.roles, id=roleid) + role = utils.get(guild.roles, id=roleid) if role is not None: roles.append(role) data['roles'] = sorted(roles, key=lambda r: r.id) - return Member(server=server, data=data, state=self.ctx) + return Member(guild=guild, data=data, state=self.ctx) def parse_guild_member_add(self, data): - server = self._get_server(int(data['guild_id'])) - member = self._make_member(server, data) - server._add_member(member) - server._member_count += 1 + guild = self._get_guild(int(data['guild_id'])) + member = self._make_member(guild, data) + guild._add_member(member) + guild._member_count += 1 self.dispatch('member_join', member) def parse_guild_member_remove(self, data): - server = self._get_server(int(data['guild_id'])) - if server is not None: + guild = self._get_guild(int(data['guild_id'])) + if guild is not None: user_id = data['user']['id'] - member = server.get_member(user_id) + member = guild.get_member(user_id) if member is not None: - server._remove_member(member) - server._member_count -= 1 + guild._remove_member(member) + guild._member_count -= 1 # remove them from the voice channel member list - vc = server._voice_state_for(user_id) + vc = guild._voice_state_for(user_id) if vc: voice_channel = vc.channel if voice_channel is not None: @@ -449,38 +449,38 @@ class ConnectionState: self.dispatch('member_remove', member) def parse_guild_member_update(self, data): - server = self._get_server(int(data['guild_id'])) + guild = self._get_guild(int(data['guild_id'])) user = data['user'] user_id = user['id'] - member = server.get_member(user_id) + member = guild.get_member(user_id) if member is not None: old_member = copy.copy(member) member._update(data, user) self.dispatch('member_update', old_member, member) def parse_guild_emojis_update(self, data): - server = self._get_server(int(data['guild_id'])) - before_emojis = server.emojis - server.emojis = [Emoji(server=server, data=e, state=self.ctx) for e in data.get('emojis', [])] - self.dispatch('server_emojis_update', before_emojis, server.emojis) + guild = self._get_guild(int(data['guild_id'])) + before_emojis = guild.emojis + guild.emojis = [Emoji(guild=guild, data=e, state=self.ctx) for e in data.get('emojis', [])] + self.dispatch('guild_emojis_update', before_emojis, guild.emojis) - def _get_create_server(self, data): + def _get_create_guild(self, data): if data.get('unavailable') == False: # GUILD_CREATE with unavailable in the response - # usually means that the server has become available + # usually means that the guild has become available # and is therefore in the cache - server = self._get_server(data.get('id')) - if server is not None: - server.unavailable = False - server._from_data(data) - return server + guild = self._get_guild(data.get('id')) + if guild is not None: + guild.unavailable = False + guild._from_data(data) + return guild - return self._add_server_from_data(data) + return self._add_guild_from_data(data) @asyncio.coroutine - def _chunk_and_dispatch(self, server, unavailable): - yield from self.chunker(server) - chunks = list(self.chunks_needed(server)) + def _chunk_and_dispatch(self, guild, unavailable): + yield from self.chunker(guild) + chunks = list(self.chunks_needed(guild)) if chunks: try: yield from asyncio.wait(chunks, timeout=len(chunks), loop=self.loop) @@ -488,30 +488,30 @@ class ConnectionState: log.info('Somehow timed out waiting for chunks.') if unavailable == False: - self.dispatch('server_available', server) + self.dispatch('guild_available', guild) else: - self.dispatch('server_join', server) + self.dispatch('guild_join', guild) def parse_guild_create(self, data): unavailable = data.get('unavailable') if unavailable == True: - # joined a server with unavailable == True so.. + # joined a guild with unavailable == True so.. return - server = self._get_create_server(data) + guild = self._get_create_guild(data) # check if it requires chunking - if server.large: + if guild.large: if unavailable == False: # check if we're waiting for 'useful' READY # and if we are, we don't want to dispatch any - # event such as server_join or server_available + # event such as guild_join or guild_available # because we're still in the 'READY' phase. Or # so we say. try: state = self._ready_state state.launch.clear() - state.servers.append(server) + state.guilds.append(guild) except AttributeError: # the _ready_state attribute is only there during # processing of useful READY. @@ -521,43 +521,43 @@ class ConnectionState: # since we're not waiting for 'useful' READY we'll just # do the chunk request here - compat.create_task(self._chunk_and_dispatch(server, unavailable), loop=self.loop) + compat.create_task(self._chunk_and_dispatch(guild, unavailable), loop=self.loop) return # Dispatch available if newly available if unavailable == False: - self.dispatch('server_available', server) + self.dispatch('guild_available', guild) else: - self.dispatch('server_join', server) + self.dispatch('guild_join', guild) def parse_guild_sync(self, data): - server = self._get_server(int(data['id'])) - server._sync(data) + guild = self._get_guild(int(data['id'])) + guild._sync(data) def parse_guild_update(self, data): - server = self._get_server(int(data['id'])) - if server is not None: - old_server = copy.copy(server) - server._from_data(data) - self.dispatch('server_update', old_server, server) + guild = self._get_guild(int(data['id'])) + if guild is not None: + old_guild = copy.copy(guild) + guild._from_data(data) + self.dispatch('guild_update', old_guild, guild) def parse_guild_delete(self, data): - server = self._get_server(int(data['id'])) - if server is None: + guild = self._get_guild(int(data['id'])) + if guild is None: return - if data.get('unavailable', False) and server is not None: + if data.get('unavailable', False) and guild is not None: # GUILD_DELETE with unavailable being True means that the - # server that was available is now currently unavailable - server.unavailable = True - self.dispatch('server_unavailable', server) + # guild that was available is now currently unavailable + guild.unavailable = True + self.dispatch('guild_unavailable', guild) return # 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.messages = deque((msg for msg in self.messages if msg.guild != guild), maxlen=self.max_messages) - self._remove_server(server) - self.dispatch('server_remove', server) + self._remove_guild(guild) + self.dispatch('guild_remove', guild) def parse_guild_ban_add(self, data): # we make the assumption that GUILD_BAN_ADD is done @@ -565,72 +565,72 @@ 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(int(data['guild_id'])) - if server is not None: + guild = self._get_guild(int(data['guild_id'])) + if guild is not None: user_id = data.get('user', {}).get('id') - member = utils.get(server.members, id=user_id) + member = utils.get(guild.members, id=user_id) if member is not None: self.dispatch('member_ban', member) def parse_guild_ban_remove(self, data): - server = self._get_server(int(data['guild_id'])) - if server is not None: + guild = self._get_guild(int(data['guild_id'])) + if guild is not None: if 'user' in data: user = self.try_insert_user(data['user']) - self.dispatch('member_unban', server, user) + self.dispatch('member_unban', guild, user) def parse_guild_role_create(self, data): - server = self._get_server(int(data['guild_id'])) + guild = self._get_guild(int(data['guild_id'])) role_data = data['role'] - role = Role(server=server, data=role_data, state=self.ctx) - server._add_role(role) - self.dispatch('server_role_create', role) + role = Role(guild=guild, data=role_data, state=self.ctx) + guild._add_role(role) + self.dispatch('guild_role_create', role) def parse_guild_role_delete(self, data): - server = self._get_server(int(data['guild_id'])) - if server is not None: + guild = self._get_guild(int(data['guild_id'])) + if guild is not None: role_id = data.get('role_id') - role = utils.find(lambda r: r.id == role_id, server.roles) + role = utils.find(lambda r: r.id == role_id, guild.roles) try: - server._remove_role(role) + guild._remove_role(role) except ValueError: return else: - self.dispatch('server_role_delete', role) + self.dispatch('guild_role_delete', role) def parse_guild_role_update(self, data): - server = self._get_server(int(data['guild_id'])) - if server is not None: + guild = self._get_guild(int(data['guild_id'])) + if guild is not None: role_data = data['role'] role_id = role_data['id'] - role = utils.find(lambda r: r.id == role_id, server.roles) + role = utils.find(lambda r: r.id == role_id, guild.roles) if role is not None: old_role = copy.copy(role) role._update(role_data) - self.dispatch('server_role_update', old_role, role) + self.dispatch('guild_role_update', old_role, role) def parse_guild_members_chunk(self, data): - server = self._get_server(int(data['guild_id'])) + guild = self._get_guild(int(data['guild_id'])) members = data.get('members', []) for member in members: - m = self._make_member(server, member) - existing = server.get_member(m.id) + m = self._make_member(guild, member) + existing = guild.get_member(m.id) if existing is None or existing.joined_at is None: - server._add_member(m) + guild._add_member(m) log.info('processed a chunk for {} members.'.format(len(members))) - self.process_listeners(ListenerType.chunk, server, len(members)) + self.process_listeners(ListenerType.chunk, guild, len(members)) def parse_voice_state_update(self, data): - server = self._get_server(utils._get_as_snowflake(data, 'guild_id')) + guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) channel_id = utils._get_as_snowflake(data, 'channel_id') - if server is not None: + if guild is not None: if int(data['user_id']) == self.user.id: - voice = self._get_voice_client(server.id) + voice = self._get_voice_client(guild.id) if voice is not None: - voice.channel = server.get_channel(channel_id) + voice.channel = guild.get_channel(channel_id) - member, before, after = server._update_voice_state(data, channel_id) + member, before, after = guild._update_voice_state(data, channel_id) if after is not None: self.dispatch('voice_state_update', member, before, after) else: @@ -647,7 +647,7 @@ class ConnectionState: if isinstance(channel, DMChannel): member = channel.recipient elif isinstance(channel, TextChannel): - member = channel.server.get_member(user_id) + member = channel.guild.get_member(user_id) elif isinstance(channel, GroupChannel): member = utils.find(lambda x: x.id == user_id, channel.recipients) @@ -708,8 +708,8 @@ class ConnectionState: if id is None: return None - for server in self.servers: - channel = server.get_channel(id) + for guild in self.guilds: + channel = guild.get_channel(id) if channel is not None: return channel |