Por que o número de posição do canal do Discord pula mesmo com ordenação sequencial
🔍 WiseChecker

Por que o número de posição do canal do Discord pula mesmo com ordenação sequencial

Você pode notar que, ao reordenar canais em um servidor do Discord, o número de posição exibido em alguns bots ou logs de auditoria nem sempre segue uma sequência 1-2-3. Em vez disso, você vê lacunas como 1, 4, 7 ou 10, mesmo que os canais apareçam na ordem visual correta. Isso acontece porque o Discord atribui números de posição internos com base na ordem de criação e agrupamento, e não em um incremento sequencial simples. Este artigo explica o motivo técnico por trás desses números pulados e mostra como ler as posições dos canais corretamente.

Principais conclusões: Entendendo os números de posição dos canais do Discord

  • A posição do canal é um valor de ponto flutuante, não um inteiro: O Discord usa números decimais como 1.0, 2.5, 3.75 para permitir inserção entre canais existentes.
  • Bots e APIs geralmente arredondam ou truncam valores de posição: O inteiro que você vê pode ser uma representação arredondada do float real.
  • Os números de posição são redefinidos apenas quando você move um canal para uma nova categoria ou para a lista de nível superior: Lacunas são normais e não afetam a ordenação visual.

ADVERTISEMENT

Por que os números de posição dos canais do Discord aparecem como inteiros pulados

O Discord armazena as posições dos canais como números de ponto flutuante em seu banco de dados interno. Quando você cria um novo canal, o Discord atribui a ele um valor de posição que o coloca após o último canal no mesmo grupo. Por exemplo, se os canais A, B e C têm posições 1.0, 2.0 e 3.0, um novo canal D adicionado após C recebe a posição 4.0. Até aqui, a sequência parece sequencial.

O problema surge quando você reordena canais manualmente. Se você mover o canal C entre A e B, o Discord não renumerará todos os canais. Em vez disso, ele atribui um valor de posição que é a média dos dois canais adjacentes. Por exemplo, A está em 1.0 e B em 2.0. Mover C entre eles dá a C uma posição de 1.5. Agora a lista é A (1.0), C (1.5), B (2.0). As posições ainda são floats válidos, mas quando um bot ou um endpoint da API retorna esses valores como inteiros por truncamento ou arredondamento, você pode ver A=1, C=1, B=2, ou A=1, C=2, B=2. Isso cria a ilusão de números duplicados ou pulados.

Além disso, o Discord agrupa canais por tipo e categoria. Canais de texto, canais de voz e canais de fórum têm cada um seu próprio namespace de posição. Um canal de voz pode ter posição 1 enquanto um canal de texto na mesma categoria também pode ter posição 1. Quando você consulta todos os canais juntos, as posições parecem pular porque são relativas ao seu próprio grupo, não a uma sequência global.

Armazenamento interno de posição

O Discord usa um número de ponto flutuante de 64 bits para a posição de cada canal. Isso permite até 15 dígitos decimais de precisão. Quando você move um canal entre dois outros, o Discord calcula a nova posição como o ponto médio das duas posições adjacentes. Após muitas movimentações, os números podem se tornar valores fracionários como 1.25, 1.375 ou 1.4375. O cliente do Discord sempre ordena os canais por esse valor float, então a ordem visual está correta. No entanto, a API e os bots geralmente exibem apenas a parte inteira ou arredondam para o inteiro mais próximo, o que causa o efeito de número pulado.

Como ler os números de posição dos canais corretamente

Para ver a verdadeira posição de ponto flutuante de um canal, você precisa usar a API do Discord ou um bot que retorne o campo de posição bruto. O cliente do Discord em si não mostra números de posição. Aqui estão os passos para recuperá-los e interpretá-los.

  1. Ative o Modo Desenvolvedor no Discord
    Abra Configurações do Usuário > Avançado. Ative o Modo Desenvolvedor. Isso permite copiar IDs e ver dados brutos.
  2. Copie o ID do Canal
    Clique com o botão direito no canal na lista de servidores. Selecione Copiar ID. Você precisará disso para consultar a API.
  3. Use um Bot para Obter Dados de Posição Brutos
    Use um comando de bot como /channelinfo ou um script personalizado que chame o endpoint da API do Discord GET /channels/{channel.id}. A resposta inclui um campo position como float. Por exemplo, um canal pode mostrar "position": 1.5.
  4. Interprete o Valor Float
    Ordene os canais por esse valor float. A ordem visual no Discord corresponde à ordem crescente desses floats. Lacunas entre valores inteiros significam apenas que há espaço para futuros canais serem inseridos.

Se você é administrador de servidor e deseja redefinir todas as posições dos canais para inteiros sequenciais limpos, pode fazer isso movendo cada canal para uma categoria temporária e depois de volta para sua posição original. No entanto, isso não é recomendado, pois pode quebrar integrações de bots que dependem de valores de posição.

ADVERTISEMENT

Equívocos comuns sobre números de posição de canais

“Meu bot mostra números de posição duplicados”

Se um bot mostra dois canais com posição 1, a causa provável é que o bot está truncando o float para um inteiro. Verifique a documentação ou o código-fonte do bot para ver se ele usa Math.floor() ou parseInt(). As posições reais podem ser 1.0 e 1.5. O bot deve exibir o float completo ou ordenar pelo valor bruto em vez de exibir o inteiro truncado.

“Os números de posição pulam após mover um canal para uma nova categoria”

Quando você move um canal de uma categoria para outra, o Discord atribui a ele uma nova posição dentro da categoria de destino. A nova posição é calculada como a média dos canais adjacentes nessa categoria. A posição antiga na categoria de origem permanece inalterada para outros canais. Isso pode fazer com que o canal apareça com uma posição que parece fora de sequência em comparação com sua localização anterior. Isso é comportamento normal e não afeta a funcionalidade.

“Os números de posição são redefinidos após um boost do servidor ou atualização”

O Discord não redefine as posições dos canais durante boosts do servidor ou atualizações do cliente. Se você observar uma redefinição, é provável que um bot ou script tenha reordenado os canais. Verifique os logs do seu bot em busca de eventos de atualização de canal. O Discord em si nunca renumerá canais automaticamente.

Item Ordem Visual no Discord Posição Float Bruta Inteiro Exibido pelo Bot
Canal A Primeiro 1.0 1
Canal B Segundo 1.5 1 ou 2
Canal C Terceiro 2.0 2
Canal D Quarto 2.75 2 ou 3

Os números de posição dos canais do Discord pulam porque são valores de ponto flutuante que permitem inserção entre canais existentes. A ordem visual está sempre correta quando ordenada pelo float bruto. Bots que exibem posições inteiras podem mostrar duplicatas ou lacunas devido ao truncamento. Para ver a posição verdadeira, use a API ou um bot que retorne o float completo. Lembre-se de que os números de posição são por grupo e por categoria, então um canal em uma categoria diferente pode ter o mesmo número de posição que outro em outra categoria. Entender isso ajudará você a evitar confusão ao gerenciar o layout de canais do seu servidor.

ADVERTISEMENT