Skip to content

What a wisp hears

Your wisp’s line follows one group, its own, and Woosh puts into it exactly what the grants of every server it is in allow (with slices, each line hears its share of the servers). The events are the ones the apps hear, with the same names and keys, and two differences: a channel’s events carry server first, since your wisp is in many servers, and a member carries no presence or activity. A grant taken away takes its events with it at once: nothing outside a grant ever reaches your line.

Whatever it was granted, a wisp hears what concerns itself:

Event When
command a person ran one of its commands, where it has commands (Commands)
act a person pressed something on one of its cards (Presses and private cards)
server with new and grants it was added to a server
server with grants its grant there changed: an admin changed it, or your wisp stopped asking for something it had
server.gone it is out of a server: removed by an admin, kicked, banned, or the server deleted
Event d
server id, name, icon?, owner, unread? (mark when its members see marks rather than counts for what they have not read), new?, grants?
server.gone id, why, name? (the server’s name; left out when deleted)

Added to Saturday Squad, hearing the server’s shape and the lines of #general, and allowed to post and offer commands there:

{
"c": 61,
"n": 106,
"t": "server",
"d": {
"id": "5c3b1a2d-8e4f-4a6b-9c7d-0e1f2a3b4c55",
"name": "Saturday Squad!",
"owner": "3f1c9a52-6d1e-4c8b-9a51-2b7e0c4d8f11",
"new": true,
"grants": {"hears":["shape","messages"],"does":["post","commands"],"channels":["6d4c2b3e-9f5a-4b7c-8d6e-1f2a3b4c5d66"]}
}
}

grants is whole every time: hears and does list what it has (left out: none), and channels the channels it may hear and act in (left out: every channel, those made later too). Its server permissions are not in it: they sit on the role made for your wisp (Permissions). Later, an admin let it react as well, everywhere:

{"c":61,"n":120,"t":"server","d":{"id":"5c3b1a2d-8e4f-4a6b-9c7d-0e1f2a3b4c55","name":"Saturday Squad!","owner":"3f1c9a52-6d1e-4c8b-9a51-2b7e0c4d8f11","grants":{"hears":["shape","messages"],"does":["post","react","commands"]}}}

Taken out by an admin. Nothing more of the server reaches the line; treat any server.gone as the end of that server for your wisp:

{"c":61,"n":140,"t":"server.gone","d":{"id":"5c3b1a2d-8e4f-4a6b-9c7d-0e1f2a3b4c55","why":"removed","name":"Saturday Squad!"}}
Grant Events For
shape channel, channel.gone, layout, roles, emoji, emoji.gone, and server when the server itself changes keeping a map of the server
members member, member.gone, member.roles welcomes, auto-roles, logs
messages message, message.edit, message.gone, reaction levels, moderation, replies
voice nothing yet

shape and members cover the whole server, whatever channels the grant names. messages covers only the channels it names.

Event d
channel id, server, name, type? (voice; left out: text), new? (just made)
channel.gone id, server
layout server, nodes?: the order of channels and sections, each type (channel, section), id, name?, children? (each type, id)
roles server, roles: every role, highest first, each id, name, color?, permissions?, admin?, position?, default?, hoisted?
emoji id, server, name, url, serverName
emoji.gone id, server

layout and roles are whole after any change, so replace yours with them.

Event d
member server, user, name?, avatar?, avatarColor?, banner?, bannerColor?, status?, flags?, joined, roleIds?
member.roles server, user, roleIds? (the whole list; left out: none)
member.gone server, user: they are out of the server, however they went

status is the person’s own words, and flags marks on the account, as bits: 2 is a wisp. dani joins:

{"c":61,"n":114,"t":"member","d":{"server":"5c3b1a2d-8e4f-4a6b-9c7d-0e1f2a3b4c55","user":"e1f7a3c5-9d4b-4a2e-b8c6-5f0e3d2a7144","name":"dani","avatar":"639198830442210985","avatarColor":"#06d6a0","bannerColor":"#14b8a6","joined":1791915000004271}}

A member never carries presence or activity: Woosh takes both off before your wisp hears it.

Event d
message server, id, channel, parent? (the thread, for a thread reply), author, name?, avatar?, text?, at, edited?, reply?, files?, imported?, card?, run?
message.edit server, id, channel, parent?, text?, files?, edited?, card?, run?: what it holds replaces the line’s
message.gone server, id, channel, parent?
reaction server, message, channel, parent?, emoji, user, name? (on an add), on? (left out: taken off)

A line’s parts:

  • reply: the line it answers, as it was then: id, author?, name?, text?.
  • files: 1 to 10, each id, url, name?, type?, mb?, w?, h?, expires?.
  • card: a wisp’s card.
  • run: the run a wisp’s line or edit answers: id, user, name?, and command for a command’s answer (left out for a press’s).
  • imported: on a line brought over from another app when its server was copied into Woosh, the name it had there. Such a line has no name, and its author is not a person.

ana’s line, as your wisp hears it:

{
"c": 61,
"n": 107,
"t": "message",
"d": {
"server": "5c3b1a2d-8e4f-4a6b-9c7d-0e1f2a3b4c55",
"id": "0199de8f-6c10-7a1b-8c3d-4e5f6a7b8c01",
"channel": "6d4c2b3e-9f5a-4b7c-8d6e-1f2a3b4c5d66",
"author": "3f1c9a52-6d1e-4c8b-9a51-2b7e0c4d8f11",
"name": "ana",
"avatar": "639201477315520417",
"text": "Bora jogar às 21h? :wave:",
"at": 1791914412304271
}
}

A wisp never hears its own new lines or reactions back, its answers to runs among them: it knows what it did. It does hear message.edit and message.gone for its own lines, as for anyone’s, and every other wisp’s lines.

avatar is a short key, not an address. Build the address from it, media from your last ready, and the id it sits beside (user, or author on a line):

The key The address
holds :// the key itself
digits only <media>/<user>?v=<key>
anything else <media>/default-avatars/<key>.png

No key: the person has no picture.

Under no grant does a wisp hear typing, presence, read marks, digests, anyone’s inbox, or lines between people in DMs. Nor does it hear what goes to people’s apps alone: asides, card.live frames (a tally’s count moving among them) and commands.

Your wisp’s own presence is kept for it: it shows online while one of its lines is up. Its words are yours to set, though the apps do not draw them yet (Your wisp’s words).

© 2026 Woosh AS. All rights reserved.