Events
How to use events
discorb uses event driven programming. You can register event handlers with Discorb::Client#on. Alternatively, you can use Discorb::Client#once to register a one-time event handler.
client.on :message do |event|
puts event..content
end
This example will print the content of every message received.
Since v0.2.5, you can also register event handlers by adding a method to the client, with the prefix on_
and the event name as the method name.
client = Discorb::Client.new
class << client
def on_ready
puts "Ready!"
end
end
If you want to seperate event handlers from the client, consider using Discorb::Extension. Learn more about extensions.
Since v0.6.1, you can set :override
to true
to register overridable event handlers.
client.on :message, override: true do |event|
puts "This event handler is overrideable!"
end
client.on :message do |event|
puts "Override!"
end
This example will print Override!
, but not This event handler is overrideable!
. This is useful for registering event handlers for default behaviour on errors.
# In the library...
client.on :command_error, override: true do |event, error|
$stderr.puts "Command error:\n#{error.}"
end
# In your code...
client.on :command_error do |event, error|
event..reply "An error occurred while executing that command!\n#{error.}"
end
Event reference
Client events
event_receive(event_name, data)
Fires when a event is received.
| Parameter | Type | Description | | ———- | —– | ———– | |event_name
| Symbol | The name of the event. | |data
| Hash | The data of the event. |
ready()
Fires when the client is ready.
resumed()
Fires when the client is resumed connection.
Guild events
guild_join(guild)
Fires when client joins a guild.
| Parameter | Type | Description | | ———- | —– | ———– | |guild
| Discorb::Guild | The guild that was joined. |
guild_available(guild)
Fires when a guild becomes available.
| Parameter | Type | Description | | ———- | —– | ———– | |guild
| Discorb::Guild | The guild that became available. |
guild_update(before, after)
Fires when client updates a guild.
| Parameter | Type | Description | | ———- | —– | ———– | |before
| Discorb::Guild | The guild before the update. | |after
| Discorb::Guild | The guild after the update. |
guild_leave(guild)
Fires when client leaves a guild.
| Parameter | Type | Description | | ———- | —– | ———– | |guild
| Discorb::Guild | The guild that was left. |
guild_destroy(guild)
Fires when guild is destroyed.
| Parameter | Type | Description | | ———- | —– | ———– | |guild
| Discorb::Guild | The guild that was destroyed. |
guild_integrations_update(guild)
Fires when guild integrations are updated.
| Parameter | Type | Description | | ———- | —– | ———– | |guild
| Discorb::Guild | The guild that integrations were updated for. |
guild_ban_add(guild, user)
Fires when a user is banned from a guild.
| Parameter | Type | Description | | ———- | —– | ———– | |guild
| Discorb::Guild | The guild that the user was banned from. | |user
| Discorb::User | The user that was banned. |
guild_ban_remove(guild, user)
Fires when a user is unbanned from a guild.
| Parameter | Type | Description | | ———- | —– | ———– | |guild
| Discorb::Guild | The guild that the user was unbanned from. | |user
| Discorb::User | The user that was unbanned. |
Channel events
channel_create(channel)
Fires when a channel is created.
| Parameter | Type | Description | | ———- | —– | ———– | |channel
| Discorb::Channel | The channel that was created. |
channel_update(before, after)
Fires when a channel is updated.
| Parameter | Type | Description | | ———- | —– | ———– | |before
| Discorb::Channel | The channel before the update. | |after
| Discorb::Channel | The channel after the update. |
channel_delete(channel)
Fires when a channel is deleted.
| Parameter | Type | Description | | ———- | —– | ———– | |channel
| Discorb::Channel | The channel that was deleted. |
webhooks_update(event)
Fires when a webhook is updated.
| Parameter | Type | Description | | ———- | —– | ———– | |event
| Discorb::Gateway::WebhooksUpdateEvent | The webhook update event. |
thread_new(thread)
Fires when a thread is created.
| Parameter | Type | Description | | ———- | —– | ———– | |thread
| Discorb::ThreadChannel | The thread that was created. |
thread_join(thread)
Fires when client joins a thread.
| Parameter | Type | Description | | ———- | —– | ———– | |thread
| Discorb::ThreadChannel | The thread that was joined. |
thread_delete(thread)
Fires when a thread is deleted.
| Parameter | Type | Description | | ———- | —– | ———– | |thread
| Discorb::ThreadChannel | The thread that was deleted. |
thread_update(before, after)
Fires when a thread is updated.
| Parameter | Type | Description | | ———- | —– | ———– | |before
| Discorb::ThreadChannel | The thread before the update. | |after
| Discorb::ThreadChannel | The thread after the update. |
thread_members_update(thread, added, removed)
Fires when a thread's members are updated.
| Parameter | Type | Description | | ———- | —– | ———– | |thread
| Discorb::ThreadChannel | The thread that the members were updated for. | |added
| Array<Discorb::ThreadChannel::Member> | An array of Discorb::ThreadChannel::Member objects that were added to the thread. | |removed
| Array<Discorb::ThreadChannel::Member> | An array of Discorb::ThreadChannel::Member objects that were removed from the thread. |
thread_member_update(before, after)
Fires when a thread member is updated.
| Parameter | Type | Description | | ——— | —– | ———– | |thread
| Discorb::ThreadChannel | The thread that the member was updated for. | |before
| Discorb::ThreadChannel::Member | The thread member before the update. | |after
| Discorb::ThreadChannel::Member | The thread member after the update. |
Integration events
integration_create(integration)
Fires when a guild integration is created.
| Parameter | Type | Description | | ———- | —– | ———– | |integration
| Discorb::Integration| The created integration. |
integration_update(after)
Fires when a guild integration is updated.
| Parameter | Type | Description | | ———- | —– | ———– | |after
| Discorb::Integration| The integration after the update. |
integration_delete(integration)
Fires when a guild integration is deleted.
| Parameter | Type | Description | | ———- | —– | ———– | |integration
| Discorb::Integration| The deleted integration. |
Message events
message(message)
Fires when a message is created.
| Parameter | Type | Description | | ———- | —– | ———– | |message
| Discorb::Message| The created message. |
message_update(event)
Fires when a message is updated.
| Parameter | Type | Description | | ———- | —– | ———– | |event
| Discorb::Gateway::MessageUpdateEvent| The message after the update. |
message_delete(message, channel, guild)
Fires when a message is deleted.
| Parameter | Type | Description | | ———- | —– | ———– | |message
| Discorb::Message| The deleted message. | |channel
| Discorb::Channel| The channel the message was deleted from. | |guild
| ?Discorb::Guild | The guild the message was deleted from. |
Note
This will fire when cached messages are deleted.
message_delete_id(message_id, channel, guild)
Fires when a message is deleted. Not like #message_delete this will fire even message is not cached.
| Parameter | Type | Description | | ———- | —– | ———– | |message_id
| Discorb::Snowflake | The deleted message ID. | |channel
| Discorb::Channel| The channel the message was deleted from. | |guild
| ?Discorb::Guild | The guild the message was deleted from. |
message_delete_bulk(messages)
Fires when a bulk of messages are deleted.
| Parameter | Type | Description | | ———- | —– | ———– | |messages
| Array<Discorb::Message, Discorb::Gateway::UnknownDeleteBulkMessage> | The deleted messages. |
message_pin_update(event)
Fires when a message is pinned or unpinned.
| Parameter | Type | Description | | ———- | —– | ———– | |event
| Discorb::Gateway::MessagePinEvent| The event object. |
typing_start(event)
Fires when a user starts typing.
| Parameter | Type | Description | | ——— | —– | ———– | |event
| Discorb::Gateway::TypingStartEvent| The event object. |
Reaction events
reaction_add(event)
Fires when a reaction is added to a message.
| Parameter | Type | Description | | ———- | —– | ———– | |event
| Discorb::Gateway::ReactionEvent| The event object. |
reaction_remove(event)
Fires when someone removes a reaction from a message.
| Parameter | Type | Description | | ———- | —– | ———– | |event
| Discorb::Gateway::ReactionEvent| The event object. |
reaction_remove_all(event)
Fires when all reactions are removed from a message.
| Parameter | Type | Description | | ———- | —– | ———– | |event
| Discorb::Gateway::ReactionRemoveAllEvent| The event object. |
reaction_remove_emoji(event)
Fires when a reaction is removed from a message.
| Parameter | Type | Description | | ———- | —– | ———– | |event
| Discorb::Gateway::ReactionRemoveEmojiEvent| The event object. |
Role events
role_create(role)
Fires when a role is created.
| Parameter | Type | Description | | ———- | —– | ———– | |role
| Discorb::Role| The created role. |
role_update(before, after)
Fires when a role is updated.
| Parameter | Type | Description | | ———- | —– | ———– | |before
| Discorb::Role| The role before the update. | |after
| Discorb::Role| The role after the update. |
role_remove(role)
Fires when a role is deleted.
| Parameter | Type | Description | | ———- | —– | ———– | |role
| Discorb::Role| The deleted role. |
Member events
Note
These events requires the guild_members
intent.
member_add(member)
Fires when a member joins a guild.
| Parameter | Type | Description | | ———- | —– | ———– | |member
| Discorb::Member| The member that joined. |
member_update(before, after)
Fires when a member is updated.
| Parameter | Type | Description | | ———- | —– | ———– | |before
| Discorb::Member| The member before the update. | |after
| Discorb::Member| The member after the update. |
member_remove(member)
Fires when a member is removed from a guild.
| Parameter | Type | Description | | ———- | —– | ———– | |member
| Discorb::Member| The member that left. |
Role events
role_create(role)
Fires when a role is created.
| Parameter | Type | Description | | ———- | —– | ———– | |role
| Discorb::Role| The created role. |
role_update(before, after)
Fires when a role is updated.
| Parameter | Type | Description | | ———- | —– | ———– | |before
| Discorb::Role| The role before the update. | |after
| Discorb::Role| The role after the update. |
role_remove(role)
Fires when a role is deleted.
| Parameter | Type | Description | | ———- | —– | ———– | |role
| Discorb::Role| The deleted role. |
Invite events
invite_create(invite)
Fires when a invite is created.
| Parameter | Type | Description | | ———- | —– | ———– | |invite
| Discorb::Invite| The created invite. |
invite_delete(invite)
Fires when a invite is deleted.
| Parameter | Type | Description | | ———- | —– | ———– | |invite
| Discorb::Invite| The deleted invite. |
Interaction events
button_click(interaction)
Fires when a button is clicked.
| Parameter | Type | Description | | ———- | —– | ———– | |interaction
| Discorb::MessageComponentInteraction::Button| The interaction object. |
select_menu_select(interaction)
Fires when a select menu is selected.
| Parameter | Type | Description | | ———- | —– | ———– | |interaction
| Discorb::MessageComponentInteraction::SelectMenu| The interaction object. |
Voice events
It's too big, so they're documented in Voice Events
Low-level events
guild_create(guild)
Fires when GUILD_CREATE
is received.
| Parameter | Type | Description | | ———- | —– | ———– | |guild
| Discorb::Guild| The guild of the event. |
guild_delete(guild)
Fires when GUILD_DELETE
is received.
| Parameter | Type | Description | | ———- | —– | ———– | |guild
| Discorb::Guild| The guild of the event. |
thread_create(thread)
Fires when THREAD_CREATE
is received.
| Parameter | Type | Description | | ———- | —– | ———– | |thread
| Discorb::ThreadChannel| The thread of the event. |