Pular para o conteúdo
Decoding Chat API

Configurações de usuário

As configurações de usuário incluem preferências em toda a conta e configurações de notificação para cada guilda e para canais privados.

Toda rota aqui é exclusiva para usuários e rejeita um bot ou credencial de portador OAuth2 com 403 ACCESS_DENIED. Toda rota, exceto Obter configurações do usuário atual, também rejeita uma conta com uma ação obrigatória pendente, com 403 ACCOUNT_SUSPICIOUS_ACTIVITY.

ValorDescrição
onlineO usuário é apresentado como online
dndO usuário é apresentado como ocupado (não perturbe)
idleO usuário é apresentado como ausente
invisible1O usuário é apresentado como offline para todos os outros

1 A conta permanece conectada e continua recebendo tráfego do Gateway enquanto este valor está armazenado

ValorDescrição
darkTema escuro
dark_legacyGeração anterior do tema escuro
coalTema carvão
lightTema claro
systemO tema segue o sistema operacional
ValorNomeDescrição
0ALL_MESSAGESNotificar para cada mensagem
1ONLY_MENTIONSNotificar apenas para menções
2NO_MESSAGESNão notificar para mensagens
3INHERITHerdar a configuração pai

Objeto de configuração de silenciamento da guilda

Seção intitulada “Objeto de configuração de silenciamento da guilda”

Expiração do silenciamento para uma guilda, um grupo de canais privados ou uma substituição de canal.

CampoTipoDescrição
end_time1?ISO8601 timestampO horário em que o silenciamento temporário deixa de ser aplicado, ou nulo para sem expiração
selected_time_window2integerA duração opaca de silenciamento que o cliente selecionou

1 Um end_time no passado não silencia mais as notificações, mas pode permanecer presente na resposta

2 O valor é retornado inalterado e não tem participação na entrega de notificações. Um valor ausente é retornado como 0

Objeto de entrada de configuração de silenciamento da guilda

Seção intitulada “Objeto de entrada de configuração de silenciamento da guilda”

A forma de entrada do objeto de configuração de silenciamento da guilda.

CampoTipoDescrição
end_time?1?ISO8601 timestamp | integerO horário em que o silenciamento temporário deixa de ser aplicado, ou nulo para sem expiração
selected_time_windowintegerA duração opaca de silenciamento que o cliente selecionou, armazenada literalmente

1 O valor é uma string de carimbo de data/hora ISO 8601 ou milissegundos Unix. Uma string que não seja um carimbo de data/hora válido é rejeitada com INVALID_ISO_TIMESTAMP

Objeto de substituição de notificação de canal

Seção intitulada “Objeto de substituição de notificação de canal”

Configurações de notificação armazenadas para um canal.

CampoTipoDescrição
collapsed1booleanSe a categoria do canal está recolhida
message_notificationsintegerNível de notificação
mutedbooleanSe as notificações do canal estão silenciadas
mute_config?objeto de configuração de silenciamento da guildaA configuração de silenciamento do canal, ou nulo quando nenhuma está armazenada
unread_badges1 2?integerNível de notificação para selos não lidos, ou nulo para herdar

1 O valor controla a exibição do cliente e não afeta a entrega de notificações

2 Toda resposta possui o membro, com nulo significando que nenhum nível está definido

Objeto de entrada de substituição de notificação de canal

Seção intitulada “Objeto de entrada de substituição de notificação de canal”

A forma de entrada do objeto de substituição de notificação de canal.

CampoTipoDescrição
collapsedbooleanSe a categoria do canal está recolhida
message_notificationsintegerNível de notificação
mutedbooleanSe as notificações do canal estão silenciadas
mute_config??objeto de entrada de configuração de silenciamento da guildaA configuração de silenciamento do canal, ou nulo para limpá-la
unread_badges??integerNível de notificação para selos não lidos, ou nulo para herdar

Configurações de notificação para uma guilda, ou para cada canal privado quando guild_id for nulo.

CampoTipoDescrição
guild_id1?snowflakeO ID da guilda, ou nulo para configurações de mensagens diretas e MD de grupo
message_notificationsintegerO nível de notificação padrão
mutedbooleanSe a guilda ou o grupo de canais privados está silenciado
mute_config?objeto de configuração de silenciamento da guildaA configuração de silenciamento, ou nulo quando nenhuma está armazenada
mobile_pushbooleanSe a entrega de notificação está habilitada para a guilda
suppress_everyonebooleanSe as menções @everyone estão suprimidas
suppress_rolesbooleanSe as menções de cargo estão suprimidas
hide_muted_channels3booleanSe os canais silenciados estão ocultos
channel_overrides2?map[snowflake, objeto de substituição de notificação de canal]As substituições por canal, ou nulo quando nenhuma estiver definida
unread_badges3 5?integerO nível de notificação padrão para selos não lidos, ou nulo para seguir message_notifications
version4integerA revisão monotônica deste objeto de configurações

1 As configurações do canal privado são sempre serializadas com guild_id nulo

2 Um mapa de substituição sem nenhuma entrada é serializado como nulo

3 O valor controla a exibição do cliente e não afeta a entrega de notificações

4 O valor aumenta a cada gravação armazenada, incluindo uma que não altere nenhum outro membro, para que um cliente possa descartar uma Atualização de configurações de guilda de usuário obsoleta

5 Toda resposta possui o membro, com nulo significando que nenhum nível está definido

{
"guild_id": null,
"message_notifications": 1,
"muted": false,
"mute_config": null,
"mobile_push": true,
"suppress_everyone": false,
"suppress_roles": false,
"hide_muted_channels": false,
"channel_overrides": null,
"unread_badges": null,
"version": 4
}

Ambas as operações de configurações de notificação aceitam exatamente esses campos. Cada campo é opcional, e um campo omitido deixa o valor armazenado inalterado.

CampoTipoDescrição
message_notifications?integerO nível de notificação padrão, INHERIT para novas configurações
muted?booleanSe a guilda está silenciada, padrão falso para novas configurações
mute_config??objeto de entrada de configuração de silenciamento da guildaA configuração de silenciamento, ou nulo para limpá-la
mobile_push?booleanSe a entrega de notificações está habilitada, padrão verdadeiro para novas configurações
suppress_everyone?booleanSe as menções @everyone estão suprimidas, padrão falso para novas configurações
suppress_roles?booleanSe as menções de cargo estão suprimidas, padrão falso para novas configurações
hide_muted_channels?booleanSe os canais silenciados estão ocultos, padrão falso para novas configurações
channel_overrides?1?map[snowflake, objeto de entrada de substituição de notificação de canal]O mapa completo de substituições por canal, ou nulo para limpá-lo
unread_badges??integerO nível de notificação padrão para selos não lidos, ou nulo para seguir message_notifications

1 O mapa fornecido torna-se o conjunto completo de substituições, e um mapa vazio limpa todas as substituições

Uma menção direta da conta sempre conta. Uma menção @everyone ou @here conta apenas se suppress_everyone for falso, e uma menção de cargo apenas se suppress_roles for falso. Uma menção que conta incrementa mention_count no estado de leitura do canal e adiciona uma entrada ao histórico de menções recentes. Uma mensagem de guilda com todas as menções suprimidas não registra nada.

Nenhum campo é lido fora de uma guilda. Uma mensagem direta e uma MD de grupo coletam apenas menções diretas, e cada uma delas conta independentemente do que as configurações do canal privado determinem.

A forma de entrada do objeto de configurações de usuário. Cada campo é opcional, e um campo omitido deixa o valor armazenado inalterado. Um campo presente com um valor substitui o valor armazenado por completo, incluindo um array ou membro de objeto.

Os campos exclusivos para a equipe (staff) são a exceção. Toda atualização redefine suppress_unprivileged_self_mentions, suppress_unprivileged_self_mentions_bypass_user_ids e staff_dm_access_user_ids como falso, vazio e vazio para uma conta comum, incluindo uma atualização que não nomeia nenhum deles.

Membros adicionais são aceitos e ignorados. guild_positions é um array de no máximo 200 snowflakes de guilda, e nada o lê. default_share_voice_activity pertence a Modificar compartilhamento de atividade de voz.

CampoTipoDescrição
status?stringStatus de presença
status_resets_at?1?ISO8601 timestamp | integerO horário no qual o cliente primário (first-party) define status como status_resets_to, ou nulo para limpá-lo
status_resets_to??stringStatus de presença que o cliente primário (first-party) define em status_resets_at, ou nulo para limpá-lo
theme?stringValor de tema
locale?2stringLocalidade da interface
restricted_guilds?3array[snowflake]As guildas onde as mensagens diretas de membros são restritas (máximo de 200)
bot_restricted_guilds?3array[snowflake]As guildas onde as mensagens diretas de bots são restritas (máximo de 200)
default_guilds_restricted?booleanSe as guildas recém-ingressadas restringem as mensagens diretas de membros
bot_default_guilds_restricted?booleanSe as guildas recém-ingressadas restringem as mensagens diretas de bots
inline_attachment_media?booleanSe a mídia de anexo é renderizada em linha
inline_embed_media?booleanSe a mídia incorporada (embed) é renderizada em linha
gif_auto_play?booleanSe a mídia GIF é reproduzida automaticamente
render_embeds?booleanSe os embeds de mensagens são renderizados
render_reactions?booleanSe as reações de mensagens são renderizadas
animate_emoji?booleanSe os emojis personalizados são animados
animate_stickers?integerConfiguração de animação de figurinhas (stickers)
render_spoilers?integerConfiguração de renderização de spoilers
message_display_compact?booleanSe as mensagens usam a exibição compacta
flags?4integerSinalizadores de fonte de amigo (Friend source flags)
friend_source_flags?4integerSinalizadores de fonte de amigo (Friend source flags)
incoming_call_flags?5integerSinalizadores de chamadas recebidas
group_dm_add_permission_flags?6integerSinalizadores de permissão para adicionar em MD de grupo
guild_folders?7array[objeto de entrada de pasta de guilda]O layout completo da pasta de guilda (máximo de 100)
custom_status?8?objeto de entrada de status personalizadoO status personalizado, ou nulo para limpá-lo
afk_timeout?integerOs segundos de inatividade antes que a conta seja apresentada como ausente (60-600)
time_format?integerConfiguração de formato de hora
developer_mode?booleanSe o modo desenvolvedor está ativado
trusted_domains?9array[string]Os domínios de links externos confiáveis (máximo de 1000, de 1 a 253 caracteres cada)
default_hide_muted_channels?booleanSe guildas recém-ingressadas ocultam canais silenciados
sensitive_content_friend_dm_filter?10integerFiltro de mídia sensível para mensagens diretas de amigos
sensitive_content_non_friend_dm_filter?11integerFiltro de mídia sensível para mensagens diretas de não amigos
sensitive_content_guild_filter?11integerFiltro de mídia sensível em guilda
suppress_unprivileged_self_mentions?12booleanSe menções diretas e de resposta de usuários sem privilégios são suprimidas
suppress_unprivileged_self_mentions_bypass_user_ids?12?array[snowflake]Os usuários isentos de supressão de menção
staff_dm_access_user_ids?12?array[snowflake]Os usuários que têm acesso concedido a mensagens diretas para a equipe
profile_privacy?integerNível de privacidade do perfil
synced_preferences?13?stringO snapshot de fluxer.user.preferences.v1.SyncedPreferences codificado em base64, ou nulo para limpá-lo

1 Uma string corresponde a ISO 8601 e um número inteiro são milissegundos Unix entre 0 e 8640000000000000. Qualquer outra coisa é rejeitada com INVALID_ISO_TIMESTAMP

2 O valor é uma entrada exata do registro de localidades suportado, nunca uma correspondência mais próxima negociada. Uma alteração também se aplica à localização de e-mails

3 Identificadores duplicados são removidos antes do limite ser aplicado, e um array vazio limpa o conjunto armazenado

4 flags é um alias herdado para friend_source_flags, que tem preferência quando ambos são fornecidos. friend_source_flags está limitado de 0 a 2147483647 enquanto flags aceita qualquer inteiro

5 O Decoding Chat reduz o valor antes de armazená-lo. Um valor com FRIENDS_ONLY é armazenado como FRIENDS_ONLY, e um valor com NOBODY e sem FRIENDS_ONLY é armazenado como NOBODY. Ambos mantêm SILENT_EVERYONE quando ele for fornecido, e qualquer outro valor é armazenado inalterado

6 Um valor com FRIENDS_ONLY, NOBODY ou EVERYONE é armazenado apenas como um desses sinalizadores. FRIENDS_ONLY tem preferência sobre os outros dois e NOBODY tem preferência sobre EVERYONE. Qualquer outro valor é armazenado inalterado

7 O array substitui o layout na íntegra

8 O objeto substitui o status personalizado armazenado na íntegra, portanto um membro omitido é limpo. Normalização de entrada transforma um objeto totalmente vazio em nulo, o que limpa o status

9 A única entrada * confia em todos os domínios e não pode ser combinada com um domínio concreto, que falha em relação aos trusted_domains com INVALID_TRUSTED_DOMAINS. Um array vazio limpa o conjunto

10 Uma conta que não é de adulto verificado só pode definir como desfocar (blur) ou bloquear. Qualquer outro valor falha nesse campo com AGE_RESTRICTED

11 Uma conta que não seja de adulto verificado não pode modificar este campo, e fornecer um valor falha no campo com AGE_RESTRICTED

12 O campo é exclusivo para a equipe (staff)

13 O valor possui no máximo 699052 caracteres em base64 e decodifica para no máximo 524288 bytes, o limite de 512 KiB. Uma string mais longa retorna 400 INVALID_FORM_BODY, uma decodificação sobredimensionada falha com TOO_LARGE, e um valor não decodificável falha com INVALID_FORMAT

O Decoding Chat decodifica um valor synced_preferences aceito, o recodifica canonicamente e armazena o resultado, de modo que um snapshot com apenas valores zero é armazenado como limpo e lido novamente como uma string vazia.

O Decoding Chat anexa uma pasta não categorizada vazia ao layout enviado que omita uma. Um ID de guilda listado em mais de uma pasta é mantido apenas na pasta com classificação mais alta. O Decoding Chat classifica as pastas em duas etapas. Uma pasta com nome não vazio tem prioridade sobre uma pasta sem nome. Entre duas pastas, ambas nomeadas ou ambas sem nome, uma pasta comum tem prioridade sobre a pasta não categorizada. A pasta que aparece primeiro na ordem enviada ganha em caso de empate.

Uma pasta de um layout de pasta de guilda enviado.

CampoTipoDescrição
id1integerO identificador da pasta
name??stringO nome da pasta (0-100 caracteres)
color?2?integerA cor RGB condensada de 24 bits da pasta (0-16777215)
flags?2integerSinalizadores de pasta de guilda
icon?2stringÍcone de pasta de guilda
guild_ids3array[snowflake]Os IDs das guildas na ordem de exibição (máximo 200)

1 O valor é de pelo menos -1, e -1 identifica a pasta sem categoria

2 Uma color omitida é armazenada como 0, as flags omitidas como 0, e um icon omitido como folder. Uma color abaixo de 0 falha com COLOR_VALUE_TOO_LOW e uma acima de 16777215 com COLOR_VALUE_TOO_HIGH

3 Identificadores duplicados em uma pasta são removidos antes que o limite seja aplicado

Um status personalizado conforme enviado junto a uma atualização de configurações.

CampoTipoDescrição
text?1?stringO texto do status (1-128 caracteres)
expires_at?2?ISO8601 timestamp | integerA expiração como uma string de carimbo de data/hora ou milissegundos Unix, ou nulo para sem expiração
emoji_id?3?snowflakeO emoji personalizado a ser exibido
emoji_name?3?stringO emoji Unicode a ser exibido (1-32 caracteres)

1 O Decoding Chat mede o comprimento após a normalização de entrada, o que transforma uma string vazia em nulo. Texto na lista de bloqueio ou um link na lista de bloqueio é rejeitado com 403 CONTENT_BLOCKED

2 O valor está no futuro, e um valor no momento atual ou anterior a ele é rejeitado

3 emoji_name é ignorado sem validação quando emoji_id possui um valor. Um emoji_id nulo deixa emoji_name no lugar, e então ele se torna exatamente um emoji Unicode

Um ID de emoji personalizado que não resolve falha com CUSTOM_EMOJI_NOT_FOUND contra custom_status.emoji_id. O Decoding Chat descarta o emoji resolvido para uma conta cujo limite de feature_global_expressions resolve para 0, então a requisição é bem-sucedida apenas com o texto.

Uma nova conta começa com esses valores. Todo campo não listado começa vazio, portanto não há status personalizado e synced_preferences é uma string vazia.

ConfiguraçãoValor inicial
TemaO tema escolhido no registro, ou dark (escuro)
Statusonline
RenderizaçãoEmoji personalizado animado, figurinhas (stickers) sempre animadas, reprodução automática de GIF, embeds e reações renderizados, spoilers ao clicar, anexo em linha e mídia incorporada
Chamadas recebidas e adições a MD de grupoApenas amigos
Restrições de MD de guildaSem restrições para membros e bots
Pastas de guildaUma pasta não categorizada vazia
Tempo limite de AFK600 segundos
Formato de horaAutomático
Domínios confiáveisNenhum
Privacidade de perfilVisível para todos os membros da guilda
Compartilhamento de atividade de vozHabilitado
Fontes de amigoAmigos em comum e guildas em comum, mais nenhuma relação para um adulto verificado
Filtros de mídia sensívelMostrar para um adulto verificado e desfocar de outra forma em MDs de amigos, bloquear em MDs de não amigos, desfocar em guildas
Modo desenvolvedorHabilitado em desenvolvimento, desabilitado em outros lugares
GET/v1/users/@me/settings

Retorna o objeto de configurações de usuário.

Uma conta com uma ação obrigatória pendente ainda pode chamar esta rota. Uma conta sem registro de configurações armazenado retorna 404 UNKNOWN_USER.

StatusCorpoCondição
200objeto de configurações de usuárioAs configurações foram retornadas
404resposta de erroAs configurações não existem e a requisição retorna UNKNOWN_USER

40 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:settings:get compartilhado com Obter usuário atual.

PATCH/v1/users/@me/settings

Modifica as configurações de toda a conta e retorna o objeto completo de configurações de usuário. Emite um evento de Gateway de Atualização de Configurações de Usuário.

Uma conta sem registro de configurações armazenado retorna 404 UNKNOWN_USER. Uma mudança de localidade também emite um evento de Gateway de Atualização de Usuário.

Um emoji de status personalizado não resolúvel retorna 400 INVALID_FORM_BODY com CUSTOM_EMOJI_NOT_FOUND contra custom_status.emoji_id. Rejeições de trusted_domains, de um filtro com restrição de idade e de um valor synced_preferences superdimensionado ou não decodificável retornam 400 VALIDATION_ERROR com seus próprios códigos em errors.

O corpo usa o objeto de atualização de configurações de usuário.

StatusCorpoCondição
200objeto de configurações de usuárioAs configurações foram aplicadas e retornadas
400resposta de erroUm valor de campo, o emoji de status personalizado, a combinação de domínios confiáveis, um filtro com restrição de idade ou o snapshot das preferências sincronizadas é inválido
403resposta de erroO texto de status personalizado está bloqueado e a requisição retorna CONTENT_BLOCKED
404resposta de erroAs configurações não existem e a requisição retorna UNKNOWN_USER

O Decoding Chat emite a Atualização de configurações de usuário para as próprias sessões do chamador. Um patch com valores idênticos ainda faz a gravação e produz o Dispatch. Uma mudança de localidade também se aplica à localização de e-mails e notificações e emite a Atualização de Usuário. O objeto de usuário não tem um membro de localidade.

Toda Atualização de configurações de usuário republica a Atualização de Presença atual do chamador para as sessões qualificadas, para que uma alteração de status personalizado se torne visível sem uma solicitação adicional.

Um status de invisível força cada uma das sessões do chamador para invisível. Quando pelo menos uma sessão está invisível, um status posterior de online, idle ou dnd define cada uma das sessões do chamador para esse status.

20 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:settings:update compartilhado com Modificar compartilhamento de atividade de voz.

PUT/v1/users/@me/settings/voice-activity-sharing

Altera o valor padrão de compartilhamento de atividade de voz, aplica-o ao lado do chamador em todas as amizades existentes e retorna o objeto de usuário do chamador. Emite os eventos de Gateway de Atualização de Relacionamento e de Atualização de Usuário, e um evento de Gateway de Atualização de configurações de usuário apenas quando o padrão armazenado for alterado.

Uma conta ou registro de configurações ausente retorna 404 UNKNOWN_USER.

Somente esta rota escreve default_share_voice_activity, que é somente leitura no objeto de configurações de usuário.

CampoTipoDescrição
share_voice_activitybooleanSe a atividade de voz é compartilhada, armazenado como o novo padrão e aplicado ao lado do chamador em todas as amizades

Fora da janela o cooldown reinicia a cada solicitação aceita, incluindo uma que define o valor que ele já possui. O objeto de usuário tem esse momento como last_voice_activity_sharing_change_at.

StatusCorpoCondição
200objeto de usuárioO estado de compartilhamento foi retornado após a aplicação da solicitação
400resposta de erroO tempo de espera de 24 horas permanece ativo e a solicitação retorna INVALID_FORM_BODY
404resposta de erroA conta ou suas configurações não existem e a requisição retorna UNKNOWN_USER

Uma solicitação aceita grava default_share_voice_activity e, em seguida, percorre todas as amizades. Uma amizade cujo valor do lado do chamador já é igual ao valor enviado é ignorada e sua version armazenada não avança. Cada amizade, ignorada ou reescrita, produz uma Atualização de relacionamento para o chamador e uma para o amigo, então reencaminhar o valor atual ainda envia esses Dispatches para cada amizade. O Dispatch do amigo é emitido apenas quando a amizade recíproca existe.

Em seguida, ele registra o horário de alteração em last_voice_activity_sharing_change_at e emite Atualização de usuário para o chamador.

20 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:settings:update compartilhado com Modificar configurações do usuário atual.

PATCH/v1/users/@me/guilds/@me/settings

Modifica e retorna o objeto de configurações de guilda do usuário que controla as mensagens diretas e as MDs de grupo. Emite um evento de Gateway de Atualização de Configurações de Guilda de Usuário em cada sucesso.

O Decoding Chat cria as configurações com os padrões documentados quando elas estão ausentes.

O corpo usa os campos de atualização de configurações de guilda.

StatusCorpoCondição
200objeto de configurações de guilda do usuárioAs configurações de MD foram retornadas após a aplicação da solicitação

As configurações de canal privado são retornadas com guild_id nulo. O Decoding Chat faz a gravação e emite o Dispatch para as próprias sessões do chamador mesmo quando a requisição não altera nada, e a version avança nessa gravação. Nenhuma outra conta recebe um Dispatch.

30 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:guild_settings:update compartilhado com Modificar configurações de notificação da guilda.

Modificar configurações de notificação da guilda

Seção intitulada “Modificar configurações de notificação da guilda”
PATCH/v1/users/@me/guilds/{guild_id}/settings

Modifica e retorna o objeto de configurações de guilda do usuário para o ID de guilda fornecido. Emite um evento de Gateway de Atualização de Configurações de Guilda de Usuário em cada sucesso.

O Decoding Chat cria as configurações com os padrões documentados quando elas estão ausentes.

CampoTipoDescrição
guild_idsnowflakeA chave de configurações da guilda

O corpo usa os campos de atualização de configurações de guilda.

StatusCorpoCondição
200objeto de configurações de guilda do usuárioAs configurações da guilda foram retornadas após a aplicação da requisição

O Decoding Chat faz a gravação e emite o Dispatch para as próprias sessões do chamador mesmo quando a requisição não altera nada, e a version avança nessa gravação. Nenhum outro membro da guilda além do chamador recebe um Dispatch.

30 requisições a cada 10 segundos para cada usuário autenticado, no bucket user:guild_settings:update compartilhado com Modificar configurações de notificação de MD.