gacha-bot / utils /code_converter.py
Amit
Clean Cloud Deployment
732ca45
Raw
History Blame Contribute Delete
931 Bytes
# utils/code_converter.py
# Base58 Alphabet (Removes easily confused characters: 0, O, I, l)
ALPHABET = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
BASE = len(ALPHABET)
# We add a massive offset so even ID #1 looks like a randomized gacha code
OFFSET = 14758923
def encode_id(instance_id: int) -> str:
"""Converts a database integer ID into a cool alphanumeric string."""
num = instance_id + OFFSET
if num == 0:
return ALPHABET[0]
arr = []
while num:
num, rem = divmod(num, BASE)
arr.append(ALPHABET[rem])
arr.reverse()
return ''.join(arr)
def decode_id(code: str) -> int:
"""Converts the alphanumeric string back into the database integer ID."""
num = 0
for char in code:
if char not in ALPHABET:
raise ValueError(f"Invalid character in code: {char}")
num = num * BASE + ALPHABET.index(char)
return num - OFFSET