aboutsummaryrefslogtreecommitdiff
path: root/discord/state.py
diff options
context:
space:
mode:
authorRapptz <[email protected]>2016-10-17 18:25:23 -0400
committerRapptz <[email protected]>2017-01-03 09:51:54 -0500
commitd1d54a468a88323a8ef7798ff084a1371d5893ec (patch)
tree21dd315df95acd2c8d6cf63cc51fa4cadc0c7155 /discord/state.py
parentStateful Message and remove Invite.xkcd since it is removed. (diff)
downloaddiscord.py-d1d54a468a88323a8ef7798ff084a1371d5893ec.tar.xz
discord.py-d1d54a468a88323a8ef7798ff084a1371d5893ec.zip
Rename Server to Guild everywhere.
Diffstat (limited to 'discord/state.py')
-rw-r--r--discord/state.py276
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