-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
131 lines (123 loc) · 4.82 KB
/
Copy pathindex.js
File metadata and controls
131 lines (123 loc) · 4.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
require("dotenv")
const Discord = require("discord.js")
const client = new Discord.Client()
const Data = new Discord.Collection();
const db = require("quick.db")
const keepAlive = require('./server.js')
keepAlive()
const invites = {};
const wait = require('util').promisify(setTimeout);
client.on('ready', async () => {
console.clear()
console.log(`${client.user.tag} is online`)
await wait(1000);
client.guilds.cache.forEach(g => {
g.fetchInvites().then(guildInvites => {
invites[g.id] = guildInvites;
})
});
});
const channel_logger_id = require("./config.json").channel_id
client.on("inviteCreate", (invite) => {
client.guilds.cache.forEach(g => {
g.fetchInvites().then(guildInvites => {
invites[g.id] = guildInvites;
})
})
});
client.on("inviteDelete", (invite) => {
client.guilds.cache.forEach(g => {
g.fetchInvites().then(guildInvites => {
invites[g.id] = guildInvites;
})
})
});
client.on('guildMemberAdd', async member => {
member.guild.fetchInvites().then(async guildInvites => {
const ei = invites[member.guild.id];
invites[member.guild.id] = guildInvites;
const invite = guildInvites.find(i => ei.get(i.code).uses < i.uses) || member.guild.vanityURLCode
const inviter = client.users.cache.get(invite.inviter.id);
if(invite == member.guild.vanityURLCode) {
description = `${member} joined with vanity code`
footer = ""
}
if (invite.inviter) {
await db.set(`${member.id}.inviter`, invite.inviter.id);
let check_data = await db.get(`${invite.inviter.id}.join`)
if (check_data == null) await db.set(`${invite.inviter.id}.join`, 0)
let check_leave = await db.get(`${invite.inviter.id}.leave`)
if (check_leave == null) await db.set(`${invite.inviter.id}.leave`, 0)
let leave = await db.get(`${invite.inviter.id}.leave`)
let join = await db.get(`${invite.inviter.id}.join`)
join+=1;
db.set(`${invite.inviter.id}.join`, join)
description = `
**${invite.inviter} Profile**
**Join count**: ${join}
**Leave count**: ${leave}
**Total invite count** ${join-leave}
`
footer = `${member.user.tag} was invited by ${invite.inviter.tag}`
}
let channel = member.guild.channels.cache.find((ch) => ch.id === channel_logger_id);
const LogEmbed = new Discord.MessageEmbed()
.setColor("RANDOM")
.setAuthor(`${member.user.tag} joined!`,member.user.displayAvatarURL({dynamic: true}))
.setDescription(description)
.setTimestamp()
.setFooter(footer)
channel.send(LogEmbed)
});
});
client.on("guildMemberRemove",async (member) => {
let inviter = await db.get(`${member.id}.inviter`)
let check_data = await db.get(`${inviter}.join`)
if (check_data == null) await db.set(`${inviter}.join`, 0)
let check_leave = await db.get(`${inviter}.leave`)
if (check_leave == null) await db.set(`${inviter}.leave`, 0)
let leave = await db.get(`${inviter}.leave`)
let join = await db.get(`${inviter}.join`)
var description, footer
if (!inviter) {
description = `${member} just left the server`
footer = `${member.user.tag} joined with vanity code`
} else {
description = `
**${member.guild.members.cache.get(inviter).user.tag} Profile**
**Join count**: ${join}
**Leave count**: ${leave}
**Total invite count** ${join-leave}
`
footer = `${member.user.tag} was invited by ${member.guild.members.cache.get(inviter).user.tag}`
}
leave+=1
await db.set(`${inviter}.leave`, leave)
let channel = member.guild.channels.cache.find((ch) => ch.id === channel_logger_id);
const LogEmbed = new Discord.MessageEmbed()
.setColor("RANDOM")
.setAuthor(`${member.user.tag} left!`,member.user.displayAvatarURL({dynamic: true}))
.setDescription(description)
.setTimestamp()
.setFooter(footer)
channel.send(LogEmbed)
})
const prefix = require("./config").PREFIX
client.on("message", async (message, args) => {
if (message.author.bot) return
let check_data = await db.get(`${message.author.id}.join`)
if (check_data == null) await db.set(`${message.author.id}.join`, 0)
let check_leave = await db.get(`${message.author.id}.leave`)
if (check_leave == null) await db.set(`${message.author.id}.leave`, 0)
let leave = await db.get(`${message.author.id}.leave`)
let join = await db.get(`${message.author.id}.join`)
if (message.content.replace(/ /g, '').toLowerCase().startsWith(prefix + "invites")) {
const Embed = new Discord.MessageEmbed()
.setColor("RANDOM")
.setAuthor(message.author.tag,message.author.displayAvatarURL({dynamic: true}))
.setDescription(`**Your invite count is**: ${join-leave}`)
.setTimestamp()
message.channel.send(Embed)
}
})
client.login(process.env.TOKEN);