Eventos
Tudo o que o gateway envia com op: 0. O nome do evento vem em t e os dados em d:
json
{ "op": 0, "t": "MESSAGE_DELETE", "d": { "id": "1234567890123456789", "channel_id": "1234567890123450000" } }Cada evento chega só às conexões que pediram o intent dele, e só às contas que podem vê-lo. "Quem vê o canal" quer dizer: todos os membros do servidor, se o canal é aberto a todos; senão, só quem tem Ver canais nele (veja Permissões de canal); numa DM, as duas contas.
Os eventos de um mesmo canal chegam na ordem em que aconteceram. Trate-os de forma idempotente: um evento que já está refletido no READY pode chegar logo depois dele.
Resumo
| evento | intent | quando |
|---|---|---|
READY | sempre | Depois do IDENTIFY. |
GUILD_CREATE | sempre | A conta entrou num servidor. |
GUILD_UPDATE | GUILDS | Nome ou ícone do servidor mudou. |
GUILD_DELETE | sempre | O servidor foi apagado, ou a conta saiu dele. |
GUILD_ROLE_CREATE | GUILDS | Cargo criado. |
GUILD_ROLE_UPDATE | GUILDS | Cargo editado ou mudou de posição. |
GUILD_ROLE_DELETE | GUILDS | Cargo apagado. |
GUILD_EMOJIS_UPDATE | GUILDS | Emoji criado, renomeado ou apagado. |
CHANNEL_CREATE | sempre | Canal, postagem ou DM nova; ou a conta passou a ver um canal. |
CHANNEL_UPDATE | GUILDS | Canal editado. |
CHANNEL_DELETE | GUILDS | Canal apagado; ou a conta deixou de vê-lo. |
GUILD_MEMBER_ADD | GUILD_MEMBERS | Alguém entrou no servidor. |
GUILD_MEMBER_UPDATE | GUILD_MEMBERS | Apelido, ADM ou cargos de um membro mudaram. |
GUILD_MEMBER_REMOVE | GUILD_MEMBERS | Alguém saiu, foi removido ou banido. |
PRESENCE_UPDATE | PRESENCES | Alguém ficou online ou offline. |
USER_UPDATE | sempre | Alguém mudou o perfil. |
MESSAGE_CREATE | MESSAGES | Mensagem nova. |
MESSAGE_UPDATE | MESSAGES | Mensagem editada, ou prévias de links prontas. |
MESSAGE_DELETE | MESSAGES | Mensagem apagada. |
MESSAGE_ACK | MESSAGES | A própria conta marcou um canal como lido. |
MESSAGE_REACTION_ADD | REACTIONS | Reação adicionada. |
MESSAGE_REACTION_REMOVE | REACTIONS | Reação tirada. |
TYPING_START | TYPING | Alguém está digitando. |
VOICE_STATE_UPDATE | VOICE_STATES | Alguém entrou, saiu ou mudou o estado numa sala de voz. |
INTERACTION_CREATE | sempre | Alguém usou um comando do bot ou clicou num botão dele. Só o bot recebe. |
INTERACTION_RESPONSE | sempre | O bot respondeu a uma interação sua. |
RELATIONSHIP_ADD | sempre | Amizade, pedido ou bloqueio novo ou mudado. |
RELATIONSHIP_REMOVE | sempre | Amizade, pedido ou bloqueio desfeito. |
Conexão
READY
O primeiro evento depois do IDENTIFY, com o estado inteiro da conta. Os campos estão em Gateway → READY.
Servidores
GUILD_CREATE
A conta entrou num servidor: criou, entrou por convite ou (para um bot) foi adicionada. Só a conta que entrou recebe.
d: GuildFull, com os canais que ela pode ver.
GUILD_UPDATE
O nome ou o ícone do servidor mudou. Todos os membros recebem.
d: Guild.
GUILD_DELETE
O servidor foi apagado (todos os membros recebem), ou a conta saiu, foi removida ou banida (só ela recebe). Esqueça o servidor e tudo dele.
json
{ "id": "1234567890123456789" }| campo | tipo | descrição |
|---|---|---|
id | id | O servidor. |
GUILD_ROLE_CREATE
Cargo criado, inclusive o cargo de um bot que acabou de entrar. Todos os membros recebem.
d: Role (tem guild_id).
GUILD_ROLE_UPDATE
Cargo editado. Também chega para cada cargo cuja position mudou: ao criar um cargo (os outros sobem), ao apagar (os de cima descem) e ao reordenar (chega um para cada cargo). Todos os membros recebem.
d: Role.
GUILD_ROLE_DELETE
Cargo apagado. Todos os membros recebem. Os membros que tinham o cargo chegam em seguida em GUILD_MEMBER_UPDATE.
| campo | tipo | descrição |
|---|---|---|
guild_id | id | O servidor. |
role_id | id | O cargo apagado. |
GUILD_EMOJIS_UPDATE
Os emojis do servidor mudaram. Traz a lista inteira: substitua a que você tem. Todos os membros recebem.
| campo | tipo | descrição |
|---|---|---|
guild_id | id | O servidor. |
emojis | Emoji[] | Todos os emojis do servidor agora. |
Canais
CHANNEL_CREATE
Chega quando:
- um canal é criado (recebe quem vê o canal);
- uma postagem é aberta num fórum (recebe quem vê o fórum);
- uma DM é aberta pela primeira vez (as duas contas recebem;
recipientstraz a outra); - a conta passou a ver um canal que já existia, porque ganhou um cargo ou uma permissão de canal mudou.
d: Channel.
CHANNEL_UPDATE
Um canal foi editado (nome, tópico, posição, categoria, modo lento, tags, servidor de voz...), ou suas permissões mudaram. Também chega para os canais que ficaram sem categoria quando a categoria deles foi apagada. Recebe quem vê o canal.
d: Channel, completo.
CHANNEL_DELETE
O canal foi apagado, ou a conta deixou de ver o canal (perdeu um cargo, ou uma permissão de canal mudou). Recebe quem via o canal. Apagar um fórum manda só o CHANNEL_DELETE do fórum: as postagens dele somem junto.
d: Channel, como era.
Membros
GUILD_MEMBER_ADD
Alguém entrou no servidor (por convite, ou um bot adicionado). Todos os membros recebem, inclusive quem entrou.
d: Member (tem guild_id).
GUILD_MEMBER_UPDATE
Mudou o apelido, a marcação de ADM ou os cargos de um membro. Todos os membros recebem.
d: Member, completo.
GUILD_MEMBER_REMOVE
Alguém saiu, foi removido ou banido, ou era um bot que foi apagado. Os membros que ficaram recebem (quem saiu recebe GUILD_DELETE).
| campo | tipo | descrição |
|---|---|---|
guild_id | id | O servidor. |
user_id | id | Quem saiu. |
Contas
PRESENCE_UPDATE
Uma conta abriu a primeira conexão com o gateway (online) ou fechou a última (offline). Recebem as contas relacionadas a ela: de servidores em comum, de DMs com ela e amigas. Também chega para o servidor inteiro quando alguém online entra nele.
| campo | tipo | descrição |
|---|---|---|
user_id | id | A conta. |
status | string | "online" ou "offline". |
USER_UPDATE
Uma conta mudou o perfil (nome de exibição, avatar...). Recebem a própria conta e as relacionadas a ela.
d: PublicUser.
RELATIONSHIP_ADD
Uma relação da conta foi criada ou mudou (pedido de amizade recebido ou aceito, bloqueio). Só a conta dona da relação recebe.
d: Relationship.
RELATIONSHIP_REMOVE
Uma relação da conta deixou de existir.
| campo | tipo | descrição |
|---|---|---|
id | id | A outra conta. |
Mensagens
MESSAGE_CREATE
Mensagem nova num canal de servidor, numa postagem ou numa DM. Recebe quem vê o canal, incluindo quem mandou: um bot recebe as próprias mensagens e deve ignorá-las (d.author.id === meuId).
d: Message. Não tem guild_id; descubra o servidor pelo channel_id (os canais vieram no READY e no GUILD_CREATE).
embeds chega vazio; se a mensagem tiver links, um MESSAGE_UPDATE traz as prévias pouco depois.
MESSAGE_UPDATE
Chega em dois casos, sempre parcial:
- Edição. Traz
id,channel_id,contenteedited_timestamp. Se os links mudaram, traz tambémembeds: [](as prévias antigas saem); se houver links novos, outroMESSAGE_UPDATEtraz as prévias deles. - Prévias prontas. Traz
id,channel_id,embedscom as prévias, e tambémcontenteedited_timestamp(este pode sernull, se a mensagem nunca foi editada).
| campo | tipo | descrição |
|---|---|---|
id | id | A mensagem. |
channel_id | id | O canal. |
content | string | O texto atual. |
edited_timestamp | ms? | A última edição. |
embeds | Embed[] | opcional. Só quando as prévias mudaram. |
Atualize só os campos que vieram. Recebe quem vê o canal.
MESSAGE_DELETE
| campo | tipo | descrição |
|---|---|---|
id | id | A mensagem apagada. |
channel_id | id | O canal. |
MESSAGE_ACK
A própria conta marcou um canal como lido (POST /channels/{id}/ack), talvez em outra conexão. Só a própria conta recebe.
| campo | tipo | descrição |
|---|---|---|
channel_id | id | O canal. |
message_id | id | A última mensagem lida. |
MESSAGE_REACTION_ADD
Uma conta reagiu a uma mensagem. Recebe quem vê o canal (inclusive quem reagiu).
| campo | tipo | descrição |
|---|---|---|
message_id | id | A mensagem. |
channel_id | id | O canal. |
user_id | id | Quem reagiu. |
emoji | string | Emoji Unicode, ou nome:id para um emoji de servidor. |
MESSAGE_REACTION_REMOVE
Uma conta tirou a própria reação. Mesmos campos de MESSAGE_REACTION_ADD.
TYPING_START
Alguém começou (ou continua) a digitar num canal. Recebe quem vê o canal, menos quem está digitando. Considere que a pessoa parou depois de uns 9 segundos sem outro TYPING_START.
| campo | tipo | descrição |
|---|---|---|
channel_id | id | O canal. |
user_id | id | Quem está digitando. |
timestamp | ms | Quando. |
Voz
VOICE_STATE_UPDATE
Alguém entrou numa sala de voz, saiu, trocou de sala ou mudou o estado (microfone, som, câmera, tela). Recebe quem vê a sala; numa chamada de DM, as duas contas. Quando a sala ou o servidor é apagado, cada um que estava nela recebe o evento de saída.
d: VoiceState. Quando a conta sai, channel_id vem null (e os self_* vêm false). Ao trocar de sala, chega primeiro a saída da sala antiga e depois a entrada na nova.
Interações
INTERACTION_CREATE
Alguém usou um comando do bot, ou clicou num botão de uma mensagem dele. Só o bot recebe. Responda com POST /interactions/{id}/{token}/callback em até 15 minutos.
| campo | tipo | descrição |
|---|---|---|
id | id | A interação. |
token | string | Para responder. Vale 15 minutos. |
type | string | "command" ou "button". |
channel_id | id | Onde. |
guild_id | id? | O servidor; null numa DM. |
user | PublicUser | Quem usou. |
member | Member? | Quem usou, como membro do servidor. |
command | objeto | Só em comandos: { name, options: [{ name, type, value }] }, na ordem do comando, só as preenchidas. user, channel e role vêm como ids. |
custom_id | string | Só em cliques: o custom_id do botão. |
message | Message | Só em cliques: a mensagem do botão. |
INTERACTION_RESPONSE
O bot respondeu a uma interação que a conta fez. Os apps usam para tirar o "pensando…".
| campo | tipo | descrição |
|---|---|---|
id | id | A interação. |
channel_id | id | Onde. |