/[sudobot]/trunk/src/services/Welcomer.ts
ViewVC logotype

Annotation of /trunk/src/services/Welcomer.ts

Parent Directory Parent Directory | Revision Log Revision Log


Revision 374 - (hide annotations)
Mon Jul 29 17:29:51 2024 UTC (8 months, 1 week ago) by rakin
File MIME type: application/typescript
File size: 2645 byte(s)
refactor(welcomer): use SUDO_PREFIX variable
1 rakin 199 import { GuildMember, MessageEmbed, TextChannel } from "discord.js";
2     import fs from 'fs';
3     import path from "path";
4 rakin 226 import Service from "../utils/structures/Service";
5 rakin 199
6 rakin 226 export default class Welcomer extends Service {
7 rakin 374 messages: string[] = JSON.parse(fs.readFileSync(path.resolve(process.env.SUOD_PREFIX ?? path.join(__dirname, '..', '..'), 'resources', 'welcome_messages.json')).toString());
8 rakin 247
9     generateEmbed(member: GuildMember, index?: number) {
10     const { message, randomize } = this.client.config.props[member.guild.id].welcomer;
11 rakin 308 let content: string = message ?? '';
12 rakin 247
13     if (randomize) {
14     content = this.generateMessage(index) + (message ? "\n" + content : '');
15     }
16    
17     if (content.trim() === '') {
18     return false;
19     }
20    
21     content = content
22 rakin 308 .replace(/:name:/g, member.displayName)
23     .replace(/:tag:/g, member.user.tag)
24     .replace(/:username:/g, member.user.username)
25     .replace(/:discrim:/g, member.user.discriminator)
26     .replace(/:avatar:/g, member.displayAvatarURL())
27     .replace(/:date:/g, `<t:${member.joinedAt?.getTime()}>`)
28     .replace(/:guild:/g, member.guild.name)
29     .replace(/:mention:/g, member.toString());
30 rakin 247
31     return {
32     content: member.toString(),
33     embeds: [
34     new MessageEmbed({
35     author: {
36     iconURL: member.displayAvatarURL(),
37     name: member.user.tag
38     },
39     description: content,
40     footer: {
41     text: 'Welcome'
42     }
43     })
44     .setColor('#007bff')
45     .setTimestamp()
46     ]
47     };
48     }
49 rakin 226
50 rakin 201 async start(member: GuildMember, index?: number) {
51 rakin 199 if (this.client.config.props[member.guild.id].welcomer.enabled) {
52 rakin 247 const { channel: channelID } = this.client.config.props[member.guild.id].welcomer;
53    
54 rakin 199 try {
55     const channel = (await member.guild.channels.fetch(channelID)) as TextChannel;
56 rakin 247 const options = this.generateEmbed(member, index);
57 rakin 199
58 rakin 247 if (!options) {
59     return;
60     }
61    
62 rakin 199 if (channel) {
63 rakin 247 await channel.send(options);
64 rakin 199 }
65     }
66     catch (e) {
67     console.log(e);
68     }
69     }
70     }
71    
72 rakin 201 generateMessage(index?: number) {
73     return this.messages[index ?? Math.floor(this.messages.length * Math.random())];
74 rakin 199 }
75     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26