فهرست منبع

Added new features

Leone25 5 سال پیش
والد
کامیت
d2904a9157
1فایلهای تغییر یافته به همراه79 افزوده شده و 83 حذف شده
  1. 79 83
      index.js

+ 79 - 83
index.js

@@ -26,9 +26,17 @@ client.on('message', message => {
 
 	if (serverData==undefined) return;
 	
-	console.log(message.content);
+	console.log(message.mentions.roles);
 	
-	if (message.content.startsWith(`${config.prefix}dump`)) {
+	if (message.content.startsWith(`${serverData.prefix||config.prefix}ping`)) {
+		message.channel.send('Pong! :ping_pong:');
+		return;
+	} else if (message.content.startsWith(`${serverData.prefix||config.prefix}dump`) && serverData.allowDump == true) {
+		
+		if (serverData.allowDump == true) {
+			return;
+		}
+		
 		console.log(getTimestamp(), 'Warning, dump in progress! May cause slowdows.');
 		
 		number = message.content.slice(6);
@@ -39,8 +47,6 @@ client.on('message', message => {
 		
 		message.delete(2);
 		
-		
-		
 		var channel = message.channel;
 		
 		async function run() {
@@ -207,67 +213,40 @@ function updateDB(message, serverData) {
 		database : serverData.db
 	});
 	
-	var l = [];
-
-	var msgCopy = message.content;
-	
-	
-
-	msgCopy.replace(urlRegex, function(url) {
-        l.push(url);
-    });
-
-	var i = [];
+	var post = prepareMessage(message, serverData);
+	var sql = 'UPDATE '+serverData.dbTable+' SET ? WHERE id='+message.id;
+	connection.connect();
 
-	message.attachments.forEach(attachment => {
-		i.push(attachment.url);
+	connection.query(sql, post, function (error, results, fields) {
+		if (error) throw error;
+		console.log(getTimestamp(), 'Data updated in db. Result: ', results);
 	});
 
-	
+	connection.end();
+}
 
-	var mentions = [];
-	message.mentions.users.forEach(user => {
-		mentions.push({"userId": user.id, "username": user.username, "discriminator": user.discriminator});
+function sendToDB(message, serverData) {
+	
+	var connection = mysql.createConnection({
+		host     : serverData.dbHost,
+		user     : serverData.dbUser,
+		password : serverData.dbPassword,
+		database : serverData.db
 	});
-	var messageContent = message.content;
-	for (mention of mentions) {
-		if(messageContent.includes(mention.userId)) {
-			if (serverData.mentionsMode == 0) {
-				messageContent = messageContent.replace(new RegExp("<@"+mention.userId+">", 'g'), "@"+mention.userId);
-				messageContent = messageContent.replace(new RegExp("<@!"+mention.userId+">", 'g'), "@"+mention.userId);
-			} else if (serverData.mentionsMode == 1) {
-				messageContent = messageContent.replace(new RegExp("<@"+mention.userId+">", 'g'), "@"+mention.username);
-				messageContent = messageContent.replace(new RegExp("<@!"+mention.userId+">", 'g'), "@"+mention.username);
-			} else {
-				messageContent = messageContent.replace(new RegExp("<@"+mention.userId+">", 'g'), "@"+mention.username+"#"+mention.discriminator);
-				messageContent = messageContent.replace(new RegExp("<@!"+mention.userId+">", 'g'), "@"+mention.username+"#"+mention.discriminator);
-			}
-			
-		}
-	}
 
-	if (serverData.authorMode == 0) {
-		var author = message.author.id;
-	} else if (serverData.authorMode == 1) {
-		var author = message.author.username;
-	} else {
-		var author = message.author.tag;
-	}
-
-	var post = {message:emoji.unemojify(messageContent), id:message.id, time:message.createdTimestamp, timeEdit:(message.editedTimestamp || ""), user:author, links:JSON.stringify(l), images:JSON.stringify(i)};
-	var sql = 'UPDATE '+serverData.dbTable+' SET ? WHERE id='+message.id;
+	var post = prepareMessage(message, serverData);
+	var sql = 'INSERT INTO '+serverData.dbTable+' SET ?';
 	connection.connect();
 
 	connection.query(sql, post, function (error, results, fields) {
 		if (error) throw error;
-		console.log(getTimestamp(), 'Data updated in db. Result: ', results);
+		console.log(getTimestamp(), 'Data sent to db. Result: ', results);
 	});
 
 	connection.end();
 }
 
-function sendToDB(message, serverData) {
-	
+function deleteFromDB(message, serverData) {
 	var connection = mysql.createConnection({
 		host     : serverData.dbHost,
 		user     : serverData.dbUser,
@@ -275,6 +254,18 @@ function sendToDB(message, serverData) {
 		database : serverData.db
 	});
 	
+	var sql = 'DELETE FROM '+serverData.dbTable+' WHERE id='+message.id;
+	connection.connect();
+
+	connection.query(sql, function (error, results, fields) {
+		if (error) throw error;
+		console.log(getTimestamp(), 'Data deleted in db. Result: ', results);
+	});
+
+	connection.end();
+}
+
+function prepareMessage(message, serverData) {
 	var l = [];
 
 	var msgCopy = message.content;
@@ -288,9 +279,7 @@ function sendToDB(message, serverData) {
 	message.attachments.forEach(attachment => {
 		i.push(attachment.url);
 	});
-
 	
-
 	var mentions = [];
 	message.mentions.users.forEach(user => {
 		mentions.push({"userId": user.id, "username": user.username, "discriminator": user.discriminator});
@@ -298,10 +287,10 @@ function sendToDB(message, serverData) {
 	var messageContent = message.content;
 	for (mention of mentions) {
 		if(messageContent.includes(mention.userId)) {
-			if (serverData.mentionsMode == 0) {
+			if (serverData.userMentionsMode == 0) {
 				messageContent = messageContent.replace(new RegExp("<@"+mention.userId+">", 'g'), "@"+mention.userId);
 				messageContent = messageContent.replace(new RegExp("<@!"+mention.userId+">", 'g'), "@"+mention.userId);
-			} else if (serverData.mentionsMode == 1) {
+			} else if (serverData.userMentionsMode == 1) {
 				messageContent = messageContent.replace(new RegExp("<@"+mention.userId+">", 'g'), "@"+mention.username);
 				messageContent = messageContent.replace(new RegExp("<@!"+mention.userId+">", 'g'), "@"+mention.username);
 			} else {
@@ -311,6 +300,41 @@ function sendToDB(message, serverData) {
 			
 		}
 	}
+	
+	var mentions = [];
+	message.mentions.channels.forEach(channel => {
+		mentions.push({"channelId": channel.id, "name": channel.name});
+	});
+	for (mention of mentions) {
+		if(messageContent.includes(mention.channelId)) {
+			if (serverData.channelMentionsMode == 0) {
+				messageContent = messageContent.replace(new RegExp("<#"+mention.channelId+">", 'g'), "#"+mention.channelId);
+				messageContent = messageContent.replace(new RegExp("<#!"+mention.channelId+">", 'g'), "#"+mention.channelId);
+			} else {
+				messageContent = messageContent.replace(new RegExp("<#"+mention.channelId+">", 'g'), "#"+mention.name);
+				messageContent = messageContent.replace(new RegExp("<#!"+mention.channelId+">", 'g'), "#"+mention.name);
+			}
+		}
+	}
+	
+	var mentions = [];
+	message.mentions.roles.forEach(role => {
+		mentions.push({"roleId": role.id, "name": role.name, "color": role.color.toString(16)});
+	});
+	for (mention of mentions) {
+		if(messageContent.includes(mention.roleId)) {
+			if (serverData.roleMentionsMode == 0) {
+				messageContent = messageContent.replace(new RegExp("<@&"+mention.roleId+">", 'g'), "&"+mention.roleId);
+				messageContent = messageContent.replace(new RegExp("<@&!"+mention.roleId+">", 'g'), "&"+mention.roleId);
+			} else if (serverData.roleMentionsMode == 1) {
+				messageContent = messageContent.replace(new RegExp("<@&"+mention.roleId+">", 'g'), "&"+mention.name);
+				messageContent = messageContent.replace(new RegExp("<@&!"+mention.roleId+">", 'g'), "&"+mention.name);
+			} else {
+				messageContent = messageContent.replace(new RegExp("<@&"+mention.roleId+">", 'g'), "&"+mention.name+"#"+mention.color);
+				messageContent = messageContent.replace(new RegExp("<@&!"+mention.roleId+">", 'g'), "&"+mention.name+"#"+mention.color);
+			}
+		}
+	}
 
 	if (serverData.authorMode == 0) {
 		var author = message.author.id;
@@ -319,36 +343,8 @@ function sendToDB(message, serverData) {
 	} else {
 		var author = message.author.tag;
 	}
-
-	var post = {message:emoji.unemojify(messageContent), id:message.id, time:message.createdTimestamp, timeEdit:(message.editedTimestamp || ""), user:author, links:JSON.stringify(l), images:JSON.stringify(i)};
-	var sql = 'INSERT INTO '+serverData.dbTable+' SET ?';
-	connection.connect();
-
-	connection.query(sql, post, function (error, results, fields) {
-		if (error) throw error;
-		console.log(getTimestamp(), 'Data sent to db. Result: ', results);
-	});
-
-	connection.end();
-}
-
-function deleteFromDB(message, serverData) {
-	var connection = mysql.createConnection({
-		host     : serverData.dbHost,
-		user     : serverData.dbUser,
-		password : serverData.dbPassword,
-		database : serverData.db
-	});
 	
-	var sql = 'DELETE FROM '+serverData.dbTable+' WHERE id='+message.id;
-	connection.connect();
-
-	connection.query(sql, function (error, results, fields) {
-		if (error) throw error;
-		console.log(getTimestamp(), 'Data deleted in db. Result: ', results);
-	});
-
-	connection.end();
+	return {message:emoji.unemojify(messageContent), id:message.id, time:message.createdTimestamp, timeEdit:(message.editedTimestamp || ""), user:author, links:JSON.stringify(l), images:JSON.stringify(i)};
 }
 
 function getTimestamp() {