An event is a frame the server sends without being asked, usually because someone else changed something. This page lists every event the server sends. Use it to check that your client’s frame handler covers everything, then follow the links for each event’s fields.
Events never carry a listener. Many events share a cmd with the response to the command that caused them. For example, when you send message_new you get a message_new response with your listener, and everyone else gets a message_new event without one.
The “Receives” column in the tables uses these groups:
| Group |
Meaning |
| Everyone |
Every signed-in connection on the server. |
| Everyone else |
Every signed-in connection except the one that sent the request. The sender gets a direct response instead. |
| Channel viewers |
Every signed-in connection whose account can view the channel, except the one that sent the request. When a user caused the event, accounts severed from that user are skipped. |
| The account |
Every open connection of one account. |
| Event |
Meaning |
Receives |
Details |
handshake |
Server identity and capabilities. Sent once, as soon as the socket opens. |
The new connection |
The handshake |
ping |
Heartbeat with no other fields, sent every 30 seconds. No reply is needed. |
Every open connection, signed in or not |
Connection lifecycle |
auth_error |
You were kicked (reason: "kicked") or banned (reason: "banned"). The server closes the socket right after. |
The account |
Common frames |
rate_limit |
A timeout started, was removed, or expired. length: 0 means it’s over. |
The account |
Timeouts |
| Event |
Meaning |
Receives |
Details |
server_update |
The server’s name, icon, or banner changed. Carries name, icon, and banner. |
Everyone else after server_update. Everyone after an image upload. |
server_update |
access_mode_update |
The access mode changed. Carries mode. Also sent with mode: "open" when the password is removed while password mode is on. |
Everyone else |
access_mode_set |
application_new |
Someone submitted a join application. Carries application and pending, the number of pending applications. |
Connections with manage_access or review_applications |
application_submit |
application_approved |
Your join application was approved. Carries application_id. |
The applicant’s account |
application_review |
Access control explains applications and access modes.
| Event |
Meaning |
Receives |
Details |
channels_get |
Your full list of visible channels, in val. Sent after a channel is created, moved, deleted, or changed, including slow mode and sticky message changes. Also sent when a role change alters which channels you can see. |
Everyone, each with their own list |
channels_get |
channel_get |
One changed channel, in val. Sent instead of channels_get when a channel changed without being renamed, to connections that reported channel_get. |
Connections that reported channel_get |
channel_get |
Message events carry channel, and also thread_id when the message is in a thread.
When a channel has a sticky message, every new message in it is followed by a message_delete for the old copy of the sticky message and a message_new for the re-posted copy, so the sticky message stays at the bottom.
| Event |
Meaning |
Receives |
Details |
message_new |
A new message, in message. Sources include users, webhooks, slash command replies, pin announcements, sticky message re-posts, and plugins. |
Channel viewers |
message_new |
message_new with message.ephemeral: true |
A private slash command reply that only you can see. It isn’t stored. |
The account that ran the command |
slash_response |
message_edit |
A message changed. Carries id and the new message. |
Channel viewers |
message_edit |
message_edit (link previews) |
The server added or removed link preview embeds, which have generated: true. The message isn’t marked as edited. |
Every connection that can view the channel and reported server_side_embeds, including the author’s |
Link previews |
message_delete |
A message was removed. Carries id. Also sent for each message removed when a user leaves or is banned with message deletion. |
Channel viewers |
message_delete |
message_pin, message_unpin |
A message was pinned or unpinned. Carries id and pinned. A message_new announcement follows. |
Channel viewers |
message_pin |
reaction_add, reaction_remove |
A reaction changed. Carries id, emoji, from, and total. |
Channel viewers |
reaction_add |
message_react_add, message_react_remove |
The same as reaction_add and reaction_remove, when the sender used the old command names. |
Channel viewers |
Legacy compatibility |
poll_vote |
Someone voted. Carries poll_id, message_id, user, option_ids, and results. |
Channel viewers |
poll_vote |
poll_end |
A poll was closed. Carries poll_id, message_id, and results. |
Channel viewers |
poll_end |
typing |
Someone is typing. Carries user and duration in milliseconds. |
Channel viewers |
typing |
unreads_update |
You marked a channel or thread as read. Carries last_viewed. |
The account, including the connection that sent unreads_ack |
unreads_ack |
Thread events go to viewers of the thread’s forum channel and carry that channel in channel.
| Event |
Meaning |
Receives |
Details |
thread_create |
A thread was created. Carries thread. |
Channel viewers |
thread_create |
thread_update |
A thread was renamed, archived, or locked. Carries thread. |
Channel viewers |
thread_update |
thread_delete |
A thread was deleted. Carries thread_id. |
Channel viewers |
thread_delete |
thread_join, thread_leave |
Someone joined or left a thread. Carries thread, thread_id, and user. |
Channel viewers |
thread_join |
thread_pin, thread_unpin |
A thread was pinned or unpinned. Carries thread_id and pinned. |
Channel viewers |
thread_pin |
| Event |
Meaning |
Receives |
Details |
user_join |
Someone joined the server, for the first time or again. Carries user. |
Everyone except the connection that signed in |
Users and presence |
user_leave |
Someone left, was banned, or was removed because their Rotur account is banned. Carries username. |
Everyone |
user_leave |
user_connect |
A member came online or stopped being invisible. Carries user. |
Everyone allowed to see the member’s presence |
Users and presence |
user_disconnect |
A member’s last connection closed, or they went invisible. Carries user. It doesn’t mean they left. |
Everyone allowed to see the member’s presence |
Users and presence |
user_clients |
A member’s clients or devices list changed. Carries username, clients, and devices. |
Everyone allowed to see the member’s presence |
Users and presence |
status_get |
A member changed their status. Carries username and status. The member and viewers with manage_users also get invisible. |
Everyone. Other viewers don’t get it while the member is invisible or offline. |
status_set |
user_update |
A moderator changed someone’s nickname (user and nickname), or a server account changed its avatar (user and pfp). |
Everyone else for nicknames. Everyone for avatars. |
user_update, avatars |
nickname_update, nickname_remove |
Someone set or cleared their own nickname with /nick. Carries user (the user ID), username, and nickname when set. |
Everyone |
Built-in slash commands |
user_kick |
A member was kicked. Carries user and kicked: true. |
Everyone else |
user_kick |
user_roles_get |
A member’s roles changed. Carries user, roles, color, and gradient. |
Everyone else |
user_roles_get |
Hidden status and the manage_users permission change which presence events a viewer gets. When a viewer gains or loses manage_users, the server sends them user_connect or user_disconnect for each online invisible member, so their view matches their new access.
| Event |
Meaning |
Receives |
Details |
role_create |
A role was created. Carries the role in val. |
Everyone else |
role_create |
role_update |
A role changed. Carries the role in val. |
Everyone else |
role_update |
role_delete |
A role was deleted. Carries the deleted role in val. |
Everyone else |
role_delete |
role_reorder |
Role order changed. Carries roles, the new order. |
Everyone else |
role_reorder |
| Event |
Meaning |
Receives |
Details |
slash_add |
Slash commands became available. Carries commands. |
Everyone |
slash_register |
slash_remove |
Slash commands went away, because they were replaced, a plugin was unloaded, or the registering connection closed. Carries commands. |
Everyone |
slash_register |
slash_call |
Someone ran a command that your connection registered. Answer it with slash_response. |
The connection that registered the command |
slash_call |
Voice events go to every signed-in connection that can view the voice channel, including the user’s own. Users severed from the subject are skipped.
| Event |
Meaning |
Receives |
Details |
voice_user_joined |
Someone joined a voice channel. Carries channel and user. Only other participants see the user’s peer_id. |
Viewers of the voice channel |
voice_join |
voice_user_updated |
Someone muted or unmuted. Carries channel and user. |
Viewers of the voice channel |
voice_mute |
voice_user_left |
Someone left a voice channel or disconnected. Carries channel and username. When two users in the same call are severed, each also gets this event for the other. |
Viewers of the voice channel |
voice_leave |