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:
parent
031055e09c
commit
0afccf3735
1 changed files with 92 additions and 0 deletions
92
src/events/guild/guildMemberRemove.ts
Normal file
92
src/events/guild/guildMemberRemove.ts
Normal 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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
Loading…
Add table
Add a link
Reference in a new issue