Snowflake Discorda: co oznacza długi numer ID
Snowflake to unikalny 64-bitowy numer, który Discord nadaje każdemu użytkownikowi, serwerowi, kanałowi, roli i wiadomości. Pierwsze 42 bity przechowują znacznik czasu, więc każdy snowflake mówi, kiedy dany obiekt powstał, co do milisekundy.
Czym jest snowflake
Za każdym razem, gdy kopiujesz ID w Discordzie, kopiujesz snowflake. Wygląda jak 175928847299117063: długa liczba całkowita o 17 do 19 cyfrach. Discord używa tego samego formatu dla użytkowników, serwerów (w API nazywanych guildami), kanałów, ról, wiadomości, emoji i innych obiektów.
Format pochodzi ze schematu, którego po raz pierwszy użyto w Twitterze. Chodziło o to, by na wielu maszynach tworzyć unikalne, mniej więcej uporządkowane czasowo ID bez pytania się nawzajem o kolejny numer.
Jak ułożone są bity
Snowflake dzieli się na cztery części, od lewej:
- 42 bity znacznika czasu: milisekundy od pierwszej sekundy 2015 roku (epoka Discorda, 1420070400000).
- 5 bitów ID workera i 5 bitów ID procesu: która maszyna i który proces Discorda go utworzył.
- 12 bitów przyrostu: licznik, który rośnie dla każdego ID wytworzonego przez ten proces w tej samej milisekundzie.
Aby odczytać czas utworzenia, przesuń liczbę o 22 bity w prawo i dodaj epokę. Otrzymasz znacznik czasu Unix w milisekundach. Dzięki temu możesz ustalić, kiedy powstał serwer lub wiadomość, nikogo o to nie pytając.
Dlaczego zależy to właścicielom serwerów
Snowflake spotkasz najczęściej po włączeniu trybu dewelopera (User Settings, Advanced) i kliknięciu prawym przyciskiem, by wybrać Copy ID. Ludzie proszą o ID w zgłoszeniach błędów, przy konfiguracji bota i przy usuwaniu złego użytkownika, który zmienił nazwę. Nazwy się zmieniają, ID nie.
Dwie praktyczne uwagi:
- ID to publiczne identyfikatory, a nie sekrety. Znajomość ID kanału nikomu nie daje do niego dostępu.
- Ponieważ są większe niż liczby, które wiele programów zapisuje jako zwykłe liczby, API Discorda wysyła je jako tekst. Arkusze, które zaokrąglają długie liczby, mogą uszkodzić ID, dlatego trzymaj je jako tekst.
Nasz darmowy dekoder snowflake zamienia ID na datę utworzenia w przeglądarce.
Jak Noxyr używa ID
Noxyr zapisuje ID użytkowników Discorda tam, gdzie funkcja tego wymaga: autorów biletów, klientów faktur, zgłoszenia do konkursów, głosy w ankietach, autorów recenzji i czarne listy. Panel przechowuje też twoje ID, nazwę użytkownika i awatar do logowania. Dokumenty o danych i prywatności wymieniają dokładnie, co jest przechowywane.
Niektóre funkcje przyjmują ID jako dane wejściowe. Na przykład właściciel własnego bota może przenieść pozostały czas na inną osobę, podając jej ID użytkownika, a bot zachowuje własne ID użytkownika bez względu na to, jak często zmienisz jego nazwę. Dlatego role i nadpisania powiązane z nim działają dalej po zmianie marki.
Powiązane pojęcia
ID aplikacji też jest snowflake, podobnie jak każde ID guildu. Sharding nawet używa ID guildu, aby zdecydować, który shard obsłuży serwer, zobacz sharding.
Częste pytania
Jak znaleźć ID Discorda?
Włącz tryb dewelopera w User Settings, Advanced. Potem kliknij prawym przyciskiem użytkownika, kanał, rolę lub serwer i wybierz Copy ID.
Czy z ID można odczytać datę utworzenia?
Tak. Przesuń liczbę o 22 bity w prawo i dodaj 1420070400000, aby otrzymać czas Unix w milisekundach. Dekoder snowflake robi to za ciebie.
Czy ID Discorda jest prywatne?
Nie. ID to publiczne identyfikatory i same w sobie nie dają dostępu. Traktuj jako sekrety tokeny, a nie ID.