MCPcopy Index your code
hub / github.com/codebymitch/TitanBot / setUserLevel

Function setUserLevel

src/services/leveling.js:398–439  ·  view source on GitHub ↗
(client, guildId, userId, level)

Source from the content-addressed store, hash-verified

396}
397
398export async function setUserLevel(client, guildId, userId, level) {
399 try {
400 const levelingConfig = await getLevelingConfig(client, guildId);
401 if (!levelingConfig?.enabled) {
402 throw new TitanBotError(
403 'Leveling system is disabled on this server',
404 ErrorTypes.CONFIGURATION,
405 'The leveling system is currently disabled on this server.'
406 );
407 }
408
409 if (!Number.isInteger(level) || level < MIN_LEVEL || level > MAX_LEVEL) {
410 throw new TitanBotError(
411 `Invalid level: ${level}`,
412 ErrorTypes.VALIDATION,
413 `Level must be between ${MIN_LEVEL} and ${MAX_LEVEL}.`
414 );
415 }
416
417 const userData = await getUserLevelData(client, guildId, userId);
418
419 const newXp = 0;
420 const newTotalXp = calculateTotalXp(level, newXp);
421
422 userData.level = level;
423 userData.xp = newXp;
424 userData.totalXp = newTotalXp;
425
426 await saveUserLevelData(client, guildId, userId, userData);
427
428 logger.info(`Set level for user ${userId} to ${level} in guild ${guildId}`);
429 return userData;
430 } catch (error) {
431 logger.error(`Error setting level for user ${userId}:`, error);
432 if (error instanceof TitanBotError) throw error;
433 throw new TitanBotError(
434 `Failed to set level: ${error.message}`,
435 ErrorTypes.DATABASE,
436 'Could not set level at this time.'
437 );
438 }
439}
440
441export async function deleteUserLevelData(client, guildId, userId) {
442 try {

Callers 1

executeFunction · 0.90

Calls 4

calculateTotalXpFunction · 0.85
getLevelingConfigFunction · 0.70
getUserLevelDataFunction · 0.70
saveUserLevelDataFunction · 0.70

Tested by

no test coverage detected