forked from udin-kun/discord-welcome-bot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
welcome.js
89 lines (86 loc) · 3.67 KB
/
welcome.js
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
const config = require("./config");
const Canvas = require("canvas");
const Discord = require("discord.js");
const { registerFont, createCanvas } = require('canvas')
registerFont('./Roboto-Regular.ttf', { family: 'Roboto' })
module.exports = function (client) {
const description = {
name: "WelcomeImages",
filename: "welcome.js",
version: "4.8"
}
//log that the module is loaded
console.log(` :: ⬜️ Module: ${description.name} | Loaded version ${description.version} from ("${description.filename}")`)
//fires every time when someone joins the server
client.on("guildMemberAdd", async member => {
//If not in a guild return
if(!member.guild) return;
//create a new Canvas
const canvas = Canvas.createCanvas(1772, 633);
//make it "2D"
const ctx = canvas.getContext('2d');
//set the Background to the welcome.png
const background = await Canvas.loadImage(`./welcome.png`);
ctx.drawImage(background, 0, 0, canvas.width, canvas.height);
ctx.strokeStyle = '#f2f2f2';
ctx.strokeRect(0, 0, canvas.width, canvas.height);
//set the first text string
var textString3 = `${member.user.username}`;
//if the text is too big then smaller the text
if (textString3.length >= 14) {
ctx.font = 'bold 100px "Roboto"';
ctx.fillStyle = '#f2f2f2';
ctx.fillText(textString3, 720, canvas.height / 2 + 20);
}
//else dont do it
else {
ctx.font = 'bold 150px "Roboto"';
ctx.fillStyle = '#f2f2f2';
ctx.fillText(textString3, 720, canvas.height / 2 + 20);
}
//define the Discriminator Tag
var textString2 = `#${member.user.discriminator}`;
ctx.font = 'bold 40px "Roboto"';
ctx.fillStyle = '#f2f2f2';
ctx.fillText(textString2, 730, canvas.height / 2 + 58);
//define the Member count
var textString4 = `Member #${member.guild.memberCount}`;
ctx.font = 'bold 60px "Roboto"';
ctx.fillStyle = '#f2f2f2';
ctx.fillText(textString4, 750, canvas.height / 2 + 125);
//get the Guild Name
var textString4 = `${member.guild.name}`;
ctx.font = 'bold 60px "Roboto"';
ctx.fillStyle = '#f2f2f2';
ctx.fillText(textString4, 700, canvas.height / 2 - 150);
//create a circular "mask"
ctx.beginPath();
ctx.arc(315, canvas.height / 2, 250, 0, Math.PI * 2, true);//position of img
ctx.closePath();
ctx.clip();
//define the user avatar
const avatar = await Canvas.loadImage(member.user.displayAvatarURL({ format: 'jpg' }));
//draw the avatar
ctx.drawImage(avatar, 65, canvas.height / 2 - 250, 500, 500);
//get it as a discord attachment
const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'welcome-image.png');
//define the welcome embed
const welcomeembed = new Discord.MessageEmbed()
.setColor("RANDOM")
.setTimestamp()
.setFooter("Welcome", member.guild.iconURL({ dynamic: true }))
.setDescription(`**Welcome to ${member.guild.name}!**
Hi <@${member.id}>!, read and accept the rules!`)
.setImage("attachment://welcome-image.png")
.attachFiles(attachment);
//define the welcome channel
const channel = member.guild.channels.cache.find(ch => ch.id === config.CHANNEL_WELCOME);
//send the welcome embed to there
channel.send(welcomeembed);
//member roles add on welcome every single role
let roles = config.ROLES_WELCOME;
for(let i = 0; i < roles.length; i++ )
member.roles.add(roles[i]);
})
}
//Coded by Navaneeth K M!