Snowflake do Discord: o que significa o número longo de ID
Um snowflake é o número único de 64 bits que o Discord dá a cada usuário, servidor, canal, cargo e mensagem. Os primeiros 42 bits guardam um timestamp, então qualquer snowflake informa quando a coisa foi criada, até o milissegundo.
O que é um snowflake
Sempre que você copia um ID no Discord, está copiando um snowflake. Ele se parece com 175928847299117063: um número inteiro longo, com 17 a 19 dígitos. O Discord usa o mesmo formato para usuários, servidores (chamados de guilds na API), canais, cargos, mensagens, emojis e mais.
O formato vem de um esquema usado pela primeira vez no Twitter. A ideia é criar IDs únicos e aproximadamente ordenados por tempo em muitas máquinas, sem que elas precisem se consultar para saber o próximo número.
Como os bits são organizados
Um snowflake é dividido em quatro partes, da esquerda para a direita:
- 42 bits de timestamp: milissegundos desde o primeiro segundo de 2015 (a época do Discord, 1420070400000).
- 5 bits de ID de worker e 5 bits de ID de processo: qual máquina e qual processo do Discord o criou.
- 12 bits de incremento: um contador que sobe a cada ID que aquele processo cria no mesmo milissegundo.
Para ler o horário de criação, desloque o número 22 bits para a direita e some a época. Isso dá um timestamp Unix em milissegundos. É assim que você consegue saber quando um servidor ou uma mensagem foi criado sem perguntar a ninguém.
Por que donos de servidor se importam
Você vai encontrar snowflakes principalmente ao ativar o Modo de Desenvolvedor (Configurações do Usuário, Avançado) e clicar com o botão direito em algo para Copiar ID. Pedem IDs em relatórios de bugs, na configuração de bots e ao remover um mau participante que trocou de nome. Nomes mudam, um ID não.
Duas notas práticas:
- IDs são identificadores públicos, não segredos. Conhecer o ID de um canal não dá acesso a ele a ninguém.
- Como são maiores do que muitos programas guardam como número normal, a API do Discord os envia como texto. Planilhas que arredondam números longos podem corromper um ID, então mantenha-os como texto.
Nosso decodificador de snowflake gratuito transforma um ID na data de criação, no seu navegador.
Como o Noxyr usa os IDs
O Noxyr guarda IDs de usuários do Discord onde um recurso precisa deles: quem abriu tickets, clientes de faturas, participações em sorteios, votos de enquetes, autores de avaliações e listas de bloqueio. O painel também guarda seu ID, nome de usuário e avatar para o login. Os documentos de dados e privacidade listam exatamente o que é guardado.
Alguns recursos recebem um ID como entrada. Por exemplo, um dono de bot personalizado pode transferir o tempo restante para outra pessoa pelo ID de usuário dela, e o bot mantém o próprio ID de usuário não importa quantas vezes você o renomeie. Por isso, cargos e substituições ligados a ele continuam funcionando depois de uma mudança de marca.
Termos relacionados
Um ID de aplicação também é um snowflake, assim como todo ID de guild. O sharding inclusive usa o ID do guild para decidir qual shard recebe um servidor; veja sharding.
Perguntas frequentes
Como encontro um ID do Discord?
Ative o Modo de Desenvolvedor em Configurações do Usuário, Avançado. Depois clique com o botão direito em um usuário, canal, cargo ou servidor e escolha Copiar ID.
Dá para descobrir a data de criação a partir de um ID?
Sim. Desloque o número 22 bits para a direita e some 1420070400000 para obter um tempo Unix em milissegundos. O decodificador de snowflake faz isso para você.
Um ID do Discord é privado?
Não. IDs são identificadores públicos e não dão acesso sozinhos. Trate tokens como segredos, não IDs.