Objects and IDs
Objects have Discord's fields, so libraries can read them. A few fields that mean nothing on Voicaw are always the same (no nicknames, no boosts, no stickers…). This page covers where Voicaw differs.
IDs
IDs are strings of digits, as on Discord, but they're Voicaw's own numbers, not
snowflakes. The ids in the app and in the API are the same. Because they aren't snowflakes,
a library's "created at" worked out from an id (discord.js createdAt,
discord.py created_at) is meaningless: it shows a date in 2015.
Two exceptions, which Discord's libraries need:
- @everyone's role id is the guild's id, as on Discord. Use the guild's id wherever you mean @everyone (overwrites, role ids).
- Categories have 240 (1099511627776) added to their id, since Voicaw keeps them apart from channels. A channel's
parent_iduses the same number.
Users
A person's username is their Voicaw username, their display name is
global_name, and discriminator is "0". A bot is
shown in Discord's older style: username is its application's name and
discriminator four digits, so discord.js's tag reads like
Weather Bot#0420. avatar is the picture's id, and
avatar_url (not Discord's) its address.
Guilds
name, icon, owner_id, roles and
emojis are Voicaw's. Everything else is Discord's plainest value: no features,
no boosts, no system or rules channel, verification level 0, locale en-GB.
icon_url (not Discord's) is the icon's address. Guilds aren't end-to-end
encrypted: what a bot reads in them, the server can read too.
Channels
| Type | What |
|---|---|
0 | Text channel |
2 | Voice channel: its text chat takes messages as a text channel does (no threads), and bots join it with LiveKit (see Voice) |
4 | Category |
11 | Thread (all of Voicaw's threads are public) |
Voicaw's list channels (tasks) and document channels aren't in the bot API: bots don't see
them. Channel names are lower case without spaces, as on Discord. Categories carry no
permission overwrites. Threads follow their channel's permissions: they have no overwrites
of their own. Slow mode doesn't exist (rate_limit_per_user is 0).
Members and roles
Members have their roles (without @everyone) and joined_at. There
are no nicknames, member avatars, timeouts, or server mute or deafen. Roles have
name, color, position, permissions,
hoist and mentionable, but no icons. A bot's own role is
managed: true with tags.bot_id.
Messages
type:0(default),19(a reply, withmessage_referenceandreferenced_message),18(someone started a thread) or46(a poll ended).contentis always there: there's no Message Content intent to ask for.mentionsare the people the text mentions (<@id>),mention_rolesthe roles it pinged.embedsandattachmentsare Discord's. People's messages sent from the app have none: their files and links are in the text.reactionscount each emoji, withmefor the bot's own. Custom emoji are{ id, name }.- Webhook messages have
webhook_idand the webhook as a bot author. - In gateway events, messages also have
guild_idand the author'smember. - Polls in Voicaw are written in the message text: there's no
pollobject.