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