111 lines
No EOL
4.3 KiB
JavaScript
111 lines
No EOL
4.3 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const { client, logch } = require("../index.js");
|
|
const logger = require("./logger.js");
|
|
|
|
const botconfig = JSON.parse(fs.readFileSync(path.resolve(`./config/botinfo.json`)));
|
|
let memberRoleID = botconfig.memberRoleID
|
|
const badwords = JSON.parse(fs.readFileSync(path.resolve(`./config/badwords.json`)));
|
|
|
|
|
|
function checkBadwords(msg) {
|
|
badwordlist = badwords.filter(word => msg.content.toLowerCase().includes(word));
|
|
return badwordlist;
|
|
}
|
|
|
|
|
|
module.exports = {
|
|
// Check general properties of message
|
|
general: function (message) {
|
|
fs.stat(`./data/users/${message.author.id}.json`, function (err, stat) {
|
|
if (err == null) {
|
|
// Check if the message is safe for community
|
|
suspiciousWords = checkBadwords(message);
|
|
if (suspiciousWords.length > 0) {
|
|
logger.all(`${message.author.tag} a dit ${suspiciousWords.toString()} dans ${message.channel.name}`);
|
|
}
|
|
|
|
|
|
} else if (err.code === 'ENOENT') {
|
|
// If it is the first message of the member we give him member role except if his messages contains suspicious words
|
|
suspiciousWords = checkBadwords(message);
|
|
if (suspiciousWords.length > 0) {
|
|
return logger.all(`${message.author.tag} a dit ${suspiciousWords.toString()} dans ${message.channel.name}`);
|
|
}
|
|
actualtimestamp = + new Date();
|
|
usrinfo = {
|
|
id: message.author.id,
|
|
hasleft: false,
|
|
join: actualtimestamp,
|
|
left: 0
|
|
}
|
|
const jsonStringusr = JSON.stringify(usrinfo);
|
|
fs.writeFile(`./data/users/${message.author.id}.json`, jsonStringusr, err => {
|
|
if (err) {
|
|
console.log(`Error writing user profile`, err)
|
|
} else {
|
|
console.log(`Successfully wrote user profile`)
|
|
}
|
|
});
|
|
|
|
memberRole = message.guild.roles.cache.find(role => role.id == memberRoleID);
|
|
message.member.roles.add(memberRole);
|
|
|
|
|
|
} else {
|
|
console.log('Error: ', err.code);
|
|
}
|
|
});
|
|
},
|
|
|
|
|
|
// Update profile
|
|
memberUpdate: function (member, event) {
|
|
fs.stat(`./data/users/${member.user.id}.json`, function (err, stat) {
|
|
actualtimestamp = + new Date();
|
|
if (err == null) {
|
|
oldusrinfo = JSON.parse(fs.readFileSync(path.resolve(`./data/users/${member.user.id}.json`)));
|
|
if (event == "join") {
|
|
joininfo = actualtimestamp;
|
|
leftinfo = oldusrinfo.left;
|
|
hasleftinfo = false;
|
|
memberRole = member.guild.roles.cache.find(role => role.id == memberRoleID);
|
|
member.roles.add(memberRole);
|
|
|
|
} else if (event == "left") {
|
|
leftinfo = actualtimestamp;
|
|
joininfo = oldusrinfo.join;
|
|
hasleftinfo = true;
|
|
}
|
|
usrinfo = {
|
|
id: member.user.id,
|
|
hasleft: hasleftinfo,
|
|
join: joininfo,
|
|
left: leftinfo,
|
|
}
|
|
const jsonStringusr = JSON.stringify(usrinfo);
|
|
fs.writeFile(`./data/users/${member.user.id}.json`, jsonStringusr, err => {
|
|
if (err) {
|
|
console.log(`Error writing user profile`, err)
|
|
} else {
|
|
console.log(`Successfully wrote user profile`)
|
|
}
|
|
});
|
|
|
|
|
|
} else if (err.code === 'ENOENT') {
|
|
|
|
if (event == "join") {
|
|
logger.all("Il doit donc se présenter dans le channel 👋-présentation");
|
|
} else if (event == "left") {
|
|
leftinfo = actualtimestamp;
|
|
joininfo = 0;
|
|
hasleftinfo = true;
|
|
logger.all("Mais il n'avait jamais parlé sur le serveur");
|
|
}
|
|
} else {
|
|
console.log('Error: ', err.code);
|
|
}
|
|
});
|
|
}
|
|
} |