aboutsummaryrefslogtreecommitdiff
path: root/discord/state.py
diff options
context:
space:
mode:
Diffstat (limited to 'discord/state.py')
-rw-r--r--discord/state.py35
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')