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.
Objeto de mensagem salva
Seção intitulada “Objeto de mensagem salva”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.
Estrutura
Seção intitulada “Estrutura”| Campo | Tipo | Descrição |
|---|---|---|
| id1 | snowflake | O ID da entrada salva |
| channel_id2 | snowflake | O canal do qual a mensagem foi salva |
| message_id | snowflake | O ID da mensagem salva |
| status | string | O status da mensagem salva da entrada |
| message3 | ?objeto de mensagem | A 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.
Status de mensagem salva
Seção intitulada “Status de mensagem salva”| Valor | Descrição |
|---|---|
| available | A mensagem foi resolvida e está incluída na entrada |
| missing_permissions1 | O 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.
Escopos de exclusão em massa de mensagens
Seção intitulada “Escopos de exclusão em massa de mensagens”| Valor | Descrição |
|---|---|
| selected | As opções de contexto fornecidas e o filtro de guilda escolhem o que é excluído |
| inaccessible_only1 | A 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
Modos de filtro de guilda
Seção intitulada “Modos de filtro de guilda”| Valor | Descrição |
|---|---|
| exclude | A exclusão abrange todas as guildas elegíveis, exceto excluded_guild_ids |
| include_only | A exclusão abrange apenas included_guild_ids |
Listar menções recentes
Seção intitulada “Listar menções recentes”GET/v1/users/@me/mentionsLista 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.
Parâmetros de consulta
Seção intitulada “Parâmetros de consulta”| Campo | Tipo | Descrição |
|---|---|---|
| limit?1 | integer | O número máximo de menções lidas no histórico (1-100, padrão 25) |
| roles?2 3 | boolean | Se as entradas registradas como menções a cargos são incluídas (padrão true) |
| everyone?2 3 4 | boolean | Se as entradas registradas como menções a everyone são incluídas (padrão true) |
| guilds?2 5 | boolean | Se as entradas em um canal de guilda são incluídas (padrão true) |
| before? | snowflake | O 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.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | array[objeto de mensagem] | As menções legíveis foram retornadas |
| 403 | resposta de erro | Uma 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 |
Limite de taxa
Seção intitulada “Limite de taxa”40 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:mentions:read.
Marcar menções recentes como lidas
Seção intitulada “Marcar menções recentes como lidas”POST/v1/users/@me/mentions/readRemove 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.
Corpo JSON
Seção intitulada “Corpo JSON”| Campo | Tipo | Descrição |
|---|---|---|
| message_ids1 | array[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
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 204 | vazio | Todos os IDs fornecidos foram processados |
Efeitos colaterais
Seção intitulada “Efeitos colaterais”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.
Limite de taxa
Seção intitulada “Limite de taxa”60 requisições por 10 segundos para cada usuário autenticado, no bucket user:mentions:delete, que é compartilhado com Excluir menção recente.
Excluir menção recente
Seção intitulada “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.
Parâmetros de caminho
Seção intitulada “Parâmetros de caminho”| Campo | Tipo | Descrição |
|---|---|---|
| message_id | snowflake | O ID da mensagem da entrada de menção recente |
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 204 | vazio | A entrada foi removida, ou nenhuma entrada com esse ID da mensagem |
Efeitos colaterais
Seção intitulada “Efeitos colaterais”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.
Limite de taxa
Seção intitulada “Limite de taxa”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.
Listar mensagens salvas
Seção intitulada “Listar mensagens salvas”GET/v1/users/@me/saved-messagesLista 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.
Parâmetros de consulta
Seção intitulada “Parâmetros de consulta”| Campo | Tipo | Descrição |
|---|---|---|
| limit?1 2 | integer | O número máximo de entradas lidas da coleção (1-100, padrão 25) |
| before?2 | snowflake | O 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.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | array[objeto de mensagem salva] | Entradas salvas foram retornadas |
| 403 | resposta de erro | Uma 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 |
Efeitos colaterais
Seção intitulada “Efeitos colaterais”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.
Limite de taxa
Seção intitulada “Limite de taxa”40 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:saved_messages:read.
Salvar mensagem
Seção intitulada “Salvar mensagem”POST/v1/users/@me/saved-messagesAdiciona 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.
Corpo JSON
Seção intitulada “Corpo JSON”| Campo | Tipo | Descrição |
|---|---|---|
| channel_id1 | snowflake | O canal contendo a mensagem |
| message_id | snowflake | O ID da mensagem para salvar |
1 A entrada salva mantém este ID do canal literalmente
Limite da coleção
Seção intitulada “Limite da coleção”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.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 204 | vazio | A mensagem está presente na coleção salva |
| 400 | resposta de erro | A coleção está em seu limite e a requisição retorna MAX_BOOKMARKS |
| 403 | resposta de erro | Falta 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 |
| 404 | resposta de erro | O canal retorna UNKNOWN_CHANNEL, sua guilda retorna UNKNOWN_GUILD, a mensagem retorna UNKNOWN_MESSAGE, ou a conta retorna UNKNOWN_USER |
Efeitos colaterais
Seção intitulada “Efeitos colaterais”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.
Limite de taxa
Seção intitulada “Limite de taxa”30 requisições por 10 segundos para cada usuário autenticado, no bucket user:saved_messages:write, que é compartilhado com Remover mensagem salva.
Remover mensagem salva
Seção intitulada “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.
Parâmetros de caminho
Seção intitulada “Parâmetros de caminho”| Campo | Tipo | Descrição |
|---|---|---|
| message_id | snowflake | O ID da mensagem da entrada salva |
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 204 | vazio | A mensagem está ausente da coleção salva |
Efeitos colaterais
Seção intitulada “Efeitos colaterais”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.
Limite de taxa
Seção intitulada “Limite de taxa”30 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:saved_messages:write, que é compartilhado com Salvar mensagem.
Excluir as mensagens do usuário atual
Seção intitulada “Excluir as mensagens do usuário atual”POST/v1/users/@me/messages/bulk-delete-mineExclui 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.
Corpo JSON
Seção intitulada “Corpo JSON”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.
| Campo | Tipo | Descrição |
|---|---|---|
| scope? | string | O escopo de exclusão, padrão selected |
| include_dms? | boolean | Se DMs individuais que o solicitante ainda tem abertas estão incluídas (padrão true) |
| include_dms_closed?1 | boolean | Se DMs individuais que o solicitante fechou estão incluídas (padrão true) |
| include_group_dms?2 | boolean | Se DMs de grupo das quais o solicitante ainda é membro estão incluídas (padrão true) |
| include_guilds?2 | boolean | Se canais de guildas das quais o solicitante ainda é membro estão incluídos (padrão true) |
| guild_filter_mode?3 | string | O 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 timestamp | O limite inferior inclusivo de data de mensagem, ou null para sem limite |
| end_date?4 | ?ISO8601 timestamp | O limite superior exclusivo de data de mensagem, ou null para sem limite |
| password?5 | string | A senha da conta (8-256 caracteres) |
| mfa_method?5 | string | O método de MFA sudo, sendo totp ou webauthn |
| mfa_code?5 | string | O código autenticador sudo, ou um código de backup não consumido (1-32 caracteres) |
| webauthn_response?5 | objeto de asserção WebAuthn | A asserção WebAuthn de sudo |
| webauthn_challenge?5 | string | O 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.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 202 | vazio | A exclusão foi aceita para processamento assíncrono |
| 400 | resposta de erro | O 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 |
| 403 | resposta de erro | Nenhuma prova sudo aceita está presente e a solicitação retorna SUDO_MODE_REQUIRED |
| 500 | resposta de erro | A exclusão não pôde ser enfileirada |
Efeitos colaterais
Seção intitulada “Efeitos colaterais”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.
Limite de taxa
Seção intitulada “Limite de taxa”5 requisições a cada 30 minutos para cada usuário autenticado, no bucket user:messages:bulk_delete_mine_filtered.
Solicitar a exclusão em massa de mensagens
Seção intitulada “Solicitar a exclusão em massa de mensagens”POST/v1/users/@me/messages/deleteAgenda 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.
Corpo JSON
Seção intitulada “Corpo JSON”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.
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 204 | vazio | A exclusão foi agendada |
| 400 | resposta de erro | Uma prova sudo fornecida está errada e a requisição retorna INVALID_PASSWORD, PASSWORD_NOT_SET ou INVALID_MFA_CODE |
| 403 | resposta de erro | Nenhuma prova sudo válida está presente e a solicitação retorna SUDO_MODE_REQUIRED |
| 500 | resposta de erro | A 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.
Efeitos colaterais
Seção intitulada “Efeitos colaterais”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.
Limite de taxa
Seção intitulada “Limite de taxa”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.
Cancelar a exclusão em massa de mensagens
Seção intitulada “Cancelar a exclusão em massa de mensagens”DELETE/v1/users/@me/messages/deleteCancela 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.
Corpo da resposta
Seção intitulada “Corpo da resposta”| Campo | Tipo | Descrição |
|---|---|---|
| success | boolean | Se o cancelamento foi aplicado, sempre true |
Resposta
Seção intitulada “Resposta”| Status | Corpo | Condição |
|---|---|---|
| 200 | corpo da resposta | A exclusão pendente, se presente, foi cancelada |
| 500 | resposta de erro | O cancelamento não pôde ser aplicado |
Efeitos colaterais
Seção intitulada “Efeitos colaterais”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.
Limite de taxa
Seção intitulada “Limite de taxa”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.

