Discord Snowflake: Con số ID dài có ý nghĩa gì
Snowflake là số 64 bit duy nhất mà Discord cấp cho mọi người dùng, máy chủ, kênh, vai trò và tin nhắn. 42 bit đầu chứa một dấu thời gian, nên bất kỳ snowflake nào cũng cho bạn biết thứ đó được tạo ra vào lúc nào, chính xác đến mili giây.
Snowflake là gì
Mỗi khi bạn sao chép một ID trong Discord, bạn đang sao chép một snowflake. Nó trông như 175928847299117063: một số nguyên dài có 17 đến 19 chữ số. Discord dùng cùng định dạng cho người dùng, máy chủ (được gọi là guild trong API), kênh, vai trò, tin nhắn, emoji và nhiều thứ khác.
Định dạng này xuất phát từ một lược đồ được Twitter dùng đầu tiên. Mục đích là tạo ra các ID duy nhất, gần như sắp xếp theo thời gian trên nhiều máy mà không cần chúng hỏi nhau số tiếp theo là gì.
Các bit được sắp xếp thế nào
Một snowflake được chia thành bốn phần, từ trái sang phải:
- 42 bit thời gian: số mili giây kể từ giây đầu tiên của năm 2015 (mốc thời gian của Discord, 1420070400000).
- 5 bit worker ID và 5 bit process ID: máy Discord và tiến trình nào đã tạo ra nó.
- 12 bit increment: một bộ đếm tăng lên cho mỗi ID mà tiến trình đó tạo ra trong cùng một mili giây.
Để đọc thời điểm tạo, dịch số sang phải 22 bit rồi cộng với mốc thời gian. Kết quả là một dấu thời gian Unix tính bằng mili giây. Đây là lý do bạn có thể biết khi nào một máy chủ hoặc tin nhắn được tạo mà không cần hỏi ai.
Vì sao chủ máy chủ quan tâm
Bạn sẽ chủ yếu gặp snowflake khi bật Developer Mode (User Settings, Advanced) và nhấp chuột phải vào một thứ để Copy ID. Mọi người hỏi ID trong báo cáo lỗi, khi thiết lập bot và khi gỡ một kẻ xấu đã đổi tên. Tên thay đổi, còn ID thì không.
Hai lưu ý thực tế:
- ID là định danh công khai, không phải bí mật. Biết một ID kênh không cho ai quyền truy cập vào kênh đó.
- Vì chúng lớn hơn những gì nhiều chương trình lưu như một số thông thường, API của Discord gửi chúng dưới dạng chuỗi. Bảng tính làm tròn các số dài có thể làm hỏng một ID, nên hãy giữ chúng ở dạng văn bản.
Công cụ giải mã snowflake miễn phí của chúng tôi chuyển một ID thành ngày tạo ngay trong trình duyệt của bạn.
Noxyr dùng ID thế nào
Noxyr lưu ID người dùng Discord ở nơi một tính năng cần chúng: người mở vé, khách hàng hóa đơn, mục tham gia giveaway, lượt bình chọn, tác giả đánh giá và danh sách chặn. Bảng điều khiển cũng giữ ID, tên người dùng và ảnh đại diện của bạn để đăng nhập. Tài liệu dữ liệu và quyền riêng tư liệt kê chính xác những gì được giữ lại.
Một số tính năng nhận ID làm đầu vào. Ví dụ, chủ bot tùy chỉnh có thể chuyển thời gian còn lại sang người khác bằng ID người dùng của họ, và bot giữ ID người dùng riêng của nó bất kể bạn đổi tên bao nhiêu lần. Đó là lý do các vai trò và ghi đè gắn với nó vẫn hoạt động sau một đổi thương hiệu.
Thuật ngữ liên quan
Một application ID cũng là một snowflake, và mọi ID guild cũng vậy. Sharding thậm chí dùng guild ID để quyết định shard nào nhận một máy chủ, xem sharding.
Câu hỏi thường gặp
Làm thế nào để tìm ID Discord?
Bật Developer Mode trong User Settings, Advanced. Sau đó nhấp chuột phải vào người dùng, kênh, vai trò hoặc máy chủ và chọn Copy ID.
Có thể tìm ngày tạo từ một ID không?
Có. Dịch số sang phải 22 bit rồi cộng với 1420070400000 để có thời gian Unix tính bằng mili giây. Công cụ giải mã snowflake làm điều này cho bạn.
ID Discord có phải là riêng tư không?
Không. ID là định danh công khai và tự nó không cấp quyền truy cập. Hãy coi token là bí mật, còn ID thì không.