Add ai functionality

This commit is contained in:
Aslan 2025-12-26 04:33:47 +01:00
parent da66cf9001
commit dd4da06753
19 changed files with 1118 additions and 52 deletions

View file

@ -1,7 +1,7 @@
import { config } from "./config.js";
import { state } from "./store/store.js";
import { type IUser, type TRole } from "./store/types.js";
import type { IRank } from "./types.js";
import type { ILevel } from "./types.js";
const getUserById = (userId: string): IUser => {
return (
@ -19,22 +19,22 @@ const checkRoles = (roles: TRole[], userId: string) => {
return roles.includes(user.role);
};
const getRank = (experience: number): IRank => {
const getLevel = (experience: number): ILevel => {
let tmpExperience = experience;
let expToNextRank = config.app.experience.startingRequirement;
let rank = 0;
let expToNextLevel = config.app.experience.startingRequirement;
let level = 0;
while (tmpExperience >= expToNextRank) {
rank++;
tmpExperience -= expToNextRank;
expToNextRank = expToNextRank *= config.app.experience.multiplier;
while (tmpExperience >= expToNextLevel) {
level++;
tmpExperience -= expToNextLevel;
expToNextLevel = expToNextLevel *= config.app.experience.multiplier;
}
return {
rank: rank,
level: level,
experience: Math.floor(experience),
experienceInRank: Math.floor(tmpExperience),
expToNextRank: Math.floor(expToNextRank),
experienceInLevel: Math.floor(tmpExperience),
expToNextLevel: Math.floor(expToNextLevel),
};
};
@ -48,4 +48,4 @@ const getUserName = (user: IUser): string => {
return match.replaceAll("@", "");
};
export { getUserById, checkRoles, getRank, getUserName };
export { getUserById, checkRoles, getLevel, getUserName };