Pular para o conteúdo
Decoding Chat API

Protobuf de configurações do usuário

Um snapshot de preferências sincronizadas contém as configurações de cliente que uma conta compartilha entre seus dispositivos. É uma mensagem fluxer.user.preferences.v1.SyncedPreferences codificada em base64 no campo synced_preferences do objeto de configurações do usuário. O Decoding Chat o armazena e não interpreta nenhum campo nesta página.

Decodifique a string antes de ler qualquer preferência e codifique uma mensagem SyncedPreferences válida ao escrever uma. O endpoint Modificar configurações do usuário atual recebe o snapshot completo todas as vezes.

A string vazia em uma resposta significa que nada está armazenado. Enviar null ou a string vazia irá limpá-lo. Um snapshot armazenado chega às outras sessões da conta através do evento Atualização nas configurações do usuário.

Um snapshot retornado pode ter uma codificação diferente da enviada. Campos desconhecidos e valores enum sobrevivem ao processo de envio e retorno. Um snapshot contendo apenas valores padrão é retornado como uma string vazia.

Um envio pode usar o alfabeto base64 padrão ou o seguro para URL, com ou sem preenchimento. O Decoding Chat sempre retorna o alfabeto padrão com preenchimento.

Os tipos aqui são os tipos declarados no Protobuf. Um campo cujo tipo declarado é uma enumeração aparece como int32, sua representação em bytes, e a coluna de Descrição contém um link para a enumeração.

Um campo sem o marcador opcional sempre decodifica e contém o seu valor zero do Protobuf. Isso é falso (false) para um tipo bool, 0 para um tipo numérico, a string vazia, um campo repetido vazio ou um mapa vazio. Um campo com o marcador opcional rastreia sua presença e fica ausente até que um valor seja armazenado. Todo campo de mensagem singular rastreia a presença da mesma forma, então um grupo de preferências estará ausente do snapshot até que um cliente escreva nele.

O Decoding Chat não aplica limites a nenhum campo individual da mensagem, então todos os tamanhos, intervalos e membros de enumerações abaixo descrevem o que o cliente principal (first-party) escreve e lê.

O Decoding Chat relata cada entrada no array errors resultante contra o caminho synced_preferences. Ele verifica a string codificada primeiro.

CondiçãoStatus e códigoCódigos de elemento
String codificada maior que 699052 caracteres400 INVALID_FORM_BODYCONTENT_EXCEEDS_MAX_LENGTH e INVALID_FORMAT
String codificada fora do alfabeto base64400 INVALID_FORM_BODYINVALID_FORMAT
Mensagem decodificada acima de 524288 bytes400 VALIDATION_ERRORTOO_LARGE
Bytes que não decodificam como SyncedPreferences400 VALIDATION_ERRORINVALID_FORMAT

Uma string de comprimento excessivo atrai duas entradas para o mesmo caminho.

SyncedPreferences é a mensagem raiz. A maioria dos campos são grupos de preferências. Use o esquema Protobuf para números de campos, não suas posições nesta tabela.

CampoTipoDescrição
accessibility?objeto de configurações de acessibilidadePreferências de acessibilidade, exibição, movimento, mídia e interação
accessibility_overrides?objeto de substituições de acessibilidadeFlags para configurações de mídia, sem consumidor ativo
textual_preview?objeto de configurações de pré-visualização de textoPreferências de quebra de pré-visualização de texto
emoji_picker?objeto de estado do seletor de emojisUso do seletor de emojis, favoritos e categorias recolhidas
sticker_picker?objeto de estado do seletor de figurinhasUso do seletor de figurinhas, favoritos e categorias recolhidas
memes_picker?objeto de estado do seletor de memesUso do seletor de memes, favoritos e categorias recolhidas
emoji?objeto de estado de emojisPreferência de tom de pele dos emojis
emoji_sticker_layout?objeto de configurações de layout de emojis e figurinhasPreferências de layout do seletor de emojis e figurinhas
favorite_gifs?1objeto de configurações de GIFs favoritosEntradas de GIFs favoritos salvos
favorites?objeto de estado de favoritosLayout de categorias e canais favoritos
recent_mentions?objeto de configurações de menções recentesFiltros de inclusão de menções recentes
sidebar?objeto de preferências da barra lateralEstado da barra lateral de mensagens diretas
member_list?objeto de estado da lista de membrosEstado de visibilidade da lista de membros
unread_channels?objeto de estado de canais não lidosEstado de canais não lidos recolhidos
mention_frecency?objeto de estado de frequência e recência de mençõesEstado de frequência e recência de menções por guilda
nagbars?objeto de dispensas de avisosEstado de avisos de conta e guilda dispensados
dismissed_upsells?objeto de promoções dispensadasEstado de promoções (upsells) dispensadas
guild_nsfw_agreements?objeto de acordos de conteúdo adulto da guildaAvisos de canal, categoria e guilda com conteúdo adulto aceitos
whats_new?objeto de estado do que há de novoÚltima entrada de atualização dispensada
privacy?objeto de preferências de privacidadePreferências de privacidade de anexo, atividade e pré-visualização de stream
local_spam_overrides?objeto de substituições de spam de usuário localSubstituições de classificação de spam para usuário local
sanitize_urls2boolSe parâmetros de rastreamento são removidos das URLs em uma mensagem de saída
sound?objeto de configurações de somAtivação, volume e substituições de som por som
spellcheck?objeto de configurações de verificação ortográficaPreferências de mecanismo, dicionário e idioma da verificação ortográfica
search_engines?objeto de configurações de motores de buscaEscolhas de provedores de tradução, busca reversa de imagens e texto
permission_layout?objeto de configurações de layout de permissãoPreferências de layout do editor de permissões
guild_member_layout?objeto de configurações de layout de membro da guildaPreferência de layout da exibição de membros da guilda
guild_folders?3objeto de estado expandido de pastas de guildasIdentificadores de pastas de guildas expandidas
hidden_guild_buttons?objeto de botões de lista de guildas ocultosEstado dos botões da lista de guildas ocultos
keyboard_mode_intro?objeto de estado de introdução ao modo tecladoEstado de introdução ao modo de teclado
input_monitoring?objeto de estado dos avisos de monitoramento de entradaEstado dos avisos de monitoramento de entrada
voice_prompts?objeto de estado de avisos de vozEstado do aviso de confirmação de voz suprimido
sudo_prompt?objeto de estado de aviso de sudoÚltimo método de verificação de sudo usado
keybinds?objeto de configurações de atalhos de tecladoAtalhos personalizados e preferências de modo de transmissão
chat_input?objeto de configurações de entrada de chatPreferências de comportamento do compositor de chat
save_camera_uploads_to_device?4boolSe envios da câmera também são gravados no dispositivo
double_tap_reaction?objeto de emoji de reaçãoEmoji que um toque duplo em uma mensagem adiciona como uma reação

1 As entradas vivem dentro do snapshot, e a coleção de memes da conta não contém nenhuma delas

2 O único escalar simples na mensagem raiz, então ele não possui presença e é lido como falso (false) até que um cliente armazene verdadeiro (true). Ele se aplica ao conteúdo que um cliente está prestes a enviar, e o cliente principal deixa as URLs dentro de códigos inline e blocos de código inalterados

3 Contém apenas quais pastas estão expandidas. O próprio layout da pasta é guild_folders no objeto de configurações do usuário

4 O único escalar opcional na mensagem raiz, então ele rastreia presença. Nenhuma superfície ativa lê ou escreve nele

O campo accessibility possui preferências de exibição, movimento, mensagens, mídia, voz e interação. Quase todos os campos são opcionais, então distinga um campo ausente de um valor zero armazenado antes de aplicar um padrão.

CampoTipoDescrição
saturation_factor?1doubleMultiplicador de saturação de cor
always_underline_linksboolSe os links são sempre sublinhados
enable_text_selection?boolSe o texto da mensagem pode ser selecionado
show_message_send_button?boolSe o compositor de mensagens mostra um botão de envio
show_textarea_focus_ring?boolSe o compositor de mensagens mostra um anel de foco
hide_keyboard_hintsboolSe as dicas de atalho de teclado ficam ocultas
escape_exits_keyboard_mode?boolSe Esc sai do modo de navegação por teclado
sync_reduced_motion_with_system?boolSe a redução de movimento segue a preferência do sistema operacional
reduced_motion_override?2boolPreferência explícita de redução de movimento
message_group_spacing?3doubleEspaçamento entre grupos de mensagens
message_gutter?3doubleTamanho do recuo horizontal da mensagem
font_size?3doubleTamanho da fonte da mensagem
show_user_avatars_in_compact_mode?boolSe mensagens compactas mostram avatares de usuários
mobile_sticker_animation_overridden4boolSe o valor da animação de figurinhas em dispositivos móveis se aplica em um layout móvel
mobile_gif_autoplay_overridden4boolSe o valor da reprodução automática de GIFs em dispositivos móveis se aplica em um layout móvel
mobile_animate_emoji_overridden4boolSe o valor da animação de emojis em dispositivos móveis se aplica em um layout móvel
mobile_sticker_animation_value?5int32Configuração de animação de figurinhas no dispositivo móvel
mobile_gif_autoplay_value?boolValor da reprodução automática de GIFs no dispositivo móvel
mobile_animate_emoji_value?boolValor da animação de emojis no dispositivo móvel
auto_send_klipy_gifsboolSe a seleção de um GIF o envia imediatamente
show_gif_button?boolSe o compositor mostra o botão de GIF
show_memes_button?boolSe o compositor mostra o botão de memes
show_stickers_button?boolSe o compositor mostra o botão de figurinhas
show_emoji_button?boolSe o compositor mostra o botão de emojis
show_media_favorite_button?boolSe as ações de mídia mostram o botão de favorito
show_media_download_button?boolSe as ações de mídia mostram o botão de download
show_media_delete_button?boolSe as ações de mídia mostram o botão de exclusão
show_suppress_embeds_button?boolSe as ações da mensagem mostram o botão de suprimir incorporações (embeds)
show_gif_indicator?boolSe a mídia em GIF mostra um indicador de GIF
show_attachment_expiry_indicator?boolSe os anexos mostram seu indicador de expiração
use_browser_locale_for_time_format?boolSe a formatação de tempo usa a localidade (locale) do navegador
channel_typing_indicator_modeint32Modo do indicador de digitação no canal
show_selected_channel_typing_indicator?boolSe o indicador de digitação é mostrado para o canal selecionado
show_message_action_bar?boolSe as mensagens mostram a barra de ações
show_message_action_bar_quick_reactions?boolSe a barra de ações da mensagem mostra reações rápidas
show_message_action_bar_shift_expand?boolSe segurar Shift expande a barra de ações da mensagem
show_message_action_bar_only_more_button?boolSe a barra de ações da mensagem mostra apenas o botão “mais”
show_default_emojis_in_autocomplete?boolSe o preenchimento automático inclui emojis padrão
show_custom_emojis_in_autocomplete?boolSe o preenchimento automático inclui emojis personalizados
show_stickers_in_autocomplete?boolSe o preenchimento automático inclui figurinhas
show_memes_in_autocomplete?boolSe o preenchimento automático inclui memes
voice_channel_join_requires_double_click?boolSe a entrada em um canal de voz requer um clique duplo
custom_theme_css?6stringCSS de tema personalizado
show_favorites?boolSe a seção de favoritos é exibida
zoom_level?7doubleNível de zoom do aplicativo
dm_message_preview_modeint32Modo de pré-visualização de mensagem direta
enable_tts_command?boolSe o comando de texto para fala (TTS) está ativado
tts_rate?8doubleTaxa de reprodução de texto para fala
show_faded_unread_on_muted_channels?boolSe canais silenciados retêm um indicador esmaecido de não lidos
show_context_menu_shortcuts?boolSe os menus de contexto mostram atalhos de teclado
confirm_before_starting_calls?boolSe iniciar uma chamada requer confirmação
hdr_display_modeint32Modo de exibição HDR
preserve_edit_draft?boolSe o cancelamento de uma edição de mensagem preserva o seu rascunho
stay_interactive_when_unfocused?boolSe a animação e a interação permanecem ativas enquanto o aplicativo está sem foco
confirm_before_joining_voice_channels?boolSe a entrada em canais de voz requer confirmação
screen_reader_announce_new_messages?boolSe o leitor de tela anuncia novas mensagens
first_click_pass_through_when_unfocused?boolSe o primeiro clique também ativa o controle quando o aplicativo está sem foco
compact_message_group_spacing?3doubleEspaçamento entre grupos de mensagens compactas
scroll_to_bottom_on_message_send?boolSe enviar uma mensagem rola o canal para o final
dim_strikethrough_text?boolSe o texto tachado fica visualmente esmaecido
sequential_file_send?boolSe vários arquivos selecionados são enviados uma mensagem de cada vez
mobile_splash_zoom_animation?boolSe a tela inicial de dispositivos móveis reproduz a animação de zoom

1 Um multiplicador aplicado à cor da interface, onde 1 deixa a cor inalterada

2 Somente leitura enquanto sync_reduced_motion_with_system for falso

3 Um comprimento em pixels CSS. O cliente principal usa como padrão 16 para message_group_spacing, message_gutter e font_size, e 0 para compact_message_group_spacing

4 O campo mobile_*_value pareado é somente leitura enquanto essa flag for verdadeira, e apenas em um layout de dispositivo móvel. Enquanto a flag for falsa, o cliente principal usa como padrão a configuração de nível de conta para animação de emojis, e um padrão móvel fixo para reprodução automática de GIFs e animação de figurinhas

5 A mesma enumeração de animate_stickers no objeto de configurações do usuário. Este campo é o substituto local para dispositivos móveis

6 O CSS completo do tema personalizado sincronizado da conta, armazenado inline. Um cliente que optou por não sincronizar seu tema aplica um tema local em vez disso e reemite este valor inalterado, para que não sobrescreva o valor nos dispositivos que o sincronizam

7 Um multiplicador, onde 1 não é dimensionado. Não usado pelo cliente principal

8 Um multiplicador, onde 1 é a taxa de fala não modificada

Os números de campo 42 e 43 são reservados, juntamente com os nomes attachment_media_dimension_size e embed_media_dimension_size. Nenhum dos números pode ser reutilizado.

ValorNomeDescrição
0CHANNEL_TYPING_INDICATOR_MODE_UNSPECIFIEDNenhum modo explícito é selecionado
1CHANNEL_TYPING_INDICATOR_MODE_AVATARSMostrar usuários digitando como avatares
2CHANNEL_TYPING_INDICATOR_MODE_INDICATOR_ONLYMostrar um indicador de digitação sem avatares
3CHANNEL_TYPING_INDICATOR_MODE_HIDDENOcultar o indicador de digitação
ValorNomeDescrição
0DM_MESSAGE_PREVIEW_MODE_UNSPECIFIEDNenhum modo explícito é selecionado
1DM_MESSAGE_PREVIEW_MODE_ALLMostrar pré-visualizações para todas as mensagens diretas
2DM_MESSAGE_PREVIEW_MODE_UNREAD_ONLYMostrar pré-visualizações apenas para mensagens diretas não lidas
3DM_MESSAGE_PREVIEW_MODE_NONEOcultar pré-visualizações de mensagens diretas
ValorNomeDescrição
0HDR_DISPLAY_MODE_UNSPECIFIEDNenhum modo explícito é selecionado
1HDR_DISPLAY_MODE_FULLExibir mídia HDR sem limitar seu alcance
2HDR_DISPLAY_MODE_STANDARDLimitar mídia HDR a um alcance dinâmico padrão

O campo accessibility_overrides não é usado pelo cliente principal. Use os campos mobile_*_overridden e os campos mobile_*_value correspondentes nas configurações de acessibilidade.

CampoTipoDescrição
gif_autoplay_dirtyboolFlag de alteração da reprodução automática de GIFs
animate_emoji_dirtyboolFlag de alteração da animação de emojis
animate_stickers_dirtyboolFlag de alteração da animação de figurinhas

Objeto de configurações de pré-visualização de texto

Seção intitulada “Objeto de configurações de pré-visualização de texto”

O campo textual_preview controla a quebra de linha na pré-visualização inline de um anexo de texto.

CampoTipoDescrição
wrap_textboolSe linhas longas são quebradas em uma pré-visualização de texto

O objeto de estatísticas de uso registra o uso do seletor para uma expressão ou um meme. É o valor do mapa do campo usage em todo grupo de estado de seletores, para que os seletores de emojis, figurinhas e memes classifiquem suas entradas a partir do mesmo formato.

CampoTipoDescrição
countuint32Número de usos registrados
last_used_ms1int64Timestamp Unix em milissegundos do uso mais recente

1 Milissegundos desde 1970-01-01T00:00:00Z

O campo emoji_picker registra o uso de emojis, favoritos e categorias recolhidas do seletor.

CampoTipoDescrição
usage1 2map[string, objeto de estatística de uso]Uso indexado pela chave de uso do emoji
favorite_emoji_ids1array[string]Chaves de uso de emojis favoritos na ordem de exibição
collapsed_category_idsarray[string]Identificadores de categoria de emojis recolhidas

1 O cliente principal escreve unicode:<unique name> para um emoji padrão e custom:<guild id>:<emoji id> para um emoji personalizado

2 O cliente principal descarta uma chave que não corresponde a nenhuma forma quando lê o snapshot e não aplica esse filtro a favorite_emoji_ids

O campo sticker_picker registra o uso de figurinhas, favoritos e categorias recolhidas do seletor.

CampoTipoDescrição
usagemap[string, objeto de estatística de uso]Uso indexado pelo identificador de figurinha
favorite_sticker_idsarray[string]Identificadores de figurinhas favoritas na ordem de exibição
collapsed_category_idsarray[string]Identificadores de categorias de figurinhas recolhidas

O campo memes_picker registra o uso de memes, favoritos e categorias recolhidas do seletor. Os próprios memes pertencem à coleção de memes da conta e não são armazenados aqui.

CampoTipoDescrição
usagemap[string, objeto de estatística de uso]Uso indexado pelo identificador de meme
favorite_meme_idsarray[string]Identificadores de memes favoritos na ordem de exibição
collapsed_category_idsarray[string]Identificadores de categorias de memes recolhidas

O campo emoji contém o tom de pele selecionado.

CampoTipoDescrição
skin_tone1stringModificador de tom de pele Unicode selecionado

1 Um dos cinco modificadores de tom de pele Unicode, de U+1F3FB a U+1F3FF. A string vazia seleciona o tom padrão

Objeto de configurações de layout de emojis e figurinhas

Seção intitulada “Objeto de configurações de layout de emojis e figurinhas”

O campo emoji_sticker_layout controla como os seletores de emojis e figurinhas organizam seus conteúdos.

CampoTipoDescrição
emoji_layoutint32Layout do seletor de emojis
sticker_view_modeint32Modo de exibição do seletor de figurinhas
ValorNomeDescrição
0EMOJI_PICKER_LAYOUT_UNSPECIFIEDNenhum layout explícito é selecionado
1EMOJI_PICKER_LAYOUT_LISTExibir emojis em um layout de lista
2EMOJI_PICKER_LAYOUT_GRIDExibir emojis em um layout de grade
ValorNomeDescrição
0STICKER_PICKER_VIEW_MODE_UNSPECIFIEDNenhum modo de exibição explícito é selecionado
1STICKER_PICKER_VIEW_MODE_COZYExibir figurinhas no layout espaçoso
2STICKER_PICKER_VIEW_MODE_COMPACTExibir figurinhas no layout compacto

O campo favorite_gifs armazena os GIFs que a conta favoritou, juntamente com os metadados necessários para renderizar um sem outra pesquisa. Favoritar um GIF grava uma entrada aqui ou grava um meme na coleção de memes da conta, nunca ambos, e save_as_saved_media seleciona qual deles.

CampoTipoDescrição
entries1array[objeto de entrada de GIF favorito]GIFs favoritos na ordem de exibição
save_as_saved_media2boolSe favoritar um GIF salva um meme na coleção de memes da conta
seen_first_time_promptboolSe o aviso de primeira vez para favoritos foi exibido

1 O cliente principal trata url como a identidade de uma entrada e se recusa a acrescentar uma segunda entrada com uma url já presente

2 Enquanto isso for verdadeiro, o cliente principal deixa as entradas em entries inalteradas e favorita usando a opção Salvar meme da mensagem

Uma entrada descreve um GIF favoritado. Seus campos espelham o objeto de entrada de GIF resolvido retornado por Resolver URLs de GIF, para que um cliente possa armazenar uma entrada resolvida sem remodelá-la.

CampoTipoDescrição
urlstringURL de origem do GIF
proxy_urlstringURL de Media Proxy para o formato de pré-visualização
width1uint32Largura do formato de pré-visualização em pixels
height1uint32Altura do formato de pré-visualização em pixels
mediamap[string, objeto de formato de mídia de GIF favorito]Formatos indexados pelo nome do formato de mídia do GIF
content_type2stringTipo de mídia da mídia referenciada por proxy_url
placeholder3stringPlaceholder thumbhash compacto

1 Zero quando as dimensões não puderem ser determinadas

2 A string vazia significa que o tipo é desconhecido, o que o cliente lê como image/gif

3 A string vazia significa que o Media Proxy não emitiu nenhum

Um descritor aborda uma codificação de um GIF favoritado. Ele espelha o objeto de formato de mídia de GIF.

CampoTipoDescrição
srcstringURL direta de mídia deste formato
proxy_srcstringURL de Media Proxy deste formato
widthuint32Largura deste formato em pixels
heightuint32Altura deste formato em pixels

O campo favorites armazena canais favoritos, as categorias em que estão agrupados e o estado de exibição desse agrupamento. Essas categorias são privadas para a exibição de favoritos.

CampoTipoDescrição
channelsarray[objeto de canal favorito]Canais favoritos
categoriesarray[objeto de categoria favorita]Categorias favoritas
collapsed_category_idsarray[string]Identificadores de categorias favoritas recolhidas
hide_muted_channelsboolSe canais silenciados estão ocultos dos favoritos
mutedboolSe a coleção de favoritos está silenciada

Uma entrada marca um canal como favorito. Identificadores de canal e guilda aqui são strings que contêm a forma decimal de um snowflake. Nada remove uma entrada quando a conta perde o acesso ao canal, então uma entrada pode referenciar um canal que a conta não pode mais resolver.

CampoTipoDescrição
channel_idstringID do canal
guild_idstringID da guilda
parent_id?1stringCategoria favorita sob a qual o canal está agrupado
position2int32Posição em toda a lista de favoritos
nickname?stringApelido do canal atribuído pelo usuário

1 O id de uma categoria favorita, não um canal de categoria da guilda. Um valor ausente agrupa o canal fora de qualquer categoria

2 Uma ordem única sobre cada canal favorito. O cliente principal renumera a lista inteira a partir de 0 sempre que uma entrada é removida ou movida, e anexa uma nova entrada na contagem de entradas atual sem renumerar

Uma entrada nomeia um agrupamento na exibição de favoritos. O cliente escolhe o identificador, então não é um snowflake e o Decoding Chat nunca o resolve.

CampoTipoDescrição
idstringIdentificador da categoria
namestringNome da categoria
position1int32Posição da categoria

1 Renumerada a partir de 0 em cada categoria sempre que uma é removida ou movida

O campo recent_mentions controla quais menções aparecem na exibição de menções recentes. Cada filtro definido como falso remove suas menções, e uma menção aparece apenas quando nenhum filtro a remove. include_guilds testa o canal em que a menção está.

CampoTipoDescrição
include_everyone?1boolSe as menções @everyone devem ser incluídas
include_roles?1boolSe as menções de cargos devem ser incluídas
include_guilds?1 2boolSe menções em um canal da guilda devem ser incluídas

1 O cliente principal usa como padrão todos os filtros como verdadeiro e omite o campo enquanto ele mantiver esse padrão. Um cliente que lê um valor ausente como o zero do Protobuf filtra menções que a conta espera ver

2 Falso mantém menções de mensagens diretas e descarta todas as menções cujo canal pertença a uma guilda

O campo sidebar armazena o estado de exibição da barra lateral de mensagens diretas.

CampoTipoDescrição
inline_dms_collapsedboolSe a seção inline de mensagens diretas está recolhida
show_collapsed_unread_dms_badge?1boolSe a seção recolhida mostra um emblema (badge) de mensagem direta não lida
show_incoming_friend_request_badge?1boolSe a barra lateral mostra um emblema (badge) de solicitação de amizade recebida

1 O cliente principal usa como padrão verdadeiro e omite o campo enquanto ele mantiver esse padrão, então um cliente que lê um valor ausente como o zero do Protobuf oculta um emblema que a conta espera ver

O campo member_list armazena se o painel da lista de membros está aberto.

CampoTipoDescrição
members_open?boolSe a lista de membros está aberta

O campo unread_channels armazena quais canais estão recolhidos na exibição de não lidos.

CampoTipoDescrição
collapsed_channel_idsarray[string]IDs de canais recolhidos no formato decimal

Objeto de estado de frequência e recência de menções

Seção intitulada “Objeto de estado de frequência e recência de menções”

O campo mention_frecency registra com que frequência e com que recência a conta mencionou cada usuário, um conjunto de registros por guilda, para que um cliente possa classificar o preenchimento automático de menções sem uma chamada ao servidor. Ele aninha as mensagens MentionFrecencyState.Scope e MentionFrecencyState.Entry.

CampoTipoDescrição
scopesarray[objeto de escopo de frequência e recência de menção]Registros de menção por guilda

Objeto de escopo de frequência e recência de menção

Seção intitulada “Objeto de escopo de frequência e recência de menção”

Um escopo contém todos os registros de menção para uma guilda. É declarado como MentionFrecencyState.Scope.

CampoTipoDescrição
guild_idstringID da guilda no formato decimal
entriesarray[objeto de entrada de frequência e recência de menção]Registros de menções de usuários para a guilda

Objeto de entrada de frequência e recência de menção

Seção intitulada “Objeto de entrada de frequência e recência de menção”

Uma entrada conta as menções de um usuário dentro de um escopo. É declarada como MentionFrecencyState.Entry.

CampoTipoDescrição
user_idstringID do usuário mencionado no formato decimal
countuint32Número de menções registradas
last_at_ms1int64Timestamp Unix em milissegundos da menção mais recente

1 Milissegundos desde 1970-01-01T00:00:00Z

O campo nagbars armazena avisos de toda a conta dispensados como booleanos e avisos por alvo dispensados como mapas. O número do campo 13 não está atribuído.

CampoTipoDescrição
ios_installboolSe o aviso de instalação no iOS está dispensado
pwa_installboolSe o aviso de instalação do aplicativo web progressivo (PWA) está dispensado
push_notificationboolSe o aviso de notificação push está dispensado
desktop_notificationboolSe o aviso de notificação no desktop está dispensado
premium_grace_periodboolSe o aviso de período de tolerância premium está dispensado
premium_expiredboolSe o aviso de expiração do premium está dispensado
premium_onboardingboolSe o aviso de integração (onboarding) do premium está dispensado
premium_trial_expiringboolSe o aviso de expiração da avaliação premium está dispensado
gift_inventoryboolSe o aviso de inventário de presentes está dispensado
desktop_downloadboolSe o aviso de download para desktop está dispensado
guild_membership_ctaboolSe o aviso de chamada à ação de associação à guilda está dispensado
visionary_mfa1boolSe o aviso de MFA do premium vitalício está dispensado
legacy_phone_unlinkboolSe o aviso legado de desvinculação de telefone está dispensado
pending_bulk_deletionmap[string, bool]Estado de dispensa indexado pelo identificador de exclusão em massa pendente
invites_disabled2map[string, bool]Estado de dispensa indexado por ID da guilda para avisos de convites desativados
guild_mfa_requirement2map[string, bool]Estado de dispensa indexado por ID da guilda para avisos de requisito de MFA

1 O aviso que este dispensa é mostrado apenas para uma conta que possui premium vitalício sem um autenticador MFA registrado

2 Indexado pela forma decimal de um snowflake de guilda. Uma chave ausente é lida como não dispensada

O campo dismissed_upsells armazena as promoções (upsells) dispensadas.

CampoTipoDescrição
picker_premiumboolSe a promoção do seletor premium está dispensada

O campo guild_nsfw_agreements armazena as confirmações de conteúdo adulto. A aceitação é registrada por alvo, então aceitar por uma guilda não registra a aceitação por suas categorias ou canais.

CampoTipoDescrição
agreed_channel_idsarray[string]IDs de canais cujo aviso de conteúdo adulto foi aceito
agreed_guild_idsarray[string]IDs de guildas cujo aviso de conteúdo adulto foi aceito
agreed_category_idsarray[string]IDs de categorias cujo aviso de conteúdo adulto foi aceito

O campo whats_new armazena a entrada de atualização dispensada mais recentemente.

CampoTipoDescrição
last_dismissed_entry_id?stringID da entrada de atualização dispensada mais recentemente

O campo privacy armazena o comportamento de privacidade do cliente. O Decoding Chat não lê nada disso, e nada disso altera os campos de privacidade do objeto de configurações do usuário, os quais controlam o que o próprio Decoding Chat divulga sobre a conta.

CampoTipoDescrição
disable_stream_previews1boolSe as pré-visualizações de stream estão desativadas
show_active_now?boolSe a visualização “ativo agora” é exibida
preupload_message_attachments?boolSe os anexos da mensagem são carregados antes do envio da mensagem

1 O único campo neste grupo cujo efeito alcança além da própria visão da conta. Enquanto ele é verdadeiro, o cliente principal não carrega o quadro de pré-visualização do stream, portanto, nenhum outro visualizador recebe um

Objeto de substituições de spam de usuário local

Seção intitulada “Objeto de substituições de spam de usuário local”

O campo local_spam_overrides armazena as classificações locais do cliente que substituem a flag pública de usuário SPAMMER apenas na exibição. O Decoding Chat não lê essas listas nem altera nenhuma flag por causa delas.

CampoTipoDescrição
spammer_user_idsarray[string]IDs de usuários apresentados localmente como spammers
not_spammer_user_ids1array[string]IDs de usuários apresentados localmente como não sendo spammers

1 Esta lista ganha sobre spammer_user_ids e sobre a flag SPAMMER, então um ID de usuário presente em ambas as listas é apresentado como não sendo spammer

O campo sound controla a reprodução de som, o volume mestre e as substituições por som.

CampoTipoDescrição
all_sounds_disabledboolSe todos os sons do aplicativo estão desativados
master_volume?1doubleVolume de som mestre
disabled_soundsmap[string, bool]Estado de desativação indexado pelo identificador de som
sound_overrides2map[string, double]Substituição de volume indexada pelo identificador de som

1 Uma porcentagem. O cliente principal a restringe ao intervalo de 0 a 200, trata 100 como o padrão e omite o campo inteiramente enquanto mantém o padrão

2 Uma porcentagem na mesma escala e o volume completo para aquele único som

Ambos os mapas são indexados por uma string arbitrária e o Decoding Chat armazena e retorna qualquer chave inalterada. O cliente principal usa os identificadores abaixo, e o cliente principal ignora uma chave fora deste conjunto.

ValorDescrição
deafSom de ensurdecer
undeafSom de desensurdecer
muteSom de silenciar
unmuteSom de dessilenciar
messageSom de notificação de mensagem
direct-messageSom de notificação de mensagem direta
same-channel-messageSom de notificação para o canal já em visualização
incoming-ringSom de chamada recebida
user-joinSom de entrada de participante de voz
user-leaveSom de saída de participante de voz
user-moveSom de movimento de participante de voz
viewer-joinSom de entrada de visualizador de stream
viewer-leaveSom de saída de visualizador de stream
voice-disconnectSom de desconexão de voz
camera-onSom de câmera ativada
camera-offSom de câmera desativada
screen-share-startSom de início de compartilhamento de tela
screen-share-stopSom de parada de compartilhamento de tela

Objeto de configurações de verificação ortográfica

Seção intitulada “Objeto de configurações de verificação ortográfica”

O campo spellcheck controla a verificação ortográfica, os idiomas selecionados e o dicionário pessoal.

CampoTipoDescrição
enabled?boolSe a verificação ortográfica está ativada
languages1array[string]Idiomas selecionados de verificação ortográfica
personal_dictionary1array[string]Palavras no dicionário pessoal
auto_detect?boolSe os idiomas de verificação ortográfica são detectados automaticamente
engine?2stringIdentificador do mecanismo de verificação ortográfica selecionado

1 O cliente principal descarta uma entrada vazia e uma entrada duplicada quando lê o snapshot

2 The first-party client recognises auto, system, and hunspell, and ignores any other value

The search_engines field stores the selected external providers. Every identifier names a provider the client defines, and Fluxer neither validates nor resolves one.

FieldTypeDescription
text_search_engine_id?stringText search engine identifier
reverse_image_search_engine_id?stringReverse image search engine identifier
translation_provider_id?stringTranslation provider identifier

The permission_layout field controls the layout of the permission editor.

FieldTypeDescription
layoutint32Permission layout mode
gridint32Permission grid mode
ValueNameDescription
0PERMISSION_LAYOUT_MODE_UNSPECIFIEDNo explicit layout is selected
1PERMISSION_LAYOUT_MODE_COMFYUse the roomy permission layout
2PERMISSION_LAYOUT_MODE_DENSEUse the dense permission layout
ValueNameDescription
0PERMISSION_GRID_MODE_UNSPECIFIEDNo explicit grid mode is selected
1PERMISSION_GRID_MODE_SINGLEShow one permission category at a time
2PERMISSION_GRID_MODE_GRIDShow permission categories in a grid

The guild_member_layout field controls how the guild member view presents its members.

FieldTypeDescription
modeint32Guild member view mode
ValueNameDescription
0GUILD_MEMBER_VIEW_MODE_UNSPECIFIEDNo explicit view mode is selected
1GUILD_MEMBER_VIEW_MODE_TABLEDisplay guild members in a table
2GUILD_MEMBER_VIEW_MODE_GRIDDisplay guild members in a grid

The guild_folders field stores which guild folders are expanded in the sidebar. The folders themselves are guild_folders on the user settings object.

FieldTypeDescription
expanded_folder_ids1array[fixed64]Expanded guild folder identifiers

1 Each value is the id of a guild folder object. An identifier for a folder the layout no longer holds stays in the array and has no effect

The hidden_guild_buttons field stores which guild list controls are hidden.

FieldTypeDescription
download_buttonboolWhether the download button is hidden
help_buttonboolWhether the help button is hidden

The keyboard_mode_intro field stores whether the keyboard navigation introduction has been seen.

FieldTypeDescription
seenboolWhether the keyboard navigation introduction was seen

The input_monitoring field stores whether the input monitoring prompt has been seen. No live surface reads or writes it.

FieldTypeDescription
seen_ctaboolWhether the input monitoring call to action was seen

The voice_prompts field stores which voice confirmation prompts the account has suppressed.

FieldTypeDescription
skip_hide_own_camera_confirmboolWhether hiding the caller’s own camera skips confirmation
skip_hide_own_screenshare_confirmboolWhether hiding the caller’s own screen share skips confirmation

The sudo_prompt field stores the verification method the account used most recently, so a client can preselect it the next time sudo mode is required.

FieldTypeDescription
last_used_mfa_method?1int32MFA method most recently used for sudo verification

1 The assigned values correspond to totp and webauthn in mfa_method of the sudo verification object

ValueNameDescription
0MFA_METHOD_UNSPECIFIEDNo method is recorded
1MFA_METHOD_TOTPTime-based one-time password
3MFA_METHOD_WEBAUTHNWebAuthn credential

The value 2 is not assigned.

The keybinds field stores custom keybinds and voice transmit behaviour.

FieldTypeDescription
custom_keybindsarray[custom keybind object]Custom keybinds
transmit_mode1stringVoice transmit mode
push_to_talk_release_delay_ms?2uint32Push-to-talk release delay in milliseconds

1 The first-party client recognises voice_activity and voice_push_to_talk, and falls back to voice_activity for the empty string and for any other value

2 Read only while transmit_mode is voice_push_to_talk. The first-party client clamps it to the range 20 through 2000, treats 20 as the default, and omits the field entirely while it holds the default

One entry binds one input combination to one action. The entry has its own enabled flag and its combination has another. The first-party client gates a custom keybind on the entry’s flag alone, and reads enabled on a combination only for a built-in default binding.

FieldTypeDescription
id1stringKeybind identifier
action?2stringAction performed by the keybind
combo?keybind combo objectInput combination
enabledboolWhether the keybind is enabled

1 Chosen by the client. The first-party client generates a replacement when it reads an entry whose id is the empty string

2 An action name the client defines. The first-party client keeps an entry whose action it does not recognise and clears action

One combination describes the key, modifiers, and buttons that trigger a keybind. The modifier flags are independent of each other, and ctrl_or_meta is a modifier of its own.

FieldTypeDescription
keystringKey value
code?stringPhysical key code
ctrl_or_meta1boolWhether Control or Meta is required according to the platform
ctrlboolWhether Control is required
altboolWhether Alt is required
shiftboolWhether Shift is required
metaboolWhether Meta is required
global?boolWhether the combination is registered globally
enabled?2boolWhether the combination is active
modifier_onlyboolWhether the combination contains only modifier keys
both_sidesboolWhether either side of a paired modifier is accepted
mouse_button?uint32Mouse button number
gamepad_button?uint32Gamepad button number

1 Resolves to Meta on macOS and to Control on every other platform, so one stored combination expresses the platform-native accelerator

2 An absent value here reads as active, the opposite of the default for enabled on the custom keybind that owns the combination

The chat_input field controls message composer behaviour.

FieldTypeDescription
convert_emoticons?boolWhether emoticons are converted to emoji

The double_tap_reaction field stores the emoji that a double tap on a message adds as a reaction. It has the same shape as the reaction emoji object. A Unicode emoji sets only name, and a custom emoji sets both id and name.

FieldTypeDescription
id?1stringCustom emoji ID, absent for a Unicode emoji
namestringUnicode emoji, or the custom emoji’s name

1 The decimal form of a snowflake. Fluxer never resolves it, so it can name a custom emoji the account can no longer use