feat(event/guild): creation of the event guildMemberRemove

This event will:
  - Send the welcome message (setup on the welcome command)
  - Send the logs message (setup on log in logMember)
This commit is contained in:
Raphael 2025-11-25 15:20:38 +01:00 committed by Raphaël
parent 031055e09c
commit 0afccf3735

View file

@ -0,0 +1,92 @@
import { Channel, EmbedBuilder, Events, GuildMember } from 'discord.js';
import { Guild as GuildPrisma } from '@prisma/client';
import { prisma } from '@lib/prisma';
import { placeholder } from '@lib/placeholder';
import { getUserRoles } from '@lib/roles.js';
import { client } from '@lib/client.js';
export default {
name: Events.GuildMemberRemove,
async execute(member: GuildMember) {
if (member.id === client.user.id) {
return ;
}
const memberId: string = member.id;
const guildId: string = member.guild.id;
const guildData: GuildPrisma = await prisma.guild.findUnique({
where: {
id: guildId,
},
});
if (guildData.leaveEnabled) {
const fetchedChannel: Channel | null = await member.client.channels.fetch(guildData.leaveChannel as string);
if (fetchedChannel) {
fetchedChannel.send({
content: placeholder(guildData.leaveMessage, member),
});
}
}
if (guildData.logMember) {
const toSend: EmbedBuilder = new EmbedBuilder()
.setTitle('🛫 | Member just left')
.setAuthor({
name: `${member.user.username} (${member.user.id})`,
iconURL: member.displayAvatarURL({
size: 2048,
extension: 'png',
}),
})
.setColor(guildData.color)
.setFooter({
text: guildData.footer,
})
.setTimestamp()
.setDescription(`
**Roles:**
${getUserRoles(member)}
**Acount Creation:**
<t:${Math.floor(member.user.createdTimestamp / 1000)}:D> <t:${Math.floor(member.user.createdTimestamp / 1000)}:R>
**JoinDate:**
<t:${Math.floor(member.joinedTimestamp / 1000)}:D> <t:${Math.floor(member.joinedTimestamp / 1000)}:R>
`);
const fetchedChannel: Channel | null = await member.client.channels.fetch(guildData.logMember as string);
if (fetchedChannel) {
fetchedChannel.send({
embeds: [toSend],
});
}
}
await prisma.user.upsert({
where: {
id: memberId,
},
update: {},
create: {
id: memberId,
},
});
await prisma.guildUser.upsert({
where: {
userId_guildId: {
userId: memberId,
guildId: guildId,
},
},
update: {},
create: {
user: {
connect:
{
id: memberId,
},
},
guild: {
connect: {
id: guildId,
},
},
},
});
},
};