mirror of
https://github.com/veganhacktivists/arabot.git
synced 2025-05-18 17:44:15 +02:00
fix(arabot): add xp to next level to fix levels being broken
This commit is contained in:
parent
e48db66f0c
commit
304f5996fb
@ -0,0 +1,2 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "Xp" ADD COLUMN "xpToNextLevel" INTEGER NOT NULL DEFAULT 0;
|
@ -98,12 +98,13 @@ model Verify {
|
||||
}
|
||||
|
||||
model Xp {
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
userId String @id
|
||||
level Int @default(0)
|
||||
xp Int @default(0)
|
||||
messageCount Int @default(0)
|
||||
lastMessage DateTime @default(now())
|
||||
user User @relation(fields: [userId], references: [id])
|
||||
userId String @id
|
||||
level Int @default(0)
|
||||
xp Int @default(0)
|
||||
xpToNextLevel Int @default(0)
|
||||
messageCount Int @default(0)
|
||||
lastMessage DateTime @default(now())
|
||||
}
|
||||
|
||||
// Economy
|
||||
|
@ -13,6 +13,7 @@ export async function getUser(userId: Snowflake) {
|
||||
},
|
||||
select: {
|
||||
xp: true,
|
||||
xpToNextLevel: true,
|
||||
level: true,
|
||||
},
|
||||
});
|
||||
@ -21,11 +22,17 @@ export async function getUser(userId: Snowflake) {
|
||||
|
||||
export async function addXp(userId: Snowflake, xp: number) {
|
||||
const user = await getUser(userId);
|
||||
let xpNextLevel = xp;
|
||||
|
||||
let level = 0;
|
||||
if (user !== null
|
||||
&& xpToNextLevel(user.level, user.xp + xp) < 0) {
|
||||
level = 1;
|
||||
if (user !== null) {
|
||||
xpNextLevel = xpToNextLevel(user.level, user.xpToNextLevel + xp);
|
||||
if (xpNextLevel < 0) {
|
||||
xpNextLevel = -xpNextLevel;
|
||||
level = 1;
|
||||
} else {
|
||||
xpNextLevel = user.xpToNextLevel + xp;
|
||||
}
|
||||
}
|
||||
|
||||
await container.database.xp.upsert({
|
||||
@ -34,6 +41,7 @@ export async function addXp(userId: Snowflake, xp: number) {
|
||||
},
|
||||
update: {
|
||||
xp: { increment: xp },
|
||||
xpToNextLevel: xpNextLevel,
|
||||
level: { increment: level },
|
||||
messageCount: { increment: 1 },
|
||||
lastMessage: new Date(),
|
||||
@ -51,6 +59,7 @@ export async function addXp(userId: Snowflake, xp: number) {
|
||||
},
|
||||
messageCount: 1,
|
||||
xp,
|
||||
xpToNextLevel: xp,
|
||||
},
|
||||
});
|
||||
}
|
||||
@ -98,22 +107,8 @@ export async function getRank(userId: Snowflake) {
|
||||
},
|
||||
});
|
||||
|
||||
const xp = await container.database.xp.findUnique({
|
||||
where: {
|
||||
userId,
|
||||
},
|
||||
select: {
|
||||
level: true,
|
||||
xp: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (xp === null) {
|
||||
return info;
|
||||
}
|
||||
|
||||
info.level = xp.level;
|
||||
info.xp = xp.xp;
|
||||
info.level = user.level;
|
||||
info.xp = user.xp;
|
||||
|
||||
return info;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user