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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 201 by rakin, Mon Jul 29 17:29:00 2024 UTC revision 308 by rakin, Mon Jul 29 17:29:28 2024 UTC
# Line 2  import { GuildMember, MessageEmbed, Text Line 2  import { GuildMember, MessageEmbed, Text
2  import DiscordClient from "../client/Client";  import DiscordClient from "../client/Client";
3  import fs from 'fs';  import fs from 'fs';
4  import path from "path";  import path from "path";
5    import Service from "../utils/structures/Service";
6    
7  export default class Welcomer {  export default class Welcomer extends Service {
8      messages: string[] = JSON.parse(fs.readFileSync(path.resolve(__dirname, '..', '..', 'resources', 'welcome_messages.json')).toString());      messages: string[] = JSON.parse(fs.readFileSync(path.resolve(__dirname, '..', '..', 'resources', 'welcome_messages.json')).toString());
9    
10      constructor(protected client: DiscordClient) {      generateEmbed(member: GuildMember, index?: number) {
11            const { message, randomize } = this.client.config.props[member.guild.id].welcomer;
12            let content: string = message ?? '';
13    
14            if (randomize) {
15                content = this.generateMessage(index) + (message ? "\n" + content : '');
16            }
17    
18            if (content.trim() === '') {
19                return false;
20            }
21    
22            content = content
23                .replace(/:name:/g, member.displayName)
24                .replace(/:tag:/g, member.user.tag)
25                .replace(/:username:/g, member.user.username)
26                .replace(/:discrim:/g, member.user.discriminator)
27                .replace(/:avatar:/g, member.displayAvatarURL())
28                .replace(/:date:/g, `<t:${member.joinedAt?.getTime()}>`)
29                .replace(/:guild:/g, member.guild.name)
30                .replace(/:mention:/g, member.toString());
31    
32            return {
33                content: member.toString(),
34                embeds: [
35                    new MessageEmbed({
36                        author: {
37                            iconURL: member.displayAvatarURL(),
38                            name: member.user.tag
39                        },
40                        description: content,
41                        footer: {
42                            text: 'Welcome'
43                        }
44                    })
45                    .setColor('#007bff')
46                    .setTimestamp()
47                ]
48            };
49      }      }
50        
51      async start(member: GuildMember, index?: number) {      async start(member: GuildMember, index?: number) {
52          if (this.client.config.props[member.guild.id].welcomer.enabled) {          if (this.client.config.props[member.guild.id].welcomer.enabled) {
53              const { message, channel: channelID } = this.client.config.props[member.guild.id].welcomer;              const { channel: channelID } = this.client.config.props[member.guild.id].welcomer;
54              const content = (message ?? this.generateMessage(index))              
                                     .replace(':name:', member.displayName)  
                                     .replace(':tag:', member.user.tag)  
                                     .replace(':username:', member.user.username)  
                                     .replace(':discrim:', member.user.discriminator)  
                                     .replace(':avatar:', member.displayAvatarURL())  
                                     .replace(':date:', `<t:${member.joinedAt?.getTime()}>`)  
                                     .replace(':guild:', member.guild.name)  
                                     .replace(':mention:', member.toString());  
   
55              try {              try {
56                  const channel = (await member.guild.channels.fetch(channelID)) as TextChannel;                  const channel = (await member.guild.channels.fetch(channelID)) as TextChannel;
57                    const options = this.generateEmbed(member, index);
58    
59                    if (!options) {
60                        return;
61                    }
62    
63                  if (channel) {                  if (channel) {
64                      await channel.send({                      await channel.send(options);
                         content: member.toString(),  
                         embeds: [  
                             new MessageEmbed({  
                                 author: {  
                                     iconURL: member.displayAvatarURL(),  
                                     name: member.user.tag  
                                 },  
                                 description: content,  
                                 timestamp: new Date()  
                             })  
                             .setColor('#007bff')  
                         ]  
                     });  
65                  }                  }
66              }              }
67              catch (e) {              catch (e) {

Legend:
Removed from v.201  
changed lines
  Added in v.308

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26