Skip to content

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 ​

eventointentquando
READYsempreDepois do IDENTIFY.
GUILD_CREATEsempreA conta entrou num servidor.
GUILD_UPDATEGUILDSNome ou ícone do servidor mudou.
GUILD_DELETEsempreO servidor foi apagado, ou a conta saiu dele.
GUILD_ROLE_CREATEGUILDSCargo criado.
GUILD_ROLE_UPDATEGUILDSCargo editado ou mudou de posição.
GUILD_ROLE_DELETEGUILDSCargo apagado.
GUILD_EMOJIS_UPDATEGUILDSEmoji criado, renomeado ou apagado.
CHANNEL_CREATEsempreCanal, postagem ou DM nova; ou a conta passou a ver um canal.
CHANNEL_UPDATEGUILDSCanal editado.
CHANNEL_DELETEGUILDSCanal apagado; ou a conta deixou de vê-lo.
GUILD_MEMBER_ADDGUILD_MEMBERSAlguém entrou no servidor.
GUILD_MEMBER_UPDATEGUILD_MEMBERSApelido, ADM ou cargos de um membro mudaram.
GUILD_MEMBER_REMOVEGUILD_MEMBERSAlguém saiu, foi removido ou banido.
PRESENCE_UPDATEPRESENCESAlguém ficou online ou offline.
USER_UPDATEsempreAlguém mudou o perfil.
MESSAGE_CREATEMESSAGESMensagem nova.
MESSAGE_UPDATEMESSAGESMensagem editada, ou prévias de links prontas.
MESSAGE_DELETEMESSAGESMensagem apagada.
MESSAGE_ACKMESSAGESA própria conta marcou um canal como lido.
MESSAGE_REACTION_ADDREACTIONSReação adicionada.
MESSAGE_REACTION_REMOVEREACTIONSReação tirada.
TYPING_STARTTYPINGAlguém está digitando.
VOICE_STATE_UPDATEVOICE_STATESAlguém entrou, saiu ou mudou o estado numa sala de voz.
INTERACTION_CREATEsempreAlguém usou um comando do bot ou clicou num botão dele. Só o bot recebe.
INTERACTION_RESPONSEsempreO bot respondeu a uma interação sua.
RELATIONSHIP_ADDsempreAmizade, pedido ou bloqueio novo ou mudado.
RELATIONSHIP_REMOVEsempreAmizade, 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" }
campotipodescrição
ididO 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.

campotipodescrição
guild_ididO servidor.
role_ididO cargo apagado.

GUILD_EMOJIS_UPDATE ​

Os emojis do servidor mudaram. Traz a lista inteira: substitua a que você tem. Todos os membros recebem.

campotipodescrição
guild_ididO servidor.
emojisEmoji[]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; recipients traz 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).

campotipodescrição
guild_ididO servidor.
user_ididQuem 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.

campotipodescrição
user_ididA conta.
statusstring"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.

campotipodescrição
ididA 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, content e edited_timestamp. Se os links mudaram, traz também embeds: [] (as prévias antigas saem); se houver links novos, outro MESSAGE_UPDATE traz as prévias deles.
  • Prévias prontas. Traz id, channel_id, embeds com as prévias, e também content e edited_timestamp (este pode ser null, se a mensagem nunca foi editada).
campotipodescrição
ididA mensagem.
channel_ididO canal.
contentstringO texto atual.
edited_timestampms?A última edição.
embedsEmbed[]opcional. Só quando as prévias mudaram.

Atualize só os campos que vieram. Recebe quem vê o canal.

MESSAGE_DELETE ​

campotipodescrição
ididA mensagem apagada.
channel_ididO 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.

campotipodescrição
channel_ididO canal.
message_ididA última mensagem lida.

MESSAGE_REACTION_ADD ​

Uma conta reagiu a uma mensagem. Recebe quem vê o canal (inclusive quem reagiu).

campotipodescrição
message_ididA mensagem.
channel_ididO canal.
user_ididQuem reagiu.
emojistringEmoji 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.

campotipodescrição
channel_ididO canal.
user_ididQuem está digitando.
timestampmsQuando.

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.

campotipodescrição
ididA interação.
tokenstringPara responder. Vale 15 minutos.
typestring"command" ou "button".
channel_ididOnde.
guild_idid?O servidor; null numa DM.
userPublicUserQuem usou.
memberMember?Quem usou, como membro do servidor.
commandobjetoSó em comandos: { name, options: [{ name, type, value }] }, na ordem do comando, só as preenchidas. user, channel e role vêm como ids.
custom_idstringSó em cliques: o custom_id do botão.
messageMessageSó 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…".

campotipodescrição
ididA interação.
channel_ididOnde.

Zynko · zynko.org