Snowflake
discordで使用されているIDの形式
Twitterがつくった
IDの作成された日時が先頭に含まれている
SnowflakeUtilクラスを使用すると取得できる
Discord.jsを使用してSnowflakeを生成、解析する
f(n) = floor(2^(n/log(2)-22)+1420070400000)
これはn桁のSnowflakeのTimestamp部分の持てる最も未来の値を表す。
logは常用対数
floorは底関数
1420070400000はDiscord Epoch
WolframAlphaで計算してみたやつtig.icon
n=16とすると、1422454585791(2015-01-28 23:16:25(JST))となる。
これはdiscordのリリース日より前であり、ゆえにSnowflakeは17桁以上あると考えて良い。
MessageMentions.USERS_PATTERNなどはそのようになっている
2022/7/22 20:22:59.101(JST)に1000000000000000000(19桁)になる
Discord内でユニーク
参考
https://pixelatomy.com/snow-stamp/
https://canary.discord.com/channels/391390986770710528/391394853268750337/856811940612800522