snowflake-based invite generation

This commit is contained in:
Erkin Alp Güney
2021-11-28 11:25:41 +03:00
parent fc7df1718c
commit 6d2ae89a3b
2 changed files with 26 additions and 4 deletions

View File

@@ -1,3 +1,5 @@
import { Snowflake } from "@fosscord/util";
export function random(length = 6) {
// Declare all characters
let chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
@@ -10,3 +12,20 @@ export function random(length = 6) {
return str;
}
export function snowflakeBasedInvite() {
// Declare all characters
let chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let snowflake = Snowflake.generateWorkerProcess();
// snowflakes hold ~10.75 characters worth of entropy;
// safe to generate a 8-char invite out of them
let str = "";
for (let i=0; i < 10; i++) {
str += chars.charAt((snowflake % chars.length));
snowflake /= chars.length;
}
return str.substr(3,8).reverse(); // little-endianise for entropy
}