diff options
Diffstat (limited to 'discord/state.py')
| -rw-r--r-- | discord/state.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/discord/state.py b/discord/state.py index fec75887..177c195c 100644 --- a/discord/state.py +++ b/discord/state.py @@ -53,6 +53,7 @@ from .object import Object from .invite import Invite from .interactions import Interaction from .ui.view import ViewStore +from .stage_instance import StageInstance class ChunkRequest: def __init__(self, guild_id, loop, resolver, *, cache=True): @@ -956,6 +957,40 @@ class ConnectionState: else: log.debug('WEBHOOKS_UPDATE referencing an unknown channel ID: %s. Discarding.', data['channel_id']) + def parse_stage_instance_create(self, data): + guild = self._get_guild(int(data['guild_id'])) + if guild is not None: + stage_instance = StageInstance(guild=guild, state=self, data=data) + guild._stage_instances[stage_instance.id] = stage_instance + self.dispatch('stage_instance_create', stage_instance) + else: + log.debug('STAGE_INSTANCE_CREATE referencing unknown guild ID: %s. Discarding.', data['guild_id']) + + def parse_stage_instance_update(self, data): + guild = self._get_guild(int(data['guild_id'])) + if guild is not None: + stage_instance = guild._stage_instances.get(int(data['id'])) + if stage_instance is not None: + old_stage_instance = copy.copy(stage_instance) + stage_instance._update(data) + self.dispatch('stage_instance_update', old_stage_instance, stage_instance) + else: + log.debug('STAGE_INSTANCE_UPDATE referencing unknown stage instance ID: %s. Discarding.', data['id']) + else: + log.debug('STAGE_INSTANCE_UPDATE referencing unknown guild ID: %s. Discarding.', data['guild_id']) + + def parse_stage_instance_delete(self, data): + guild = self._get_guild(int(data['guild_id'])) + if guild is not None: + try: + stage_instance = guild._stage_instances.pop(int(data['id'])) + except KeyError: + pass + else: + self.dispatch('stage_instance_delete', stage_instance) + else: + log.debug('STAGE_INSTANCE_DELETE referencing unknown guild ID: %s. Discarding.', data['guild_id']) + def parse_voice_state_update(self, data): guild = self._get_guild(utils._get_as_snowflake(data, 'guild_id')) channel_id = utils._get_as_snowflake(data, 'channel_id') |