Events API Reference#
Qord implements a rich interface for handling the events sent by Discord over gateway. These events are generally used to track the state of various entities.
The recommended way to register an event listener, is to use the qord.Client.event()
decorator to decorate the callback coroutine. Example:
@client.event(qord.GatewayEvent.MESSAGE_CREATE)
async def on_message_create(event):
pass
All event listeners must take a single event
parameter that is an instance
of qord.BaseEvent
and represents the context of event and contains data
relevant to the invoked event.
The qord.GatewayEvent
enumeration details the event names that are sent over gateway.
Note
Toggling certain Intents
flags will also disable or enable related
events to that intent for your bot. It is recommended to keep at least the
Intents.guilds
intent enabled for proper functioning of library.
Custom events#
Custom events are useful for several use cases and library allows you to create them and easily invoke them:
from qord import events
from dataclasses import dataclass
# For `event_name` parameter, make sure not to use an existing
# event name reserved by the library.
@dataclass
class ApplicationSubmit(events.BaseEvent, event_name="application_submit"):
id: int
name: str
@client.event("application_submit")
async def on_application_submit(event):
print("Application submitted.")
print(f"Name: {event.name}")
print(f"ID: {event.id}")
You can then invoke the event somewhere else:
event = ApplicationSubmit(id=1, name="Jake")
client.invoke_event(event)
Events Structures#
These classes define the structures of various events that are sent over Discord gateway.
BaseEvent#
- class qord.events.BaseEvent#
Base class for events.
All custom events must inherit from this class. When subclassing the
event_name
parameter is required.Note
Parameters documented below are passed during subclassing.
- Parameters
event_name (
builtins.str
) –The string representation of name of event. This is used for identifying the event and must be unique.
Warning
Do not use event names that are already reserved by the library for example the event names from
GatewayEvent
.
BaseGatewayEvent#
- class qord.events.BaseGatewayEvent#
A
typing.Protocol
that details events sent over the gateway.This protocol supports runtime checks like
isinstance()
orissubclass()
etc.
GatewayDispatch#
- class qord.events.GatewayDispatch#
Structure of a
GATEWAY_DISPATCH
event.This event is called whenever gateway sends an event dispatch.
This event purely exists for debugging and experimental purposes and should not generally be used. This event will also call for dispatch events that are not supported by the library.
This event is only called when
debug_events
parameter is enabled inClient
.- title: str#
The title/name of event.
This name isn’t same as how library defines the events name. See Discord documentation for all events names.
- data: Optional[Dict[str, Any]] = None#
The raw event data.
This is mostly raw JSON payload however for some events, This can be
None
.
Ready#
Resumed#
UserUpdate#
GuildAvailable#
- class qord.events.GuildAvailable#
Structure for
GUILD_AVAILABLE
event.This event is called whenever a guild becomes available to the client. When initially connecting, This event may call several times for lazy loading of client guilds.
This event requires the
guilds
to be enabled. This intent is enabled by default.
GuildJoin#
- class qord.events.GuildJoin#
Structure for
GUILD_JOIN
event.This event is called whenever the client user or bot joins a new guild.
This event requires the
guilds
to be enabled. This intent is enabled by default.
GuildLeave#
- class qord.events.GuildLeave#
Structure for
GUILD_LEAVE
event.This event is called whenever the client user or bot is removed (kicked, banned or simply left) from a guild.
This event requires the
guilds
to be enabled. This intent is enabled by default.
GuildUpdate#
- class qord.events.GuildUpdate#
Structure for
GUILD_UPDATE
event.This event is called whenever one or more properties of a guild are updated.
This event requires the
guilds
to be enabled. This intent is enabled by default.
RoleCreate#
- class qord.events.RoleCreate#
Structure for
ROLE_CREATE
event.This event is called whenever a role is created in a guild.
This event requires the
guilds
to be enabled. This intent is enabled by default.
RoleUpdate#
- class qord.events.RoleUpdate#
Structure for
ROLE_UPDATE
event.This event is called whenever one or more properties of a guild role are updated.
This event requires the
guilds
to be enabled. This intent is enabled by default.
RoleDelete#
GuildMemberAdd#
- class qord.events.GuildMemberAdd#
Structure for
GUILD_MEMBER_ADD
event.This event is called whenever a new member joins the guild.
This event requires the privileged intent,
members
to be enabled.- member: GuildMember#
The member that joined the
guild
.
GuildMemberUpdate#
- class qord.events.GuildMemberUpdate#
Structure for
GUILD_MEMBER_UPDATE
event.This event is called whenever a guild member is updated.
This event requires the privileged intent,
members
to be enabled.- before: GuildMember#
The member before the update.
- after: GuildMember#
The member after the update.
GuildMemberRemove#
- class qord.events.GuildMemberRemove#
Structure for
GUILD_MEMBER_REMOVE
event.This event is called whenever a member is removed from the guild. The removal may be in form of leaving, getting kicked or banned etc.
This event requires the privileged intent,
members
to be enabled.- member: GuildMember#
The member that had left the
guild
.
ChannelCreate#
- class qord.events.ChannelCreate#
Structure for
CHANNEL_CREATE
event.This event is called whenever a new channel is created in a guild.
Requires the
guilds
intents to be enabled. This intent is enabled by default.- channel: GuildChannel#
The channel that was created.
ChannelUpdate#
- class qord.events.ChannelUpdate#
Structure for
CHANNEL_UPDATE
event.This event is called whenever one or more properties of a guild channel are updated.
Requires the
guilds
intents to be enabled. This intent is enabled by default.- before: GuildChannel#
The channel before the update.
- after: GuildChannel#
The channel after the update.
ChannelPinsUpdate#
- class qord.events.ChannelPinsUpdate#
Structure for
CHANNEL_PINS_UPDATE
event.This event is called whenever a message is pinned or unpinned in a channel. This event is not called if a pinned message is deleted.
Requires the
guilds
intents to be enabled. This intent is enabled by default.- channel: MessageableT#
The channel whose pins were updated.
ChannelDelete#
- class qord.events.ChannelDelete#
Structure for
CHANNEL_DELETE
event.This event is called whenever a channel is deleted in a guild.
Requires the
guilds
intents to be enabled. This intent is enabled by default.- channel: GuildChannel#
The channel that was deleted.
TypingStart#
- class qord.events.TypingStart#
Structure for
TYPING_START
event.This event is called whenever a user starts typing in a channel.
Requires the
guild_message_typing
intents to be enabled for guild typing events anddirect_message_typing
for DM typing events. These intents are enabled by default.- channel: MessageableT#
The channel in which typing started in.
- started_at: datetime#
The time when the typing started.
- user: Union[User, GuildMember]#
The user or member that started typing.
If the event happened in a guild, This is
GuildMember
otherwise it is aUser
.
EmojisUpdate#
- class qord.events.EmojisUpdate#
Structure for
EMOJIS_UPDATE
event.This event is called whenever emojis are updated in a guild i.e a new emoji is created, an emoji is deleted or updated.
This requires
Intents.emojis_and_stickers
to be enabled.
MessageCreate#
- class qord.events.MessageCreate#
Structure for
MESSAGE_CREATE
event.This event is called whenever a new message is sent in a guild or private channel.
This event requires the
guild_messages
anddirect_messages
intents enabled for guild and DM message events respectively. These intents are enabled by default.
MessageUpdate#
- class qord.events.MessageUpdate#
Structure for
MESSAGE_UPDATE
event.This event is called whenever a message is updated aka edited.
This event requires the
guild_messages
anddirect_messages
intents enabled for guild and DM message events respectively. These intents are enabled by default.
MessageDelete#
- class qord.events.MessageDelete#
Structure for
MESSAGE_DELETE
event.This event is called whenever a message is deleted.
This event requires the
guild_messages
anddirect_messages
intents enabled for guild and DM message events respectively. These intents are enabled by default.
MessageBulkDelete#
- class qord.events.MessageBulkDelete#
Structure for
MESSAGE_BULK_DELETE
event.This event is called whenever multiple messages are deleted at the same time in a channel.
This event requires the
guild_messages
anddirect_messages
intents enabled for guild and DM message events respectively. These intents are enabled by default.- messages: List[Message]#
The list of messages that were deleted.
This list only includes messages that could be resolved from the bot’s cache and may not include all messages that were deleted. You should use
message_ids
to get the IDs of all the messages deleted however do note that you cannot fetch those messages as they have been deleted.
- channel: MessageableT#
The channel in which messages were bulk deleted.
- message_ids: List[int]#
The list of IDs of messages that were deleted.
ReactionAdd#
- class qord.events.ReactionAdd#
Structure for
REACTION_ADD
event.This event is called whenever a reaction is added on a message.
This requires
Intents.guild_message_reactions
orIntents.direct_message_reactions
to be enabled for guilds and direct messages respectively.- user: Union[User, GuildMember]#
The user who added the reaction.
ReactionRemove#
- class qord.events.ReactionRemove#
Structure for
REACTION_REMOVE
event.This event is called whenever a reaction is removed from a message.
This requires
Intents.guild_message_reactions
orIntents.direct_message_reactions
to be enabled for guilds and direct messages respectively.- user: Union[User, GuildMember]#
The user who removed their reaction.
Unlike the
events.ReactionAdd
event, This attribute can be aGuildMember
object only whenmembers
intents are enabled as Discord does not tend to send the member data in this event.
ReactionClear#
- class qord.events.ReactionClear#
Structure for
REACTION_CLEAR
event.This event is called whenever all reactions are cleared from a message at once.
This requires
Intents.guild_message_reactions
orIntents.direct_message_reactions
to be enabled for guilds and direct messages respectively.
ReactionClearEmoji#
- class qord.events.ReactionClearEmoji#
Structure for
REACTION_CLEAR_EMOJI
event.This event is called whenever all reactions for a specific emoji are cleared from a message at once.
This requires
Intents.guild_message_reactions
orIntents.direct_message_reactions
to be enabled for guilds and direct messages respectively.- emoji: PartialEmoji#
The emoji whose reactions were cleared.
ScheduledEventCreate#
- class qord.events.ScheduledEventCreate#
Structure for
SCHEDULED_EVENT_CREATE
event.This event is called whenever a new scheduled event is created in a guild.
Requires the
scheduled_events
intents to be enabled. This intent is enabled by default.- scheduled_event: ScheduledEvent#
The created scheduled event.
ScheduledEventUpdate#
- class qord.events.ScheduledEventUpdate#
Structure for
SCHEDULED_EVENT_UPDATE
event.This event is called whenever a scheduled event is updated in a guild.
Requires the
scheduled_events
intents to be enabled. This intent is enabled by default.- before: ScheduledEvent#
The scheduled event before the update.
- after: ScheduledEvent#
The scheduled event after the update.
ScheduledEventDelete#
- class qord.events.ScheduledEventDelete#
Structure for
SCHEDULED_EVENT_DELETE
event.This event is called whenever a scheduled event is deleted in a guild.
Requires the
scheduled_events
intents to be enabled. This intent is enabled by default.- scheduled_event: ScheduledEvent#
The deleted scheduled event.
ScheduledEventUserAdd#
- class qord.events.ScheduledEventUserAdd#
Structure for
SCHEDULED_EVENT_USER_ADD
event.This event is called whenever a user subscribes to a scheduled event.
Requires the
scheduled_events
intents to be enabled. This intent is enabled by default.- scheduled_event: ScheduledEvent#
The scheduled event on which user subscribed.
- user_id: int#
The ID of user who subscribed.
- user: Optional[GuildMember]#
The user who subscribed.
This can be ``None``! When
members
are not enabled or member isn’t cached by any chance, This attribute can beNone
. You should consider fetching the member viaGuild.fetch_member()
with the givenuser_id
.
ScheduledEventUserRemove#
- class qord.events.ScheduledEventUserRemove#
Structure for
SCHEDULED_EVENT_USER_REMOVE
event.This event is called whenever a user unsubscribes to a scheduled event.
Requires the
scheduled_events
intents to be enabled. This intent is enabled by default.- scheduled_event: ScheduledEvent#
The scheduled event on which user unsubscribed.
- user_id: int#
The ID of user who unsubscribed.
- user: Optional[GuildMember]#
The user who unsubscribed.
This can be ``None``! When
members
are not enabled or member isn’t cached by any chance, This attribute can beNone
. You should consider fetching the member viaGuild.fetch_member()
with the givenuser_id
.