# -*- coding: utf-8 -*-
# cython: language_level=3
# Copyright (c) 2020 Nekokatt
# Copyright (c) 2021-present davfsa
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
"""Component that provides the ability to generate event models."""
from __future__ import annotations
__all__: typing.Sequence[str] = ("EventFactory",)
import abc
import typing
if typing.TYPE_CHECKING:
from hikari import channels as channel_models
from hikari import emojis as emojis_models
from hikari import guilds as guild_models
from hikari import invites as invite_models
from hikari import messages as messages_models
from hikari import presences as presences_models
from hikari import snowflakes
from hikari import stickers as sticker_models
from hikari import users as user_models
from hikari import voices as voices_models
from hikari.api import shard as gateway_shard
from hikari.events import application_events
from hikari.events import channel_events
from hikari.events import guild_events
from hikari.events import interaction_events
from hikari.events import lifetime_events
from hikari.events import member_events
from hikari.events import message_events
from hikari.events import reaction_events
from hikari.events import role_events
from hikari.events import scheduled_events
from hikari.events import shard_events
from hikari.events import typing_events
from hikari.events import user_events
from hikari.events import voice_events
from hikari.internal import data_binding
[docs]class EventFactory(abc.ABC):
"""Interface for components that deserialize JSON events."""
__slots__: typing.Sequence[str] = ()
######################
# APPLICATION EVENTS #
######################
@abc.abstractmethod
[docs] def deserialize_application_command_permission_update_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> application_events.ApplicationCommandPermissionsUpdateEvent:
"""Parse a raw payload from Discord into an application command permissions update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.application_events.ApplicationCommandPermissionsUpdateEvent
The parsed application command permissions update event.
"""
##################
# CHANNEL EVENTS #
##################
@abc.abstractmethod
[docs] def deserialize_guild_channel_create_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.GuildChannelCreateEvent:
"""Parse a raw payload from Discord into a channel create event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.GuildChannelCreateEvent
The parsed channel create event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_channel_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_channel: typing.Optional[channel_models.PermissibleGuildChannel] = None,
) -> channel_events.GuildChannelUpdateEvent:
"""Parse a raw payload from Discord into a channel update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_channel : typing.Optional[hikari.channels.PermissibleGuildChannel]
The guild channel object or `None`.
Returns
-------
hikari.events.channel_events.GuildChannelUpdateEvent
The parsed event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_channel_delete_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.GuildChannelDeleteEvent:
"""Parse a raw payload from Discord into a channel delete event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.GuildChannelDeleteEvent
The parsed channel delete event object.
"""
@abc.abstractmethod
[docs] def deserialize_channel_pins_update_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.PinsUpdateEvent:
"""Parse a raw payload from Discord into a channel pins update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.PinsUpdateEvent
The parsed channel pins update event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_thread_create_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.GuildThreadCreateEvent:
"""Parse a raw payload from Discord into a guild thread create event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.GuildThreadCreateEvent
The parsed guild thread create event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_thread_access_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.GuildThreadAccessEvent:
"""Parse a raw payload from Discord into a guild thread access event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.GuildThreadAccessEvent
The parsed guild thread create event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_thread_update_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.GuildThreadUpdateEvent:
"""Parse a raw payload from Discord into a guild thread update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.GuildThreadUpdateEvent
The parsed guild thread update event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_thread_delete_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.GuildThreadDeleteEvent:
"""Parse a raw payload from Discord into a guild thread delete event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.GuildThreadDeleteEvent
The parsed guild thread delete event object.
"""
@abc.abstractmethod
[docs] def deserialize_thread_members_update_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.ThreadMembersUpdateEvent:
"""Parse a raw payload from Discord into a thread members update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.ThreadMembersUpdateEvent
The parsed thread members update event object.
"""
@abc.abstractmethod
[docs] def deserialize_thread_list_sync_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.ThreadListSyncEvent:
"""Parse a raw payload from Discord into a thread list sync event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.ThreadListSyncEvent
The parsed thread member list sync event object.
"""
@abc.abstractmethod
[docs] def deserialize_webhook_update_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.WebhookUpdateEvent:
"""Parse a raw payload from Discord into a webhook update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.WebhookUpdateEvent
The parsed webhook update event object.
"""
@abc.abstractmethod
[docs] def deserialize_invite_create_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> channel_events.InviteCreateEvent:
"""Parse a raw payload from Discord into an invite create event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.channel_events.InviteCreateEvent
The parsed invite create event object.
"""
@abc.abstractmethod
[docs] def deserialize_invite_delete_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_invite: typing.Optional[invite_models.InviteWithMetadata] = None,
) -> channel_events.InviteDeleteEvent:
"""Parse a raw payload from Discord into an invite delete event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_invite : typing.Optional[hikari.invites.InviteWithMetadata]
The invite object or `None`.
Returns
-------
hikari.events.channel_events.InviteDeleteEvent
The parsed invite delete event object.
"""
#################
# TYPING EVENTS #
##################
@abc.abstractmethod
[docs] def deserialize_typing_start_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> typing_events.TypingEvent:
"""Parse a raw payload from Discord into a typing start event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.typing_events.TypingEvent
The parsed typing start event object.
"""
################
# GUILD EVENTS #
################
@abc.abstractmethod
[docs] def deserialize_guild_available_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> guild_events.GuildAvailableEvent:
"""Parse a raw payload from Discord into a guild available event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.guild_events.GuildAvailableEvent
The parsed guild create event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_join_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> guild_events.GuildJoinEvent:
"""Parse a raw payload from Discord into a guild join event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.guild_events.GuildJoinEvent
The parsed guild join event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_guild: typing.Optional[guild_models.GatewayGuild] = None,
) -> guild_events.GuildUpdateEvent:
"""Parse a raw payload from Discord into a guild update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_guild : typing.Optional[hikari.guilds.GatewayGuild]
The guild object or `None`.
Returns
-------
hikari.events.guild_events.GuildUpdateEvent
The parsed guild update event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_leave_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_guild: typing.Optional[guild_models.GatewayGuild] = None,
) -> guild_events.GuildLeaveEvent:
"""Parse a raw payload from Discord into a guild leave event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_guild : typing.Optional[hikari.guilds.GatewayGuild]
The guild object or `None`.
Returns
-------
hikari.events.guild_events.GuildLeaveEvent
The parsed guild leave event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_unavailable_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> guild_events.GuildUnavailableEvent:
"""Parse a raw payload from Discord into a guild unavailable event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.guild_events.GuildUnavailableEvent
The parsed guild unavailable event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_ban_add_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> guild_events.BanCreateEvent:
"""Parse a raw payload from Discord into a guild ban add event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.guild_events.BanCreateEvent
The parsed guild ban add event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_ban_remove_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> guild_events.BanDeleteEvent:
"""Parse a raw payload from Discord into a guild ban remove event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.guild_events.BanDeleteEvent
The parsed guild ban remove event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_emojis_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_emojis: typing.Optional[typing.Sequence[emojis_models.KnownCustomEmoji]] = None,
) -> guild_events.EmojisUpdateEvent:
"""Parse a raw payload from Discord into a guild emojis update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_emojis : typing.Optional[typing.Sequence[hikari.emojis.KnownCustomEmoji]]
The sequence of emojis or `None`.
Returns
-------
hikari.events.guild_events.EmojisUpdateEvent
The parsed guild emojis update event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_stickers_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_stickers: typing.Optional[typing.Sequence[sticker_models.GuildSticker]] = None,
) -> guild_events.StickersUpdateEvent:
"""Parse a raw payload from Discord into a guild stickers update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_stickers : typing.Optional[typing.Sequence[hikari.stickers.GuildSticker]]
The sequence of stickers or `None`.
Returns
-------
hikari.events.guild_events.StickersUpdateEvent
The parsed guild stickers update event object.
"""
@abc.abstractmethod
[docs] def deserialize_integration_create_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> guild_events.IntegrationCreateEvent:
"""Parse a raw payload from Discord into an integration create event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.guild_events.IntegrationCreateEvent
The parsed integration create event object.
"""
@abc.abstractmethod
[docs] def deserialize_integration_delete_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> guild_events.IntegrationDeleteEvent:
"""Parse a raw payload from Discord into an integration delete event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.guild_events.IntegrationDeleteEvent
The parsed integration delete event object.
"""
@abc.abstractmethod
[docs] def deserialize_integration_update_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> guild_events.IntegrationUpdateEvent:
"""Parse a raw payload from Discord into an integration update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.guild_events.IntegrationUpdateEvent
The parsed integration update event object.
"""
@abc.abstractmethod
[docs] def deserialize_presence_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_presence: typing.Optional[presences_models.MemberPresence] = None,
) -> guild_events.PresenceUpdateEvent:
"""Parse a raw payload from Discord into a presence update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_presence : typing.Optional[hikari.presences.MemberPresence]
The presence object or `None`.
Returns
-------
hikari.events.guild_events.PresenceUpdateEvent
The parsed presence update event object.
"""
@abc.abstractmethod
[docs] def deserialize_audit_log_entry_create_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
) -> guild_events.AuditLogEntryCreateEvent:
"""Parse a raw payload from Discord into a audit log entry create event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.guild_events.AuditLogEntryCreateEvent
The parsed audit log entry create object.
"""
######################
# INTERACTION EVENTS #
######################
@abc.abstractmethod
[docs] def deserialize_interaction_create_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
) -> interaction_events.InteractionCreateEvent:
"""Parse a raw payload from Discord into a interaction create event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.interaction_events.InteractionCreateEvent
The parsed interaction create event object.
"""
#################
# MEMBER EVENTS #
#################
@abc.abstractmethod
[docs] def deserialize_guild_member_add_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> member_events.MemberCreateEvent:
"""Parse a raw payload from Discord into a guild member add event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.member_events.MemberCreateEvent
The parsed guild member add event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_member_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_member: typing.Optional[guild_models.Member] = None,
) -> member_events.MemberUpdateEvent:
"""Parse a raw payload from Discord into a guild member update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_member : typing.Optional[hikari.guilds.Member]
The member object or `None`.
Returns
-------
hikari.events.member_events.MemberUpdateEvent
The parsed guild member update event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_member_remove_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_member: typing.Optional[guild_models.Member] = None,
) -> member_events.MemberDeleteEvent:
"""Parse a raw payload from Discord into a guild member remove event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_member : typing.Optional[hikari.guilds.Member]
The member object or `None`.
Returns
-------
hikari.events.member_events.MemberDeleteEvent
The parsed guild member remove event object.
"""
###############
# ROLE EVENTS #
###############
@abc.abstractmethod
[docs] def deserialize_guild_role_create_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> role_events.RoleCreateEvent:
"""Parse a raw payload from Discord into a guild role create event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.role_events.RoleCreateEvent
The parsed guild role create event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_role_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_role: typing.Optional[guild_models.Role] = None,
) -> role_events.RoleUpdateEvent:
"""Parse a raw payload from Discord into a guild role update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_role : typing.Optional[hikari.guilds.Role]
The role object or `None`.
Returns
-------
hikari.events.role_events.RoleUpdateEvent
The parsed guild role update event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_role_delete_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_role: typing.Optional[guild_models.Role] = None,
) -> role_events.RoleDeleteEvent:
"""Parse a raw payload from Discord into a guild role delete event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_role : typing.Optional[hikari.guilds.Role]
The role object or `None`.
Returns
-------
hikari.events.role_events.RoleDeleteEvent
The parsed guild role delete event object.
"""
##########################
# SCHEDULED EVENT EVENTS #
##########################
@abc.abstractmethod
[docs] def deserialize_scheduled_event_create_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
) -> scheduled_events.ScheduledEventCreateEvent:
"""Parse a raw payload from Discord into a scheduled event create event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.scheduled_events.ScheduledEventCreateEvent
The parsed scheduled event create event object.
"""
@abc.abstractmethod
[docs] def deserialize_scheduled_event_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
) -> scheduled_events.ScheduledEventUpdateEvent:
"""Parse a raw payload from Discord into a scheduled event update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.scheduled_events.ScheduledEventUpdateEvent
The parsed scheduled event update event object.
"""
@abc.abstractmethod
[docs] def deserialize_scheduled_event_delete_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
) -> scheduled_events.ScheduledEventDeleteEvent:
"""Parse a raw payload from Discord into a scheduled event delete event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.scheduled_events.ScheduledEventDeleteEvent
The parsed scheduled event delete event object.
"""
@abc.abstractmethod
[docs] def deserialize_scheduled_event_user_add_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
) -> scheduled_events.ScheduledEventUserAddEvent:
"""Parse a raw payload from Discord into a scheduled event user add event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.scheduled_events.ScheduledEventUserAddEvent
The parsed scheduled event user add event object.
"""
@abc.abstractmethod
[docs] def deserialize_scheduled_event_user_remove_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
) -> scheduled_events.ScheduledEventUserRemoveEvent:
"""Parse a raw payload from Discord into a scheduled event user remove event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.scheduled_events.ScheduledEventUserRemoveEvent
The parsed scheduled event user remove event object.
"""
###################
# LIFETIME EVENTS #
###################
@abc.abstractmethod
[docs] def deserialize_starting_event(self) -> lifetime_events.StartingEvent:
"""Build a starting event object.
Returns
-------
hikari.events.lifetime_events.StartingEvent
The built starting event object.
"""
@abc.abstractmethod
[docs] def deserialize_started_event(self) -> lifetime_events.StartedEvent:
"""Build a started event object.
Returns
-------
hikari.events.lifetime_events.StartingEvent
The built started event object.
"""
@abc.abstractmethod
[docs] def deserialize_stopping_event(self) -> lifetime_events.StoppingEvent:
"""Build a starting event object.
Returns
-------
hikari.events.lifetime_events.StartingEvent
The built starting event object.
"""
@abc.abstractmethod
[docs] def deserialize_stopped_event(self) -> lifetime_events.StoppedEvent:
"""Build a stopped event object.
Returns
-------
hikari.events.lifetime_events.StartingEvent
The built starting event object.
"""
##################
# MESSAGE EVENTS #
##################
@abc.abstractmethod
[docs] def deserialize_message_create_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> message_events.MessageCreateEvent:
"""Parse a raw payload from Discord into a message create event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.message_events.MessageCreateEvent
The parsed message create event object.
"""
@abc.abstractmethod
[docs] def deserialize_message_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_message: typing.Optional[messages_models.PartialMessage] = None,
) -> message_events.MessageUpdateEvent:
"""Parse a raw payload from Discord into a message update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_message : typing.Optional[hikari.messages.PartialMessage]
The message object or `None`.
Returns
-------
hikari.events.message_events.MessageUpdateEvent
The parsed message update event object.
"""
@abc.abstractmethod
[docs] def deserialize_message_delete_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_message: typing.Optional[messages_models.Message] = None,
) -> message_events.MessageDeleteEvent:
"""Parse a raw payload from Discord into a message delete event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_message : typing.Optional[hikari.messages.Message]
The old message object.
Returns
-------
hikari.events.message_events.MessageDeleteEvent
The parsed message delete event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_message_delete_bulk_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_messages: typing.Optional[typing.Mapping[snowflakes.Snowflake, messages_models.Message]] = None,
) -> message_events.GuildBulkMessageDeleteEvent:
"""Parse a raw payload from Discord into a guild message delete bulk event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_messages : typing.Optional[typing.Mapping[hikari.snowflakes.Snowflake, hikari.messages.Message]]
A mapping of the old message objects.
Returns
-------
hikari.events.message_events.GuildBulkMessageDeleteEvent
The parsed guild message delete bulk event object.
"""
###################
# REACTION EVENTS #
###################
@abc.abstractmethod
[docs] def deserialize_message_reaction_add_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> reaction_events.ReactionAddEvent:
"""Parse a raw payload from Discord into a message reaction add event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.reaction_events.ReactionAddEvent
The parsed message reaction add event object.
"""
@abc.abstractmethod
[docs] def deserialize_message_reaction_remove_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> reaction_events.ReactionDeleteEvent:
"""Parse a raw payload from Discord into a message reaction remove event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.reaction_events.ReactionDeleteEvent
The parsed message reaction remove event object.
"""
@abc.abstractmethod
[docs] def deserialize_message_reaction_remove_all_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> reaction_events.ReactionDeleteAllEvent:
"""Parse a raw payload from Discord into a message reaction remove all event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.reaction_events.ReactionDeleteAllEvent
The parsed message reaction remove all event object.
"""
@abc.abstractmethod
[docs] def deserialize_message_reaction_remove_emoji_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> reaction_events.ReactionDeleteEmojiEvent:
"""Parse a raw payload from Discord into a message reaction remove emoji event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.reaction_events.ReactionDeleteEmojiEvent
The parsed message reaction remove emoji event object.
"""
################
# SHARD EVENTS #
################
@abc.abstractmethod
[docs] def deserialize_shard_payload_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject, *, name: str
) -> shard_events.ShardPayloadEvent:
"""Parse a raw payload from Discord into a shard payload event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
name : str
Name of the event.
Returns
-------
hikari.events.shard_events.ShardPayloadEvent
The parsed shard payload event object.
"""
@abc.abstractmethod
[docs] def deserialize_ready_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
) -> shard_events.ShardReadyEvent:
"""Parse a raw payload from Discord into a ready event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.shard_events.ShardReadyEvent
The parsed ready event object.
"""
@abc.abstractmethod
[docs] def deserialize_connected_event(self, shard: gateway_shard.GatewayShard) -> shard_events.ShardConnectedEvent:
"""Build a shard connected event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
Returns
-------
hikari.events.shard_events.ShardReadyEvent
The built shard connected event object.
"""
@abc.abstractmethod
[docs] def deserialize_disconnected_event(self, shard: gateway_shard.GatewayShard) -> shard_events.ShardDisconnectedEvent:
"""Build a shard disconnected event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
Returns
-------
hikari.events.shard_events.ShardReadyEvent
The built shard disconnected event object.
"""
@abc.abstractmethod
[docs] def deserialize_resumed_event(self, shard: gateway_shard.GatewayShard) -> shard_events.ShardResumedEvent:
"""Build a shard resumed event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
Returns
-------
hikari.events.shard_events.ShardReadyEvent
The built shard resumed event object.
"""
@abc.abstractmethod
[docs] def deserialize_guild_member_chunk_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> shard_events.MemberChunkEvent:
"""Parse a raw payload from Discord into a member chunk event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.shard_events.MemberChunkEvent
The parsed member chunk object.
"""
###############
# USER EVENTS #
###############
@abc.abstractmethod
[docs] def deserialize_own_user_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_user: typing.Optional[user_models.OwnUser] = None,
) -> user_events.OwnUserUpdateEvent:
"""Parse a raw payload from Discord into a own user update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_user : typing.Optional[hikari.users.OwnUser]
The OwnUser object or `None`.
Returns
-------
hikari.events.user_events.OwnUserUpdateEvent
The parsed own user update event object.
"""
################
# VOICE EVENTS #
################
@abc.abstractmethod
[docs] def deserialize_voice_state_update_event(
self,
shard: gateway_shard.GatewayShard,
payload: data_binding.JSONObject,
*,
old_state: typing.Optional[voices_models.VoiceState] = None,
) -> voice_events.VoiceStateUpdateEvent:
"""Parse a raw payload from Discord into a voice state update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Other Parameters
----------------
old_state : typing.Optional[hikari.voices.VoiceState]
The VoiceState object or `None`.
Returns
-------
hikari.events.voice_events.VoiceStateUpdateEvent
The parsed voice state update event object.
"""
@abc.abstractmethod
[docs] def deserialize_voice_server_update_event(
self, shard: gateway_shard.GatewayShard, payload: data_binding.JSONObject
) -> voice_events.VoiceServerUpdateEvent:
"""Parse a raw payload from Discord into a voice server update event object.
Parameters
----------
shard : hikari.api.shard.GatewayShard
The shard that emitted this event.
payload : hikari.internal.data_binding.JSONObject
The dict payload to parse.
Returns
-------
hikari.events.voice_events.VoiceServerUpdateEvent
The parsed voice server update event object.
"""