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

Function execute

src/commands/Leveling/rank.js:20–98  ·  view source on GitHub ↗
(interaction, config, client)

Source from the content-addressed store, hash-verified

18 category: 'Leveling',
19
20 async execute(interaction, config, client) {
21 try {
22 await InteractionHelper.safeDefer(interaction);
23
24 const levelingConfig = await getLevelingConfig(client, interaction.guildId);
25 if (!levelingConfig?.enabled) {
26 await InteractionHelper.safeEditReply(interaction, {
27 embeds: [
28 new EmbedBuilder()
29 .setColor('#f1c40f')
30 .setDescription('The leveling system is currently disabled on this server.')
31 ],
32 flags: MessageFlags.Ephemeral
33 });
34 return;
35 }
36
37 const targetUser = interaction.options.getUser('user') || interaction.user;
38 const member = await interaction.guild.members
39 .fetch(targetUser.id)
40 .catch(() => null);
41
42 if (!member) {
43 throw new TitanBotError(
44 `User ${targetUser.id} not found in guild`,
45 ErrorTypes.USER_INPUT,
46 'Could not find the specified user in this server.'
47 );
48 }
49
50 const userData = await getUserLevelData(client, interaction.guildId, targetUser.id);
51
52 const safeUserData = {
53 level: userData?.level ?? 0,
54 xp: userData?.xp ?? 0,
55 totalXp: userData?.totalXp ?? 0
56 };
57
58 const xpNeeded = getXpForLevel(safeUserData.level + 1);
59 const progress = xpNeeded > 0 ? Math.floor((safeUserData.xp / xpNeeded) * 100) : 0;
60 const progressBar = createProgressBar(progress, 20);
61
62 const embed = new EmbedBuilder()
63 .setTitle(`${member.displayName}'s Rank`)
64 .setThumbnail(member.displayAvatarURL({ dynamic: true }))
65 .addFields(
66 {
67 name: 'Level',
68 value: safeUserData.level.toString(),
69 inline: true
70 },
71 {
72 name: 'XP',
73 value: `${safeUserData.xp}/${xpNeeded}`,
74 inline: true
75 },
76 {
77 name: 'Total XP',

Callers

nothing calls this directly

Calls 7

getLevelingConfigFunction · 0.90
getUserLevelDataFunction · 0.90
getXpForLevelFunction · 0.90
handleInteractionErrorFunction · 0.90
createProgressBarFunction · 0.85
safeDeferMethod · 0.80
safeEditReplyMethod · 0.80

Tested by

no test coverage detected