All checks were successful
Auto Build and Push Docker Image / build (push) Successful in 6s
- Add /welcome command with setchannel, add, remove, list, help
- Welcome messages on guildMemberAdd event
- Goodbye messages on guildMemberRemove event
- Auto-use Discord system channel if no custom channel set
- Variables: {user}, {username}, {server}, {membercount}
- Add welcome_message and goodbye_message to guild_settings
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import { Events, GuildMember, TextChannel, EmbedBuilder } from 'discord.js';
|
|
|
|
export default {
|
|
name: Events.GuildMemberAdd,
|
|
async execute(member: GuildMember) {
|
|
const DB = (member.client as any).DB;
|
|
const guildId = member.guild.id;
|
|
|
|
const settings: any = DB.get('SELECT * FROM guild_settings WHERE guild_id = ?', guildId);
|
|
|
|
// Use custom channel or fall back to Discord's system channel
|
|
const channelId = settings?.welcome_channel || member.guild.systemChannelId;
|
|
if (!channelId || !settings?.welcome_message) {
|
|
return;
|
|
}
|
|
|
|
const channel = member.guild.channels.cache.get(channelId);
|
|
if (!channel || !channel.isTextBased()) {
|
|
return;
|
|
}
|
|
|
|
const message = settings.welcome_message
|
|
.replace(/{user}/g, `<@${member.id}>`)
|
|
.replace(/{username}/g, member.user.username)
|
|
.replace(/{server}/g, member.guild.name)
|
|
.replace(/{membercount}/g, member.guild.memberCount.toString());
|
|
|
|
try {
|
|
await (channel as TextChannel).send(message);
|
|
} catch (error) {
|
|
console.error('[WELCOME] Error sending welcome message:', error);
|
|
}
|
|
},
|
|
}; |