harmony/src/utils/snowflake.ts

29 lines
631 B
TypeScript

/** Utility class to extract data from a Snowflake (Discord ID) */
export class Snowflake {
id: string
constructor(id: string) {
this.id = id
}
get snowflake(): bigint {
return BigInt.asUintN(64, BigInt(this.id))
}
get timestamp(): number {
return Number(((this.snowflake >> 22n) + 1420070400000n).toString())
}
get workerID(): number {
return Number(((this.snowflake & 0x3e0000n) >> 17n).toString())
}
get processID(): number {
return Number(((this.snowflake & 0x1f00n) >> 12n).toString())
}
get increment(): number {
return Number((this.snowflake & 0xfffn).toString())
}
}