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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 340 - (hide annotations)
Mon Jul 29 17:29:38 2024 UTC (8 months, 1 week ago) by rakin
File MIME type: application/typescript
File size: 2981 byte(s)
refactor(verification): use mongodb
1 rakin 127 import { GuildMember } from "discord.js";
2 rakin 130 import { Request } from "express";
3 rakin 127 import { Op } from "sequelize";
4     import DiscordClient from "../client/Client";
5     import MessageEmbed from "../client/MessageEmbed";
6 rakin 226 import Service from "../utils/structures/Service";
7 rakin 127
8 rakin 226 export default class Verification extends Service {
9 rakin 130 async success(member: GuildMember, req: Request) {
10 rakin 127 await member.roles.remove(this.client.config.props[member.guild.id].verification.role);
11    
12 rakin 158 try {
13     await member.send({
14     embeds: [
15     new MessageEmbed({
16     author: {
17     name: member.guild.name,
18     iconURL: member.guild.iconURL() ?? undefined,
19     },
20     title: "Thanks for verifying!",
21     description: "The verification was completed successfully!",
22     timestamp: new Date()
23     })
24     ],
25     });
26     }
27     catch (e) {
28     console.log(e);
29     }
30 rakin 127
31     const { default: UnverifiedMember } = await import('../models/UnverifiedMember');
32    
33     const data = await UnverifiedMember.findOne({
34 rakin 340 guild_id: member.guild.id,
35     user_id: member.id,
36     status: 'pending'
37 rakin 127 });
38    
39     await data?.set('status', 'done');
40 rakin 130 await data?.set('ip', req.ip);
41     await data?.set('user_agent', req.get('User-Agent'));
42 rakin 127 await data?.save();
43     }
44    
45     async start(member: GuildMember) {
46     const { default: UnverifiedMember } = await import('../models/UnverifiedMember');
47    
48     await UnverifiedMember.create({
49     guild_id: member.guild.id,
50     user_id: member.id,
51 rakin 340 status: 'pending',
52     createdAt: new Date()
53 rakin 127 });
54    
55     await member.roles.add(this.client.config.props[member.guild.id].verification.role);
56    
57     const url = `${this.client.config.props.global.cp_host}/challenge/v1/verify/?guild_id=${member.guild.id}`;
58    
59 rakin 158 try {
60     await member.send({
61     embeds: [
62     new MessageEmbed({
63     author: {
64     name: member.guild.name,
65     iconURL: member.guild.iconURL() ?? undefined,
66     },
67     title: "Verification Required!",
68     description: `Hey ${member.nickname ?? member.user.username}, the server **${member.guild.name}** requires verification!\nTo verify yourself, simply go to the verification URL given below and you might be asked to solve some captcha.\n\nHave a nice day,\n*${member.guild.name} Staff*`,
69     timestamp: new Date(),
70     fields: [
71     {
72     name: "Verification URL",
73     value: url
74     }
75     ],
76     url
77     })
78     ]
79     });
80     }
81     catch (e) {
82     console.log(e);
83     }
84 rakin 127 }
85 rakin 158 }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26