class implementation with fixes and prisma schema changes
This commit is contained in:
@@ -6,51 +6,54 @@ module.exports = {
|
||||
const { profile } = require("../functions/postgres");
|
||||
const { roundRect, expThreshold } = require("../functions/tools");
|
||||
const canvas = require("canvas");
|
||||
await profile(connect, msg.author.id).then((user) => {
|
||||
canvas.registerFont("./src/fonts/Lexend-Bold.ttf", {
|
||||
family: "LexendBold",
|
||||
});
|
||||
canvas.registerFont("./src/fonts/Lexend-Thin.ttf", {
|
||||
family: "LexendThin",
|
||||
});
|
||||
const canva = canvas.createCanvas(1024, 256);
|
||||
let context = canva.getContext("2d");
|
||||
context.fillStyle = "#484848";
|
||||
roundRect(context, 0, 0, 1024, 256, 25);
|
||||
context.fill();
|
||||
context.font = '48px "LexendBold"';
|
||||
context.fillStyle = "#FFFFFF";
|
||||
context.fillText(msg.author.tag, 244, 24 + 48);
|
||||
context.fillText("Lvl " + user.lvl, 850, 24 + 48);
|
||||
context.font = '25px "LexendThin"';
|
||||
context.fillText(user.msg_count + " messages sent", 244, 72 + 25);
|
||||
context.font = '24px "LexendThin"';
|
||||
context.fillText(expThreshold(user.lvl + 1) + " exp", 810, 164 + 24);
|
||||
context.fillText(user.exp + " exp", 250, 164 + 24);
|
||||
context.fillStyle = "#242424";
|
||||
roundRect(context, 244, 200, 700, 30, 50);
|
||||
context.fill();
|
||||
context.fillStyle = "#61F2EA";
|
||||
roundRect(
|
||||
context,
|
||||
244,
|
||||
200,
|
||||
700 *
|
||||
((user.exp - expThreshold(user.lvl)) / expThreshold(user.lvl + 1)),
|
||||
30,
|
||||
50
|
||||
);
|
||||
context.fill();
|
||||
roundRect(context, 34, 34, 188, 188, 100);
|
||||
canvas
|
||||
.loadImage(msg.author.avatarURL({ format: "png" }))
|
||||
.then((image) => {
|
||||
context.clip();
|
||||
context.drawImage(image, 34, 34, 188, 188);
|
||||
msg.reply({
|
||||
files: [canva.toBuffer()],
|
||||
});
|
||||
await connect
|
||||
.profile(msg.author.id)
|
||||
.then((user) => {
|
||||
canvas.registerFont("./src/fonts/Lexend-Bold.ttf", {
|
||||
family: "LexendBold",
|
||||
});
|
||||
});
|
||||
canvas.registerFont("./src/fonts/Lexend-Thin.ttf", {
|
||||
family: "LexendThin",
|
||||
});
|
||||
const canva = canvas.createCanvas(1024, 256);
|
||||
let context = canva.getContext("2d");
|
||||
context.fillStyle = "#484848";
|
||||
roundRect(context, 0, 0, 1024, 256, 25);
|
||||
context.fill();
|
||||
context.font = '48px "LexendBold"';
|
||||
context.fillStyle = "#FFFFFF";
|
||||
context.fillText(msg.author.tag, 244, 24 + 48);
|
||||
context.fillText("Lvl " + user.lvl, 850, 24 + 48);
|
||||
context.font = '25px "LexendThin"';
|
||||
context.fillText(user.msg_count + " messages sent", 244, 72 + 25);
|
||||
context.font = '24px "LexendThin"';
|
||||
context.fillText(expThreshold(user.lvl + 1) + " exp", 810, 164 + 24);
|
||||
context.fillText(user.exp + " exp", 250, 164 + 24);
|
||||
context.fillStyle = "#242424";
|
||||
roundRect(context, 244, 200, 700, 30, 50);
|
||||
context.fill();
|
||||
context.fillStyle = "#61F2EA";
|
||||
roundRect(
|
||||
context,
|
||||
244,
|
||||
200,
|
||||
700 *
|
||||
((user.exp - expThreshold(user.lvl)) / expThreshold(user.lvl + 1)),
|
||||
30,
|
||||
50
|
||||
);
|
||||
context.fill();
|
||||
roundRect(context, 34, 34, 188, 188, 100);
|
||||
canvas
|
||||
.loadImage(msg.author.avatarURL({ format: "png" }))
|
||||
.then((image) => {
|
||||
context.clip();
|
||||
context.drawImage(image, 34, 34, 188, 188);
|
||||
msg.reply({
|
||||
files: [canva.toBuffer()],
|
||||
});
|
||||
});
|
||||
})
|
||||
.catch((err) => console.error(err.stack));
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
const { lvl, randomExp } = require("./tools");
|
||||
const { PrismaClient } = require("@prisma/client");
|
||||
class Postgres {
|
||||
constructor() {
|
||||
this.client = new PrismaClient();
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
messageCount: async function (connect, userID) {
|
||||
const update = await connect.users.update({
|
||||
async messageCount(userID) {
|
||||
return await this.client.users.update({
|
||||
where: {
|
||||
user_id: userID,
|
||||
},
|
||||
@@ -12,49 +16,59 @@ module.exports = {
|
||||
},
|
||||
},
|
||||
});
|
||||
return update;
|
||||
},
|
||||
profile: async function (connect, userID) {
|
||||
return await connect.users.findUnique({
|
||||
}
|
||||
|
||||
async profile(userID) {
|
||||
return await this.client.users.findUnique({
|
||||
where: {
|
||||
user_id: userID,
|
||||
},
|
||||
});
|
||||
},
|
||||
addExp: async function (connect, userID, min, max) {
|
||||
const rExp = randomExp(min, max);
|
||||
return await connect.users.upsert({
|
||||
where: {
|
||||
user_id: userID,
|
||||
},
|
||||
create: {
|
||||
user_id: userID,
|
||||
msg_count: 1,
|
||||
exp: randomExp(min, max),
|
||||
lvl: 0,
|
||||
},
|
||||
update: {
|
||||
msg_count: {
|
||||
increment: 1,
|
||||
}
|
||||
|
||||
async addExp(userID, min, max) {
|
||||
await this.#ifExist(userID).then(async () => {
|
||||
const rExp = randomExp(min, max);
|
||||
return await this.client.users.update({
|
||||
where: {
|
||||
user_id: userID,
|
||||
},
|
||||
exp: {
|
||||
increment: rExp,
|
||||
data: {
|
||||
msg_count: {
|
||||
increment: 1,
|
||||
},
|
||||
exp: {
|
||||
increment: rExp,
|
||||
},
|
||||
lvl: lvl(
|
||||
(
|
||||
await this.client.users.findUnique({
|
||||
where: {
|
||||
user_id: userID,
|
||||
},
|
||||
select: {
|
||||
exp: true,
|
||||
},
|
||||
})
|
||||
).exp
|
||||
),
|
||||
},
|
||||
lvl: lvl(
|
||||
(
|
||||
await connect.users.findUnique({
|
||||
where: {
|
||||
user_id: userID,
|
||||
},
|
||||
select: {
|
||||
exp: true,
|
||||
},
|
||||
})
|
||||
).exp + rExp
|
||||
),
|
||||
},
|
||||
});
|
||||
});
|
||||
},
|
||||
addBadge: async function (args) {},
|
||||
giveBadge: async function (args) {},
|
||||
};
|
||||
}
|
||||
async #ifExist(userID) {
|
||||
if ((await !this.profile(userID)) == null) {
|
||||
await this.client.users.create({
|
||||
data: {
|
||||
user_id: userID,
|
||||
msg_count: 0,
|
||||
lvl: 0,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//addBadge: async function (args) {},
|
||||
//giveBadge: async function (args) {},
|
||||
}
|
||||
module.exports.Postgres = Postgres;
|
||||
|
||||
Reference in New Issue
Block a user