♻️ messageCreate functions are now using Prisma
This commit is contained in:
parent
2371ee366c
commit
f83cef06a8
3 changed files with 113 additions and 41 deletions
|
@ -1,7 +1,6 @@
|
|||
import { Message } from "discord.js";
|
||||
import modules from "../../events/messageCreate/modules";
|
||||
|
||||
import { IEventOptions } from "../../../interfaces/EventOptions";
|
||||
import modules from "../../events/messageCreate/modules";
|
||||
|
||||
export const options: IEventOptions = {
|
||||
type: "on",
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import { ChannelType, Message } from "discord.js";
|
||||
import { message as CooldownMessage } from "../../../../../helpers/cooldown";
|
||||
import fetchGuild from "../../../../../helpers/guildData";
|
||||
import fetchUser from "../../../../../helpers/userData";
|
||||
import logger from "../../../../../middlewares/logger";
|
||||
import prisma from "../../../../../prisma";
|
||||
|
||||
export default {
|
||||
execute: async (message: Message) => {
|
||||
|
@ -12,32 +11,70 @@ export default {
|
|||
if (author.bot) return;
|
||||
if (channel.type !== ChannelType.GuildText) return;
|
||||
|
||||
const { id: guildId } = guild;
|
||||
const { id: userId } = author;
|
||||
const createGuildMember = await prisma.guildMember.upsert({
|
||||
where: {
|
||||
userId_guildId: {
|
||||
userId: author.id,
|
||||
guildId: guild.id,
|
||||
},
|
||||
},
|
||||
update: {},
|
||||
create: {
|
||||
user: {
|
||||
connectOrCreate: {
|
||||
create: {
|
||||
id: author.id,
|
||||
},
|
||||
where: {
|
||||
id: author.id,
|
||||
},
|
||||
},
|
||||
},
|
||||
guild: {
|
||||
connectOrCreate: {
|
||||
create: {
|
||||
id: guild.id,
|
||||
},
|
||||
where: {
|
||||
id: guild.id,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
include: {
|
||||
user: true,
|
||||
guild: true,
|
||||
},
|
||||
});
|
||||
|
||||
const guildData = await fetchGuild(guild);
|
||||
const userData = await fetchUser(author, guild);
|
||||
logger.silly(createGuildMember);
|
||||
|
||||
if (content.length < guildData.credits.minimumLength) return;
|
||||
if (content.length < createGuildMember.guild.creditsMinimumLength) return;
|
||||
|
||||
const isOnCooldown = await CooldownMessage(
|
||||
message,
|
||||
guildData.credits.timeout,
|
||||
createGuildMember.guild.creditsTimeout,
|
||||
"messageCreate-credits"
|
||||
);
|
||||
if (isOnCooldown) return;
|
||||
|
||||
userData.credits += guildData.credits.rate;
|
||||
const updateGuildMember = await prisma.guildMember.update({
|
||||
where: {
|
||||
userId_guildId: {
|
||||
userId: author.id,
|
||||
guildId: guild.id,
|
||||
},
|
||||
},
|
||||
data: {
|
||||
creditsEarned: {
|
||||
increment: createGuildMember.guild.creditsRate,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await userData
|
||||
.save()
|
||||
.then(() => {
|
||||
logger.silly(
|
||||
`User ${userId} in guild ${guildId} has ${userData.credits} credits`
|
||||
);
|
||||
})
|
||||
.catch(() => {
|
||||
throw new Error(`Error saving credits to database.`);
|
||||
});
|
||||
logger.silly(updateGuildMember);
|
||||
|
||||
if (!updateGuildMember)
|
||||
throw new Error("Failed to update guildMember object");
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import { ChannelType, Message } from "discord.js";
|
||||
import { message as CooldownMessage } from "../../../../../helpers/cooldown";
|
||||
import fetchGuild from "../../../../../helpers/guildData";
|
||||
import fetchUser from "../../../../../helpers/userData";
|
||||
import logger from "../../../../../middlewares/logger";
|
||||
import prisma from "../../../../../prisma";
|
||||
|
||||
export default {
|
||||
execute: async (message: Message) => {
|
||||
|
@ -12,33 +11,70 @@ export default {
|
|||
if (author.bot) return;
|
||||
if (channel.type !== ChannelType.GuildText) return;
|
||||
|
||||
const guildData = await fetchGuild(guild);
|
||||
const userData = await fetchUser(author, guild);
|
||||
const createGuildMember = await prisma.guildMember.upsert({
|
||||
where: {
|
||||
userId_guildId: {
|
||||
userId: author.id,
|
||||
guildId: guild.id,
|
||||
},
|
||||
},
|
||||
update: {},
|
||||
create: {
|
||||
user: {
|
||||
connectOrCreate: {
|
||||
create: {
|
||||
id: author.id,
|
||||
},
|
||||
where: {
|
||||
id: author.id,
|
||||
},
|
||||
},
|
||||
},
|
||||
guild: {
|
||||
connectOrCreate: {
|
||||
create: {
|
||||
id: guild.id,
|
||||
},
|
||||
where: {
|
||||
id: guild.id,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
include: {
|
||||
user: true,
|
||||
guild: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (content.length < guildData.credits.minimumLength) return;
|
||||
logger.silly(createGuildMember);
|
||||
|
||||
if (content.length < createGuildMember.guild.pointsMinimumLength) return;
|
||||
|
||||
const isOnCooldown = await CooldownMessage(
|
||||
message,
|
||||
guildData.credits.timeout,
|
||||
createGuildMember.guild.pointsTimeout,
|
||||
"messageCreate-points"
|
||||
);
|
||||
if (isOnCooldown) return;
|
||||
|
||||
userData.points += guildData.points.rate;
|
||||
const updateGuildMember = await prisma.guildMember.update({
|
||||
where: {
|
||||
userId_guildId: {
|
||||
userId: author.id,
|
||||
guildId: guild.id,
|
||||
},
|
||||
},
|
||||
data: {
|
||||
pointsEarned: {
|
||||
increment: createGuildMember.guild.pointsRate,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
await userData
|
||||
.save()
|
||||
.then(() => {
|
||||
logger.silly(
|
||||
`Successfully saved user ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id})`
|
||||
);
|
||||
})
|
||||
.catch(() => {
|
||||
throw new Error("Error saving points to database.");
|
||||
});
|
||||
logger.silly(updateGuildMember);
|
||||
|
||||
logger.silly(
|
||||
`User ${author.tag} (${author.id}) in guild: ${guild?.name} (${guild?.id}) has ${userData.points} points`
|
||||
);
|
||||
if (!updateGuildMember)
|
||||
throw new Error("Failed to update guildMember object");
|
||||
},
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue