Pular para o conteúdo
Decoding Chat API

Coleções de conteúdo do usuário

Menções recentes e mensagens salvas são listas privadas que apenas a conta proprietária pode ler. Rotas adicionais excluem as mensagens criadas pelo autor, uma filtrada e imediata, e a outra não filtrada e com atraso de um dia. As extrações de dados vivem em Extrações de dados.

Estas rotas são apenas para usuários. O Decoding Chat rejeita um bot ou credencial bearer OAuth2 com 403 ACCESS_DENIED, e uma conta que tenha uma ação necessária pendente com 403 ACCOUNT_SUSPICIOUS_ACTIVITY.

Todas as rotas, exceto Excluir as mensagens do usuário atual, chegam ao Gateway principal, e uma falha no Gateway retorna 502 BAD_GATEWAY, 503 SERVICE_UNAVAILABLE ou 504 GATEWAY_TIMEOUT. Salvar mensagem resolve o canal antes de gravar, então uma falha lá não armazena nada. A solicitação ainda retorna 204 quando um despacho de Mensagem Salva Criada, Mensagem Salva Excluída ou Menção Recente Excluída falha ao ser publicado após a gravação.

Uma entrada salva é um marcador privado que associa uma mensagem ao canal de onde foi salva. Salvar uma mensagem não notifica ninguém, incluindo o seu autor.

A entrada não armazena nenhuma cópia da mensagem. O Decoding Chat resolve a mensagem com base nas permissões atuais em cada leitura, de forma que uma entrada pode ter uma mensagem em uma leitura e não ter na próxima.

CampoTipoDescrição
id1snowflakeO ID da entrada salva
channel_id2snowflakeO canal do qual a mensagem foi salva
message_idsnowflakeO ID da mensagem salva
statusstringO status da mensagem salva da entrada
message3?objeto de mensagemA mensagem como o solicitante pode vê-la atualmente, ou null

1 Sempre igual a message_id, porque uma mensagem pode ser salva no máximo uma vez por conta

2 O canal fornecido quando a mensagem foi salva e não é derivado novamente na leitura

3 Null exatamente quando status é missing_permissions, e de outra forma a mensagem resolvida para o solicitante no momento da leitura. Uma mensagem que ainda existe e precisa de READ_MESSAGE_HISTORY que o solicitante não possui mais também é null.

ValorDescrição
availableA mensagem foi resolvida e está incluída na entrada
missing_permissions1O solicitante não pode mais acessar o canal ou ler a mensagem, então message é null

1 Relatado quando a resolução do canal falha com MISSING_PERMISSIONS, UNKNOWN_CHANNEL, UNKNOWN_GUILD, ACCESS_DENIED ou NSFW_CONTENT_AGE_RESTRICTED. Também relatado quando o canal resolve e uma mensagem armazenada precisa de READ_MESSAGE_HISTORY que o solicitante não possui.

ValorDescrição
selectedAs opções de contexto fornecidas e o filtro de guilda escolhem o que é excluído
inaccessible_only1A exclusão cobre apenas as guildas que o solicitante deixou e as DMs de grupo das quais o solicitante não é mais membro

1 Mensagens diretas um-para-um nunca são elegíveis sob este escopo

ValorDescrição
excludeA exclusão abrange todas as guildas elegíveis, exceto excluded_guild_ids
include_onlyA exclusão abrange apenas included_guild_ids
GET/v1/users/@me/mentions

Lista o histórico de menções recentes do solicitante. Retorna um array de objetos de mensagem que o solicitante ainda pode ler, em ordem decrescente de ID da mensagem.

O Decoding Chat resolve cada entrada retida em relação às permissões atuais. Uma mensagem que foi excluída, ou cujo canal o solicitante não pode mais alcançar, é omitida sem ser removida do histórico. Os filtros e o limit são aplicados antes dessa resolução, de modo que uma página completa pode retornar menos mensagens do que o limit.

CampoTipoDescrição
limit?1integerO número máximo de menções lidas no histórico (1-100, padrão 25)
roles?2 3booleanSe as entradas registradas como menções a cargos são incluídas (padrão true)
everyone?2 3 4booleanSe as entradas registradas como menções a everyone são incluídas (padrão true)
guilds?2 5booleanSe as entradas em um canal de guilda são incluídas (padrão true)
before?snowflakeO limite superior no ID da mensagem da entrada, exclusivo

1 Um valor fora do intervalo falha com VALUE_MUST_BE_INTEGER_IN_RANGE no caminho limit. O valor é lido com uma análise de inteiro inicial, então 25abc é aceito como 25

2 Apenas as strings exatas true, True e 1 são lidas como verdadeiras. Qualquer outro valor, incluindo TRUE e yes, é lido como falso

3 O filtro exclui todas as entradas com o tipo de menção especificado, então uma mensagem que chegou através de uma menção direta e de um cargo é excluída enquanto roles for falso

4 Uma menção @here é registrada como uma menção everyone. Ela é registrada apenas para uma conta com uma sessão de Gateway ativa na guilda quando a menção foi propagada

5 Toda entrada registrada tem uma guilda, então definir isso como falso sempre retorna um array vazio

A resposta não possui metadados de cursor, então before e limit são os únicos controles de paginação.

O Decoding Chat descarta uma menção direta no momento da criação da mensagem quando a conta mencionada bloqueou o autor, de forma que ela nunca chega ao histórico. Uma menção @everyone ou @here não é registrada enquanto suppress_everyone estiver habilitado para a guilda, e uma menção a cargo não é registrada enquanto suppress_roles estiver habilitado. Uma mensagem que também tem uma menção direta ainda é registrada. Alterar essas configurações de notificação de guilda posteriormente não adiciona ou remove o histórico retroativamente.

StatusCorpoCondição
200array[objeto de mensagem]As menções legíveis foram retornadas
403resposta de erroUma entrada retida está em uma guilda cujo estado de associação não pôde ser resolvido, retornando ACCESS_DENIED, ou em um canal com restrição de idade para o qual a conta não foi verificada, retornando NSFW_CONTENT_AGE_RESTRICTED

40 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:mentions:read.

POST/v1/users/@me/mentions/read

Remove entradas do histórico de menções recentes do solicitante. Retorna 204 com um corpo vazio. Emite um evento do Gateway de Menção Recente Excluída para cada entrada que ele remove.

CampoTipoDescrição
message_ids1array[snowflake]Os IDs das mensagens das menções recentes para remover (1-100 entradas)

1 Um ID ausente do histórico é uma operação sem efeito que não emite nenhum despacho. Um ID duplicado não é desduplicado, então um ID nomeando uma entrada real duas vezes emite o despacho duas vezes

StatusCorpoCondição
204vazioTodos os IDs fornecidos foram processados

O Decoding Chat pesquisa todos os IDs fornecidos primeiro e exclui apenas as entradas que existem. O despacho Menção Recente Excluída atinge as próprias sessões do solicitante uma vez para cada entrada encontrada, então uma solicitação nomeando apenas IDs desconhecidos não grava nada.

60 requisições por 10 segundos para cada usuário autenticado, no bucket user:mentions:delete, que é compartilhado com Excluir menção recente.

DELETE/v1/users/@me/mentions/{message_id}

Remove uma entrada do histórico de menções recentes do solicitante. Retorna 204 com um corpo vazio. Emite um evento do Gateway de Menção Recente Excluída quando uma entrada é removida.

CampoTipoDescrição
message_idsnowflakeO ID da mensagem da entrada de menção recente
StatusCorpoCondição
204vazioA entrada foi removida, ou nenhuma entrada com esse ID da mensagem

Uma entrada correspondente é excluída e Menção Recente Excluída atinge as próprias sessões do solicitante. Quando não existia entrada, a solicitação não grava nada. A mensagem permanece em seu canal, e a contagem de menções no canal e o indicador de não lido do solicitante não são alterados.

60 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:mentions:delete, que é compartilhado com Marcar menções recentes como lidas.

GET/v1/users/@me/saved-messages

Lista a coleção de mensagens salvas privada do solicitante. Retorna um array de objetos de mensagem salva em ordem decrescente de ID da mensagem.

A resposta é um array simples sem metadados de cursor, então before e limit são os únicos controles de paginação. Uma entrada cujo canal o solicitante não pode mais acessar, ou cuja mensagem o solicitante não pode mais ler, retorna com status missing_permissions e uma mensagem null. Uma entrada cuja mensagem não existe mais é excluída e omitida. O array pode conter menos entradas do que o limit.

CampoTipoDescrição
limit?1 2integerO número máximo de entradas lidas da coleção (1-100, padrão 25)
before?2snowflakeO limite superior no ID da mensagem da entrada, exclusivo

1 Um valor fora do intervalo falha com VALUE_MUST_BE_INTEGER_IN_RANGE no caminho limit

2 Aplicado às entradas armazenadas antes de cada uma ser resolvida

Uma guilda configurando message_history_cutoff ainda serve uma mensagem postada na ou após a data de corte para um membro sem READ_MESSAGE_HISTORY, então a entrada permanece available. Uma mensagem postada antes do corte é relatada como missing_permissions.

StatusCorpoCondição
200array[objeto de mensagem salva]Entradas salvas foram retornadas
403resposta de erroUma entrada armazenada está em uma guilda cujo estado de associação não pôde ser resolvido, retornando ACCESS_DENIED, ou em um canal com restrição de idade, retornando NSFW_CONTENT_AGE_RESTRICTED

Quando essa leitura exclui uma entrada cuja mensagem não existe mais, o Decoding Chat não emite nenhum despacho de Mensagem Salva Excluída.

40 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:saved_messages:read.

POST/v1/users/@me/saved-messages

Adiciona uma mensagem à coleção particular de mensagens salvas do solicitante. Retorna 204 com um corpo vazio. Emite um evento do Gateway de Mensagem Salva Criada.

O solicitante precisa ter acesso ao canal e à mensagem.

CampoTipoDescrição
channel_id1snowflakeO canal contendo a mensagem
message_idsnowflakeO ID da mensagem para salvar

1 A entrada salva mantém este ID do canal literalmente

Uma conta possui no máximo as entradas configuradas no limite da instância max_bookmarks. O Decoding Chat resolve o valor efetivo da conta em cada salvamento e o padrão é 50. Atingir o limite máximo falha com 400 MAX_BOOKMARKS, cujo corpo possui max_bookmarks relatando o limite.

A verificação é feita antes do Decoding Chat tocar no canal ou na mensagem, portanto, salvar novamente uma mensagem já armazenada é recusado também ao atingir o limite.

StatusCorpoCondição
204vazioA mensagem está presente na coleção salva
400resposta de erroA coleção está em seu limite e a requisição retorna MAX_BOOKMARKS
403resposta de erroFalta ao solicitante VIEW_CHANNEL ou associação de guilda, retornando MISSING_PERMISSIONS, o estado de associação não pôde ser resolvido, retornando ACCESS_DENIED, ou o canal requer verificação de idade, retornando NSFW_CONTENT_AGE_RESTRICTED
404resposta de erroO canal retorna UNKNOWN_CHANNEL, sua guilda retorna UNKNOWN_GUILD, a mensagem retorna UNKNOWN_MESSAGE, ou a conta retorna UNKNOWN_USER

Salvar uma mensagem já armazenada reescreve a entrada. Mensagem Salva Criada atinge as próprias sessões do solicitante a cada salvamento aceito, incluindo os repetidos, com o objeto da mensagem completo da forma como o solicitante pode vê-la no momento.

30 requisições por 10 segundos para cada usuário autenticado, no bucket user:saved_messages:write, que é compartilhado com Remover mensagem salva.

DELETE/v1/users/@me/saved-messages/{message_id}

Remove uma mensagem da coleção privada de mensagens salvas do solicitante. Retorna 204 com um corpo vazio. Emite um evento do Gateway de Mensagem Salva Excluída.

Nenhum acesso atual ao canal é exigido.

CampoTipoDescrição
message_idsnowflakeO ID da mensagem da entrada salva
StatusCorpoCondição
204vazioA mensagem está ausente da coleção salva

O Decoding Chat sempre emite a exclusão, e Mensagem Salva Excluída atinge as próprias sessões do solicitante em todas as solicitações aceitas, incluindo uma que nomeie uma mensagem que a conta nunca salvou. A entrada salva é removida e a mensagem permanece em seu canal.

30 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:saved_messages:write, que é compartilhado com Salvar mensagem.

POST/v1/users/@me/messages/bulk-delete-mineMFA

Exclui as mensagens de autoria do solicitante que o filtro fornecido selecionar. Requer o modo sudo. Retorna 202 com um corpo vazio antes que a exclusão comece.

A exclusão emite despachos em lote de Mensagens Excluídas em Massa à medida que avança, e por fim uma Mensagem Criada para a mensagem direta de conclusão.

O solicitante prova o modo sudo com os campos de sudo abaixo ou com uma prova existente no cabeçalho de solicitação X-Fluxer-Sudo-Mode-JWT.

CampoTipoDescrição
scope?stringO escopo de exclusão, padrão selected
include_dms?booleanSe DMs individuais que o solicitante ainda tem abertas estão incluídas (padrão true)
include_dms_closed?1booleanSe DMs individuais que o solicitante fechou estão incluídas (padrão true)
include_group_dms?2booleanSe DMs de grupo das quais o solicitante ainda é membro estão incluídas (padrão true)
include_guilds?2booleanSe canais de guildas das quais o solicitante ainda é membro estão incluídos (padrão true)
guild_filter_mode?3stringO modo de filtro de guilda, padrão exclude
excluded_guild_ids?array[snowflake]As guildas não tocadas no modo exclude (máx. 500 IDs, padrão vazio)
included_guild_ids?array[snowflake]As únicas guildas direcionadas no modo include_only (máx. 500 IDs, padrão vazio)
start_date?4?ISO8601 timestampO limite inferior inclusivo de data de mensagem, ou null para sem limite
end_date?4?ISO8601 timestampO limite superior exclusivo de data de mensagem, ou null para sem limite
password?5stringA senha da conta (8-256 caracteres)
mfa_method?5stringO método de MFA sudo, sendo totp ou webauthn
mfa_code?5stringO código autenticador sudo, ou um código de backup não consumido (1-32 caracteres)
webauthn_response?5objeto de asserção WebAuthnA asserção WebAuthn de sudo
webauthn_challenge?5stringO desafio WebAuthn de sudo (1-256 caracteres)

1 Independente do include_dms, portanto, configurar include_dms para falso e include_dms_closed para verdadeiro afeta apenas as mensagens diretas fechadas

2 Sob o escopo selected, uma DM de grupo é elegível apenas enquanto o solicitante ainda é destinatário, e um canal de guilda apenas enquanto o solicitante ainda é membro

3 Avaliado apenas enquanto include_guilds é verdadeiro e scope é selected

4 Fornecer ambos os limites exige que start_date seja estritamente anterior a end_date, e um par igual falha na validação em end_date

5 Estes campos formam o objeto de verificação sudo. Qual combinação é aceita depende dos autenticadores configurados na conta

O escopo selected requer pelo menos uma opção de contexto verdadeira e uma solicitação que desative todas as opções falha a validação no include_dms. O escopo inaccessible_only ignora as opções de contexto e os filtros de guilda.

Nenhum dos escopos inclui o canal pessoal de notas do solicitante, então esta operação não consegue excluir uma nota pessoal.

Solicitar uma extração de dados filtrada aceita a mesma forma de filtro e a aplica às mensagens contidas em um arquivo. Essa operação não requer modo sudo.

StatusCorpoCondição
202vazioA exclusão foi aceita para processamento assíncrono
400resposta de erroO intervalo de datas ou seleção de contexto são inválidos, ou uma prova sudo fornecida está errada e a solicitação retorna INVALID_PASSWORD, PASSWORD_NOT_SET ou INVALID_MFA_CODE
403resposta de erroNenhuma prova sudo aceita está presente e a solicitação retorna SUDO_MODE_REQUIRED
500resposta de erroA exclusão não pôde ser enfileirada

Uma conta que contenha um autenticador MFA que provou o modo sudo com MFA recebe uma nova prova no cabeçalho da resposta. Uma solicitação que já possuía uma prova válida obtém esse mesmo token retornado de volta sem aumentar o tempo de validade.

À medida que a exclusão avança, cada canal afetado emite Mensagens Excluídas em Massa em lotes de no máximo 100 IDs de mensagem. Os anexos das mensagens excluídas são permanentemente removidos.

Após a conclusão, a conta do sistema envia ao solicitante uma mensagem direta na localidade da conta informando o número total de mensagens excluídas e os canais tocados. Essa mensagem chega através do despacho comum de Mensagem Criada.

5 requisições a cada 30 minutos para cada usuário autenticado, no bucket user:messages:bulk_delete_mine_filtered.

POST/v1/users/@me/messages/deleteMFA

Agenda a exclusão de todas as mensagens que o solicitante enviou até hoje. Retorna 204 com corpo vazio. Emite um evento do Gateway de Atualização de Usuário.

A solicitação exige o modo sudo. Excluir as mensagens do usuário atual é a contraparte imediata que recebe um filtro. Esta forma não requer filtros e aguarda por um dia.

Chamar a operação novamente substitui a exclusão programada pendente. A conta pode manter, no máximo, uma exclusão pendente, relatada pelo objeto de exclusão em massa pendente no objeto de usuário.

O corpo é o objeto de verificação sudo e não tem outro campo adicional. Uma prova existente se encontra no cabeçalho da solicitação X-Fluxer-Sudo-Mode-JWT.

StatusCorpoCondição
204vazioA exclusão foi agendada
400resposta de erroUma prova sudo fornecida está errada e a requisição retorna INVALID_PASSWORD, PASSWORD_NOT_SET ou INVALID_MFA_CODE
403resposta de erroNenhuma prova sudo válida está presente e a solicitação retorna SUDO_MODE_REQUIRED
500resposta de erroA exclusão não pôde ser agendada

O 204 contem X-Fluxer-Sudo-Mode-JWT quando a verificação sudo tiver gerado ou reutilizado o token.

O novo agendamento substitui qualquer exclusão pendente e começa exatamente no prazo de um dia posterior. Suas contagens de mensagens e canais refletem o registro da conta no momento de agendamento e não são mais atualizadas no meio tempo.

As contagens atualizadas e o agendamento são comunicados ao solicitante pelo método de Atualização de Usuário. Essa requisição não exclui nenhuma mensagem. Devido a isso, nenhum despacho alcança um canal antes que o trabalho agendado entre em ação.

6 requisições por minuto para cada usuário autenticado, no bucket user:messages:bulk_delete, o qual é compartilhado com Cancelar a exclusão em massa de mensagens.

DELETE/v1/users/@me/messages/delete

Cancela uma exclusão em massa de mensagens pendente. Retorna 200 no sucesso. Emite um evento de Atualização de Usuário do Gateway.

Nenhuma verificação de sudo se aplica. Uma conta sem exclusão pendente continua retornando 200 e continua emitindo o despacho. Quando o processo programado iniciar não restará o que ser cancelado e mensagens excluídas já não são mais restauradas.

CampoTipoDescrição
successbooleanSe o cancelamento foi aplicado, sempre true
StatusCorpoCondição
200corpo da respostaA exclusão pendente, se presente, foi cancelada
500resposta de erroO cancelamento não pôde ser aplicado

O instante determinado por agendamento e ambas as contagens armazenadas passam a ser limpas da conta, o trabalho enfileirado é removido, e a Atualização de Usuário alcança o solicitante com pending_bulk_message_deletion definido como null.

6 requisições por minuto para cada usuário autenticado, no bucket user:messages:bulk_delete, o qual também é compartilhado com Solicitar a exclusão em massa de mensagens.