(client, guildId, userId, data)
| 811 | } |
| 812 | |
| 813 | export async function saveUserLevelData(client, guildId, userId, data) { |
| 814 | const key = getUserLevelKey(guildId, userId); |
| 815 | try { |
| 816 | const levelData = { |
| 817 | ...data, |
| 818 | xp: data.xp || 0, |
| 819 | level: data.level || 0, |
| 820 | totalXp: data.totalXp || 0, |
| 821 | lastMessage: data.lastMessage || 0, |
| 822 | rank: data.rank || 0, |
| 823 | updatedAt: Date.now() |
| 824 | }; |
| 825 | |
| 826 | await setInDb(key, levelData); |
| 827 | return true; |
| 828 | } catch (error) { |
| 829 | logger.error(`Error saving level data for user ${userId} in guild ${guildId}:`, error); |
| 830 | return false; |
| 831 | } |
| 832 | } |
| 833 | |
| 834 | export function getXpForLevel(level) { |
| 835 | return 5 * Math.pow(level, 2) + 50 * level + 50; |
nothing calls this directly
no test coverage detected