fix(bot): improved leveling system type checks (#429)
Some checks are pending
Commitlint / Run commitlint scanning (push) Waiting to run
ESLint / Run eslint scanning (push) Waiting to run
NodeJS Build / build (24.x) (push) Waiting to run

This commit is contained in:
Ahmad 2025-06-15 22:24:55 -04:00 committed by GitHub
commit f96f05df01
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 36 additions and 6 deletions

View file

@ -86,10 +86,8 @@ export async function addXpToUser(
const cacheKey = `level-${discordId}`;
const userData = await getUserLevel(discordId);
const currentLevel = userData.level;
const currentXp = Number(userData.xp);
const xpToAdd = Number(amount);
userData.xp = currentXp + xpToAdd;
userData.xp = Number(userData.xp ?? 0) + Number(amount);
userData.lastMessageTimestamp = new Date();
userData.level = calculateLevelFromXp(userData.xp);

View file

@ -16,9 +16,41 @@ import { processMessageAchievements } from './achievementManager.js';
const config = loadConfig();
const XP_COOLDOWN = config.leveling.xpCooldown * 1000;
const MIN_XP = config.leveling.minXpAwarded;
const MAX_XP = config.leveling.maxXpAwarded;
let minXpOffered = config.leveling.minXpAwarded ?? 5;
let maxXpOffered = config.leveling.maxXpAwarded ?? 15;
if (typeof minXpOffered === 'string') {
minXpOffered = Number(minXpOffered);
}
if (isNaN(minXpOffered) || minXpOffered < 0) {
throw new Error('Minimum XP awarded must be a non-negative number.');
}
if (typeof maxXpOffered === 'string') {
maxXpOffered = Number(maxXpOffered);
}
if (isNaN(maxXpOffered) || maxXpOffered < 0) {
throw new Error('Maximum XP awarded must be a non-negative number.');
}
if (minXpOffered > maxXpOffered) {
throw new Error(
'Minimum XP awarded must be less than or equal to maximum XP awarded.',
);
}
const MIN_XP = minXpOffered;
const MAX_XP = maxXpOffered;
let xpCooldownValue = config.leveling.xpCooldown ?? 60;
if (typeof xpCooldownValue === 'string') {
xpCooldownValue = Number(xpCooldownValue);
}
if (!Number.isFinite(xpCooldownValue) || xpCooldownValue < 0) {
throw new Error('XP cooldown must be a non-negative number.');
}
const XP_COOLDOWN = xpCooldownValue * 1000;
const __dirname = path.resolve();