Discord の ID をデコードして、作成日時とそれが今からどのくらい前かを確認できます。アカウント、サーバー、チャンネル、メッセージが対象です。無料、ログイン不要で、ID はブラウザの外に出ません。
Discord のユーザー、サーバー、チャンネル、メッセージ、ロールには、すべて同じ形式の ID が付いています。この形式が Snowflake で、64 ビットの数値のうち上位 42 ビットが、ID が作成された時刻をミリ秒単位で表します。この部分をデコードすると、Discord アカウントがいつ作成されたか、サーバーやチャンネルがどのくらい前に作られたか、メッセージがいつ送信されたかがわかります。
ユーザー ID にはアカウントが作成された時刻が入っているので、デコードするとアカウントがどのくらい前に作られたかがわかります。これはユーザーがサーバーに参加した時刻ではありません。参加時刻は Discord が別に保持しています。直前に作られたアカウントから荒らしやスパムの波が来たとき、アカウントの作成時期はモデレーターの判断材料になることがありますが、新しいアカウントだというだけでは何の証明にもなりません。どのアカウントも、最初は新しいものでした。
Discord の Snowflake は 64 ビットの数値で、上位ビットから順に四つのフィールドに分かれています。
タイムスタンプを取り出すには、ID を右に 22 ビットシフトしてエポックを足します:timestamp_ms = (snowflake >> 22) + 1420070400000。たとえば 175928847299117063 は 2016-04-30T11:18:25.796Z にデコードされ、ワーカー ID は 1、プロセス ID は 0、インクリメントは 7 です。
Discord は 1970年の Unix エポックではなく、独自のエポックである 2015年1月1日 00:00 UTC(ミリ秒単位の Unix 時間で 1420070400000)から数えます。2015年から数えることで、42 ビットのタイムスタンプは 2109 年ではなく 2154 年まで持ちます。Discord Epoch より古い Snowflake は存在しません。タイムスタンプのフィールドには、それより前の時刻を入れられないからです。
Snowflake には持ち主を示す情報がないため、ツールはユーザー ID、サーバー ID、チャンネル ID、メッセージ ID、ロール ID をすべて同じ方法でデコードします。ID の種類の下のボタンが変えるのは日付の上のラベルだけで、ユーザーの作成日時やメッセージの送信日時などが表示されます。デコードされる値は変わりません。メッセージ ID の場合、時刻はメッセージが送信された時刻です。サーバー、チャンネル、ロールの場合は、作成された時刻です。二種類のオブジェクトは、所属先の ID と同じ ID を共有しています。メッセージから作られたスレッドにはそのメッセージの ID が付くので、その時刻はメッセージが送信された時刻です。また @everyone ロールにはサーバーの ID が付いています。
Number(snowflake) では下の桁が気づかないうちに変わることがあります。ID は文字列のまま保持し、計算には BigInt を使ってください。このツールもそうしています。Powered by Pigona - Discord 向けの無料翻訳