Eventual consistency fixes.
This commit is contained in:
parent
3087600c8d
commit
a0cdb19c5f
@ -339,8 +339,10 @@ class ConnectionState:
|
||||
self.dispatch('reaction_remove', reaction, user)
|
||||
|
||||
def parse_presence_update(self, data):
|
||||
guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id'))
|
||||
guild_id = utils._get_as_snowflake(data, 'guild_id')
|
||||
guild = self._get_guild(guild_id)
|
||||
if guild is None:
|
||||
log.warning('PRESENCE_UPDATE referencing an unknown guild ID: %s. Discarding.', guild_id)
|
||||
return
|
||||
|
||||
status = data.get('status')
|
||||
@ -388,13 +390,18 @@ class ConnectionState:
|
||||
self.dispatch('channel_update', old_channel, channel)
|
||||
return
|
||||
|
||||
guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id'))
|
||||
guild_id = utils._get_as_snowflake(data, 'guild_id')
|
||||
guild = self._get_guild(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(guild, data)
|
||||
self.dispatch('channel_update', old_channel, channel)
|
||||
else:
|
||||
log.warning('CHANNEL_UPDATE referencing an unknown channel ID: %s. Discarding.', channel_id)
|
||||
else:
|
||||
log.warning('CHANNEL_UPDATE referencing an unknown guild ID: %s. Discarding.', guild_id)
|
||||
|
||||
def parse_channel_create(self, data):
|
||||
factory, ch_type = _channel_factory(data['type'])
|
||||
@ -403,10 +410,14 @@ class ConnectionState:
|
||||
channel = factory(me=self.user, data=data, state=self)
|
||||
self._add_private_channel(channel)
|
||||
else:
|
||||
guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id'))
|
||||
guild_id = utils._get_as_snowflake(data, 'guild_id')
|
||||
guild = self._get_guild(guild_id)
|
||||
if guild is not None:
|
||||
channel = factory(guild=guild, state=self, data=data)
|
||||
guild._add_channel(channel)
|
||||
else:
|
||||
log.warning('CHANNEL_CREATE referencing an unknown guild ID: %s. Discarding.', guild_id)
|
||||
return
|
||||
|
||||
self.dispatch('channel_create', channel)
|
||||
|
||||
@ -433,6 +444,10 @@ class ConnectionState:
|
||||
|
||||
def parse_guild_member_add(self, data):
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
if guild is None:
|
||||
log.warning('GUILD_MEMBER_ADD referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
return
|
||||
|
||||
member = Member(guild=guild, data=data, state=self)
|
||||
guild._add_member(member)
|
||||
guild._member_count += 1
|
||||
@ -447,19 +462,31 @@ class ConnectionState:
|
||||
guild._remove_member(member)
|
||||
guild._member_count -= 1
|
||||
self.dispatch('member_remove', member)
|
||||
else:
|
||||
log.warning('GUILD_MEMBER_REMOVE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
|
||||
def parse_guild_member_update(self, data):
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
user = data['user']
|
||||
user_id = int(user['id'])
|
||||
if guild is None:
|
||||
log.warning('GUILD_MEMBER_UPDATE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
return
|
||||
|
||||
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)
|
||||
else:
|
||||
log.warning('GUILD_MEMBER_UPDATE referencing an unknown member ID: %s. Discarding.', user_id)
|
||||
|
||||
def parse_guild_emojis_update(self, data):
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
if guild is None:
|
||||
log.warning('GUILD_EMOJIS_UPDATE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
return
|
||||
|
||||
before_emojis = guild.emojis
|
||||
guild.emojis = tuple(map(lambda d: self.store_emoji(guild, d), data['emojis']))
|
||||
self.dispatch('guild_emojis_update', before_emojis, guild.emojis)
|
||||
@ -541,10 +568,13 @@ class ConnectionState:
|
||||
old_guild = copy.copy(guild)
|
||||
guild._from_data(data)
|
||||
self.dispatch('guild_update', old_guild, guild)
|
||||
else:
|
||||
log.warning('GUILD_UPDATE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
|
||||
def parse_guild_delete(self, data):
|
||||
guild = self._get_guild(int(data['id']))
|
||||
if guild is None:
|
||||
log.warning('GUILD_DELETE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
return
|
||||
|
||||
if data.get('unavailable', False) and guild is not None:
|
||||
@ -586,6 +616,10 @@ class ConnectionState:
|
||||
|
||||
def parse_guild_role_create(self, data):
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
if guild is None:
|
||||
log.warning('GUILD_ROLE_CREATE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
return
|
||||
|
||||
role_data = data['role']
|
||||
role = Role(guild=guild, data=role_data, state=self)
|
||||
guild._add_role(role)
|
||||
@ -602,6 +636,8 @@ class ConnectionState:
|
||||
return
|
||||
else:
|
||||
self.dispatch('guild_role_delete', role)
|
||||
else:
|
||||
log.warning('GUILD_ROLE_DELETE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
|
||||
def parse_guild_role_update(self, data):
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
@ -613,6 +649,8 @@ class ConnectionState:
|
||||
old_role = copy.copy(role)
|
||||
role._update(role_data)
|
||||
self.dispatch('guild_role_update', old_role, role)
|
||||
else:
|
||||
log.warning('GUILD_ROLE_UPDATE referencing an unknown guild ID: %s. Discarding.', data['guild_id'])
|
||||
|
||||
def parse_guild_members_chunk(self, data):
|
||||
guild = self._get_guild(int(data['guild_id']))
|
||||
|
Loading…
x
Reference in New Issue
Block a user