1+ /*
2+ prisma model :
3+
4+ model User {
5+ id String @id @default (cuid())
6+ userId String @unique
7+ guildId String
8+
9+ // User settings
10+ timezone String?
11+ birthday DateTime?
12+
13+ // User stats
14+ messages Int
15+ xp Int
16+
17+ createdAt DateTime @default (now())
18+ updatedAt DateTime @updatedAt
19+ }
20+
21+ // Usado para guardar a data de entrada e saída de um usuário
22+ model Movement {
23+ id String @id @default (cuid())
24+ userId String
25+ guildId String
26+ type String // join | leave
27+ createdAt DateTime @default(now())
28+ }
29+
30+ Base exemplo:
31+
32+ const { PrismaClient } = require('@prisma/client');
33+ const prisma = new PrismaClient();
34+
35+ async function setupGuild(guild) {
36+ try {
37+ console.log(`Setting up guild ${guild.name}`);
38+ await prisma.guild.upsert({
39+ where: {
40+ guildId: guild.id,
41+ },
42+ update: {}, // Atualiza se existir
43+ create: {
44+ guildId: guild.id, // Cria se não existir
45+ },
46+ });
47+ console.log("Guild configurada com sucesso!");
48+ } catch (error) {
49+ console.error('Erro durante a configuração da guild:', error);
50+ } finally {
51+ await prisma.$disconnect(); // Encerra a conexão
52+ }
53+ }
54+
55+ */
56+
57+ const { PrismaClient } = require ( '@prisma/client' ) ;
58+ const prisma = new PrismaClient ( ) ;
59+
60+ async function addMovement ( member , type ) {
61+ try {
62+ await prisma . movement . create ( {
63+ data : {
64+ userId : member . id ,
65+ guildId : member . guild . id ,
66+ type : type ,
67+ } ,
68+ } ) ;
69+ } catch ( error ) {
70+ console . error ( 'Error adding movement:' , error ) ;
71+ }
72+ }
73+
74+ async function addUser ( member ) {
75+ try {
76+ await prisma . user . upsert ( {
77+ where : {
78+ userId : member . id ,
79+ } ,
80+ update : { } ,
81+ create : {
82+ userId : member . id ,
83+ guildId : member . guild . id ,
84+ messages : 0 ,
85+ xp : 0 ,
86+ } ,
87+ } ) ;
88+ } catch ( error ) {
89+ console . error ( 'Error adding user:' , error ) ;
90+ }
91+ }
92+
93+ module . exports = {
94+ name : 'guildMemberAdd' ,
95+ once : true ,
96+ execute ( client ) {
97+
98+ client . on ( 'guildMemberAdd' , async ( member ) => {
99+ console . log ( 'guildMemberAdd event loaded!' ) ;
100+ await addMovement ( member , 'join' ) ;
101+ await addUser ( member ) ;
102+ } ) ;
103+ } ,
104+ } ;
0 commit comments