Pular para o conteúdo
Decoding Chat API

Canais privados

Um canal privado é uma conversa fora de qualquer guilda. É uma mensagem direta entre duas contas ou uma DM de grupo com seu próprio conjunto de participantes. Seus campos vêm do objeto de canal.

As rotas aqui recebem uma sessão de usuário ou um token de bot. Uma credencial bearer OAuth2 recebe 403 ACCESS_DENIED, e uma conta com uma ação obrigatória pendente recebe 403 ACCOUNT_SUSPICIOUS_ACTIVITY.

A resposta de ambas as operações de pré-carregamento. Não possui conjunto fixo de campos, e o nome de cada propriedade é o snowflake de um canal solicitado.

CampoTipoDescrição
{channel_id}12?objeto mensagemA última mensagem que o chamador pode ler no canal, ou null

1 Um canal solicitado que não é nem uma mensagem direta nem uma DM de grupo não possui nenhuma propriedade. Um canal que não pode ser resolvido, ou cuja última mensagem está ausente, está presente com o valor null

2 Um ID de canal repetido se contrai em uma única propriedade, portanto, o objeto contém no máximo uma entrada para cada ID distinto

Objeto de destinatário não adicionável de DM de grupo

Seção intitulada “Objeto de destinatário não adicionável de DM de grupo”

Um destinatário que não pôde ser adicionado a uma DM de grupo e o motivo. Criar canal privado retorna um array destes como unaddable_recipients no nível superior de uma resposta de erro GROUP_DM_RECIPIENTS_NOT_ADDABLE.

CampoTipoDescrição
user_idsnowflakeO destinatário que não pôde ser adicionado
reasonstringO motivo de não adicionável pelo qual o destinatário foi rejeitado
ValorNomeDescrição
unknown_userUsuário desconhecidoO destinatário não resolve
not_friendsNão amigosO chamador é uma conta comum e não possui amizade com o destinatário
blocked1BloqueadoO chamador é uma conta de bot e não compartilha guilda com o destinatário
group_dm_add_disabledAdição de DM de grupo desativadaAs flags de permissão de adição de DM de grupo do destinatário rejeitam o chamador

1 Relatado apenas no caminho do bot. O caminho comum relata uma amizade ausente como not_friends

GET/v1/users/@me/channelsBot

Retorna os objetos de canal de mensagem direta e DM de grupo abertos do chamador.

Uma mensagem direta fechada está ausente, mesmo que o canal e seu histórico ainda existam. A resposta não tem garantia de ordem e não é paginada. O canal de notas pessoais do chamador nunca é retornado.

Cada canal retornado tem seus destinatários com o chamador removido, de modo que uma mensagem direta mantém exatamente um destinatário e uma DM de grupo um a menos que a contagem de participantes. Uma DM de grupo cujo único participante é o chamador omite a chave recipients inteiramente.

O Decoding Chat omite uma entrada aberta cujo canal não lista mais o chamador entre seus destinatários, de modo que sair de uma DM de grupo não requer uma chamada de limpeza separada.

StatusCorpoCondição
200array[objeto de canal]Os canais privados abertos foram retornados

40 requisições por 10 segundos para cada usuário autenticado, no bucket user:channels, compartilhado com Criar canal privado, Fixar canal privado e Desafixar canal privado.

POST/v1/users/@me/channelsBot

Abre uma mensagem direta com uma conta ou cria uma DM de grupo. Retorna um objeto de canal em caso de sucesso. Emite os eventos Gateway Channel Create e Message Create.

Um campo do corpo seleciona o tipo de canal. recipient_id abre uma mensagem direta. recipients sempre cria uma DM de grupo, independentemente de seu comprimento. Um array de um único elemento cria uma DM de grupo com dois participantes, e um array vazio cria uma DM de grupo cujo único participante é o chamador.

Uma solicitação fornecendo recipients também consome o bucket user:group_dm:create e está sujeita à verificação de CAPTCHA abaixo, seja qual for a contagem de participantes resultante.

Quando a política da comunidade da instância define direct_messages_disabled como true, todas as solicitações retornam 400 DIRECT_MESSAGES_DISABLED após a validação do corpo e a aplicação do bucket de DM de grupo e do CAPTCHA.

Uma conta não reivindicada não possui senha e não chegou pelo SSO. O Decoding Chat rejeita um chamador não reivindicado com 400 UNCLAIMED_ACCOUNT_CANNOT_JOIN_GROUP_DMS quando recipients é fornecido, e com 400 UNCLAIMED_ACCOUNT_CANNOT_SEND_DIRECT_MESSAGES caso contrário. Um chamador comum, então, precisa de um endereço de email verificado, caso contrário a solicitação retorna 403 DIRECT_MESSAGE_EMAIL_VERIFICATION_REQUIRED. Um chamador de bot está isento do requisito de email e nunca é não reivindicado.

Uma solicitação nomeando o chamador como seu próprio alvo retorna 400 CANNOT_DM_YOURSELF como o código de campo em recipient_id em INVALID_FORM_BODY. Um alvo não resolvido retorna 404 UNKNOWN_USER.

O Decoding Chat não lê nenhum estado de bloqueio, nenhuma amizade e nenhuma guilda compartilhada nesta rota. Um alvo que resolve é admitido, então o chamador abre uma mensagem direta com uma conta que o bloqueou. CANNOT_SEND_MESSAGES_TO_USER é alcançável apenas a partir de Criar mensagem, o que aplica a política de mensagens diretas do destinatário a cada envio.

O conjunto de participantes, ou seja, os destinatários fornecidos mais o chamador, permanece dentro do limite max_group_dm_recipients da instância resolvido para o chamador, cujo padrão é 50. Ultrapassá-lo retorna 400 MAX_GROUP_DM_RECIPIENTS com o teto aplicado no membro de nível superior max_recipients. recipients é limitado a 49 elementos antes de o limite ser lido, portanto, um limite de instância aumentado não aumenta o teto efetivo.

Um ID duplicado em recipients retorna 400 DUPLICATE_RECIPIENTS_NOT_ALLOWED, e o próprio ID do chamador dentro dele retorna 400 CANNOT_ADD_YOURSELF_TO_GROUP_DM. Ambos são códigos de campo em recipients sob INVALID_FORM_BODY.

Cada participante, incluindo o chamador, detém menos DMs de grupo abertas do que o limite max_group_dms_per_user da instância resolvido para essa conta, cujo padrão é 150. Um participante no limite faz a solicitação retornar 400 MAX_GROUP_DMS com o teto aplicado no membro de nível superior max_group_dms.

O Decoding Chat avalia cada outro destinatário de forma independente e coleta cada falha, usando os motivos não adicionáveis acima. Um destinatário reprovado rejeita a solicitação inteira com 400 GROUP_DM_RECIPIENTS_NOT_ADDABLE. A resposta tem as entradas rejeitadas no membro de nível superior unaddable_recipients e os IDs de usuário aceitos em addable_recipients, para que o chamador possa tentar novamente com um conjunto menor.

Um chamador comum não pode adicionar um destinatário que ele bloqueou ou um destinatário que o bloqueou. Bloquear exclui a amizade em ambas as contas, e uma solicitação de amizade entre as duas contas não cria uma nova amizade enquanto houver bloqueio.

CampoTipoDescrição
X-Captcha-Token?1stringA prova CAPTCHA
X-Captcha-Type?2stringO provedor CAPTCHA, seja hcaptcha ou turnstile

1 Lido apenas em uma solicitação fornecendo recipients, em que uma prova ausente retorna 400 CAPTCHA_REQUIRED e uma prova rejeitada retorna 400 INVALID_CAPTCHA, assim como uma prova para um provedor para o qual a instância não possui a chave secreta. CAPTCHA informa quando uma instância pula a verificação

2 O valor hcaptcha ou turnstile seleciona esse provedor, independentemente de a instância o ter configurado ou não. O provedor configurado da instância é usado quando o cabeçalho está ausente ou tem qualquer outro valor

CampoTipoDescrição
recipient_id?1snowflakeO único destinatário de uma mensagem direta
recipients?1array[snowflake]Os outros participantes de uma DM de grupo, excluindo o chamador (máx. 49)

1 Exatamente um dos dois é fornecido. Fornecer ambos ou nenhum deles falha na validação do corpo com o caminho de entrada root

StatusCorpoCondição
200objeto de canalA mensagem direta foi aberta ou a DM de grupo foi criada
400resposta de erroCAPTCHA, elegibilidade da conta, conjunto de destinatários, política de relacionamento, limite de DM de grupo ou política de instância rejeita a criação
403resposta de erroO endereço de email de um chamador comum não foi verificado e a solicitação retorna DIRECT_MESSAGE_EMAIL_VERIFICATION_REQUIRED
404resposta de erroO chamador ou o destinatário da mensagem direta não resolve

Uma mensagem direta recém-criada abre apenas para o chamador e emite Channel Create para o chamador. O lado do destinatário permanece fechado até que ele próprio o abra, ou até que a dupla se torne amiga através de Aceitar solicitação ou bloquear usuário, o que abre ambos os lados. Reabrir uma mensagem direta existente sempre emite CHANNEL_CREATE para o chamador.

Criar uma DM de grupo torna o chamador seu proprietário, adiciona o conjunto completo de participantes e emite Channel Create para cada participante. Ela cria uma mensagem do sistema RECIPIENT_ADD com autoria do chamador para cada outro destinatário e emite Message Create para cada uma a todos os participantes. A criação inicial não emite Channel Recipient Add, que é reservado para um destinatário adicionado posteriormente. Uma DM de grupo criada a partir de um array recipients vazio não produz mensagem do sistema.

40 requisições por 10 segundos para cada usuário autenticado, no bucket user:channels, compartilhado com Listar canais privados, Fixar canal privado e Desafixar canal privado.

Uma solicitação fornecendo recipients também consome o bucket user:group_dm:create de 10 solicitações por hora para cada usuário autenticado, que está isento do limite global HTTP.

POST/v1/users/@me/preload-messagesBot

Retorna o objeto de mensagens pré-carregadas contendo a última mensagem legível de cada canal privado solicitado.

O Decoding Chat resolve cada canal solicitado de forma independente e reporta um canal desconhecido, uma permissão ausente ou uma mensagem ausente como null para aquele canal. A solicitação ainda responde 200. Ele aplica a mesma autorização de leitura que o histórico de mensagens comum. Um canal que o chamador não consegue ver é indistinguível de um cujo histórico está vazio.

CampoTipoDescrição
channels1array[snowflake]Os canais privados para pré-carregar (máx. 100)

1 Obrigatório. Um array vazio é aceito e retorna um objeto vazio, e mais de 100 elementos falham na validação do corpo antes que qualquer canal seja lido

StatusCorpoCondição
200objeto de mensagens pré-carregadasOs canais solicitados foram resolvidos

Esta leitura não confirma nenhuma mensagem e não altera o estado de leitura do chamador. O próprio ID de usuário do chamador é o ID de seu canal de notas pessoais, e resolvê-lo cria a linha desse canal quando a conta não o possui. O canal de notas não é nem uma mensagem direta nem uma DM de grupo, portanto, a resposta não possui propriedade para ele.

40 requisições por 10 segundos para cada usuário autenticado, no bucket user:preload_messages, compartilhado com Pré-carregar mensagens de canais privados por apelido.

Pré-carregar mensagens de canais privados por apelido

Seção intitulada “Pré-carregar mensagens de canais privados por apelido”
POST/v1/users/@me/channels/messages/preloadBot

Um apelido de Pré-carregar mensagens de canais privados. O corpo da solicitação, a resposta, a autorização e os efeitos colaterais são idênticos, incluindo a criação do canal de notas pessoais descrita lá.

O corpo é o mesmo de Pré-carregar mensagens de canais privados.

StatusCorpoCondição
200objeto de mensagens pré-carregadasOs canais solicitados foram resolvidos

40 requisições por 10 segundos para cada usuário autenticado, no bucket user:preload_messages. Os caminhos compartilham a mesma cota.

PUT/v1/users/@me/channels/{channel_id}/pinBot

Adiciona uma mensagem direta ou DM de grupo à ordem de fixados do chamador. Retorna 204 com um corpo vazio. Emite um evento Gateway User Pinned DMs Update.

O Decoding Chat resolve o canal com a autorização de canal comum do chamador primeiro. Um canal privado do qual o chamador não é um destinatário retorna 404 UNKNOWN_CHANNEL, e um canal que não existe retorna a mesma coisa. O canal então tem que ser uma mensagem direta ou uma DM de grupo, de modo que o canal de notas pessoais do chamador e um canal de guilda visível são rejeitados com 400 CHANNEL_MUST_BE_DM_OR_GROUP_DM, um código de campo em channel_id em INVALID_FORM_BODY.

Um canal de guilda que o chamador não pode ver falha na resolução primeiro e retorna 403 MISSING_PERMISSIONS. O Decoding Chat retorna 404 UNKNOWN_GUILD para uma linha de canal que sobreviveu à sua guilda. Onde o registro da guilda ainda existe e o estado de adesão do chamador não pode ser resolvido, a solicitação retorna 403 ACCESS_DENIED.

O Decoding Chat anexa um canal recém-fixado após todo canal já fixado. Um canal posteriormente fechado, abandonado ou excluído permanece no conjunto de fixados, e apenas Desafixar canal privado ou a exclusão da conta do chamador remove uma entrada.

CampoTipoDescrição
channel_idsnowflakeO ID da mensagem direta ou DM de grupo
StatusCorpoCondição
204vazioO canal está presente no conjunto de fixados
400resposta de erroO canal não é nem uma mensagem direta nem uma DM de grupo e a solicitação retorna CHANNEL_MUST_BE_DM_OR_GROUP_DM
403resposta de erroUm canal de guilda não é visível e a solicitação retorna MISSING_PERMISSIONS, ou a guilda existe enquanto a adesão não pôde ser resolvida e a solicitação retorna ACCESS_DENIED
404resposta de erroO canal não existe ou o chamador não é um destinatário, cada um retornando UNKNOWN_CHANNEL, ou um canal de guilda sobreviveu à sua guilda e a solicitação retorna UNKNOWN_GUILD

O canal é anexado à ordem de fixados do chamador, e o User Pinned DMs Update atinge apenas o chamador com a ordem resultante completa como um array de strings de ID de canal. O canal em si não é modificado, e nenhum outro participante pode observar a ordem de fixados do chamador.

40 requisições por 10 segundos para cada usuário autenticado, no bucket user:channels, compartilhado com Listar canais privados, Criar canal privado e Desafixar canal privado.

DELETE/v1/users/@me/channels/{channel_id}/pinBot

Remove uma mensagem direta ou DM de grupo da ordem de fixados do chamador. Retorna 204 com um corpo vazio. Emite um evento Gateway User Pinned DMs Update.

O Decoding Chat resolve e verifica o tipo do canal exatamente como em Fixar canal privado, de modo que um canal que não resolve mais não pode ser desafixado por esta rota. Desafixar preserva a ordem relativa de cada canal que permanece, e uma fixação posterior é anexada ao final. Desafixar um canal que não está fixado ainda retorna 204 e emite o mesmo Dispatch.

CampoTipoDescrição
channel_idsnowflakeO ID da mensagem direta ou DM de grupo
StatusCorpoCondição
204vazioO canal está ausente do conjunto de fixados
400resposta de erroO canal não é nem uma mensagem direta nem uma DM de grupo e a solicitação retorna CHANNEL_MUST_BE_DM_OR_GROUP_DM
403resposta de erroUm canal de guilda não é visível e a solicitação retorna MISSING_PERMISSIONS, ou a guilda existe enquanto a adesão não pôde ser resolvida e a solicitação retorna ACCESS_DENIED
404resposta de erroO canal não existe ou o chamador não é um destinatário, cada um retornando UNKNOWN_CHANNEL, ou um canal de guilda sobreviveu à sua guilda e a solicitação retorna UNKNOWN_GUILD

O canal é removido da ordem de fixados do chamador, e o User Pinned DMs Update atinge apenas o chamador com a ordem resultante completa como um array de strings de ID de canal. O canal em si não é fechado ou excluído, e seus destinatários não recebem nenhum Dispatch.

40 requisições por 10 segundos para cada usuário autenticado, no bucket user:channels, compartilhado com Listar canais privados, Criar canal privado e Fixar canal privado.