multiple welcome messages fix

This commit is contained in:
Danya H 2024-06-11 14:29:03 +01:00
parent 56e2dcfff6
commit 849d98afda

View File

@ -1,12 +1,26 @@
import { ArgsOf, Discord, On } from 'discordx' import { ArgsOf, Discord, On } from 'discordx'
import { EmbedBuilder, channelMention, userMention } from 'discord.js' import { EmbedBuilder, channelMention, userMention, User } from 'discord.js'
import { db, DBTableEnum } from '../db' import { db, DBTableEnum } from '../db'
import { logger } from '../lib' import { logger } from '../lib'
let lastJoinedUser: {
username: string
sent: boolean
} = {
username: '',
sent: false,
}
@Discord() @Discord()
export class GuildMemberAdd { export class GuildMemberAdd {
@On({ event: 'guildMemberAdd' }) @On({ event: 'guildMemberAdd' })
async guildMemberAdd([member]: ArgsOf<'guildMemberAdd'>) { async guildMemberAdd([member]: ArgsOf<'guildMemberAdd'>) {
if (
lastJoinedUser.username === member.user.username &&
lastJoinedUser.sent
)
return
const portfolioChannelID = await db.get(DBTableEnum.PORTFOLIO_CHANNEL) const portfolioChannelID = await db.get(DBTableEnum.PORTFOLIO_CHANNEL)
const makeAnOrderChannelID = await db.get( const makeAnOrderChannelID = await db.get(
DBTableEnum.MAKE_AN_ORDER_CHANNEL, DBTableEnum.MAKE_AN_ORDER_CHANNEL,
@ -30,15 +44,25 @@ export class GuildMemberAdd {
const role = await member.guild.roles.fetch(roleID) const role = await member.guild.roles.fetch(roleID)
if (channel && channel.isTextBased() && role) { if (channel && channel.isTextBased() && role) {
channel.send({ await channel
embeds: [embed], .send({
content: `What's up, ${userMention(member.id)}`, embeds: [embed],
}) content: `What's up, ${userMention(member.id)}`,
})
.then(() => {
lastJoinedUser = {
username: member.user.username,
sent: true,
}
})
try { try {
await member.roles.add(role) await member.roles.add(role)
} catch (e) { } catch (e) {
logger.error('Role is too high', 'Bot role must be higher than the role it gives') logger.error(
'Role is too high',
'Bot role must be higher than the role it gives',
)
} }
} }
} }