Skip to content

Commit 1b23215

Browse files
committed
Invite tracker bot
1 parent a282c3b commit 1b23215

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

invite-tracker-bot/package.json

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "invite-tracker-bot",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "echo \"Error: no test specified\" && exit 1"
8+
},
9+
"keywords": [],
10+
"author": "",
11+
"license": "ISC",
12+
"dependencies": {
13+
"discord.js": "^12.0.2",
14+
"dotenv": "^8.2.0"
15+
}
16+
}

invite-tracker-bot/src/bot.js

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
require('dotenv').config();
2+
const { Client, MessageEmbed } = require('discord.js');
3+
const client = new Client();
4+
client.login(process.env.BOT_TOKEN);
5+
const guildInvites = new Map();
6+
7+
client.on('inviteCreate', async invite => guildInvites.set(invite.guild.id, await invite.guild.fetchInvites()));
8+
client.on('ready', () => {
9+
console.log(`${client.user.tag} has logged in.`);
10+
client.guilds.cache.forEach(guild => {
11+
guild.fetchInvites()
12+
.then(invites => guildInvites.set(guild.id, invites))
13+
.catch(err => console.log(err));
14+
});
15+
});
16+
17+
client.on('guildMemberAdd', async member => {
18+
const cachedInvites = guildInvites.get(member.guild.id);
19+
const newInvites = await member.guild.fetchInvites();
20+
guildInvites.set(member.guild.id, newInvites);
21+
try {
22+
const usedInvite = newInvites.find(inv => cachedInvites.get(inv.code).uses < inv.uses);
23+
const embed = new MessageEmbed()
24+
.setDescription(`${member.user.tag} is the ${member.guild.memberCount} to join.\nJoined using ${usedInvite.inviter.tag}\nNumber of uses: ${usedInvite.uses}`)
25+
.setTimestamp()
26+
.setTitle(`${usedInvite.url}`);
27+
const welcomeChannel = member.guild.channels.cache.find(channel => channel.id === '640340055201939456');
28+
if(welcomeChannel) {
29+
welcomeChannel.send(embed).catch(err => console.log(err));
30+
}
31+
}
32+
catch(err) {
33+
console.log(err);
34+
}
35+
});

0 commit comments

Comments
 (0)