Messages
Messages are immutable-looking public events backed by mutable JSONL records. A message belongs to a text channel or to a thread whose parent forum channel supplies visibility and permissions.
Payload
Section titled “Payload”A new message needs at least one of content, embeds, or attachments. Content is capped by limits.post_content, checked for privileged role mentions, rate-limited, and subject to channel slow mode. Replies reference an existing message and store a 40-character preview. ping: false suppresses the reply ping.
Message signing can attach author_id, key_id, signature, and client timestamp. The server validates signing metadata and records its own signed time. A moderator edit that changes signed payload removes the original signature and records edited_by.
Reads and search
Section titled “Reads and search”Clients can load a tail window, one message, replies, pinned messages, or a bounded window around an ID. Search supports fuzzy text plus author, mention, role mention, ping, content-type, pinned, edited, and time filters.
Persistence and events
Section titled “Persistence and events”Creation persists before emitting message_new. Edits rewrite the shard and broadcast a complete public message. Deletion checks own/other permissions, removes the record, deletes referenced attachments, and broadcasts the ID. Public serialization resolves internal user IDs, pings, reply authors, reaction users, interactions, and polls.
See message schema and the message command tree.
