Browse Source

added edidt function(more on readme)

Leone25 5 năm trước cách đây
mục cha
commit
2d095d5c12
2 tập tin đã thay đổi với 443 bổ sung308 xóa
  1. 147 12
      index.js
  2. 296 296
      package-lock.json

+ 147 - 12
index.js

@@ -10,7 +10,7 @@ client.on('ready', () => {
 		client.user.setPresence({ status: 'online', game: { name: config.playing } });
 	}
 	console.log(`Logged in as ${client.user.tag}!`);
-	console.log(`To send missing messages run ${config.prefix}dump`);	
+	console.log(`To send missing messages run ${config.prefix}dump [quntity(default and limited to 99)]`);	
 });
 
 client.on('message', message => {
@@ -28,12 +28,20 @@ client.on('message', message => {
 	if (message.content.startsWith(`${config.prefix}dump`)) {
 		console.log('Warning, dump in progress! May cause slowdows.');
 		
+		number = message.content.slice(6);
+		
+		if (number=='') number = 99;
+		
+		console.log(number);
+		
 		message.delete(2);
 		
+		
+		
 		var channel = message.channel;
 		
 		async function run() {
-			var fetched = await channel.fetchMessages({limit: 99});
+			var fetched = await channel.fetchMessages({limit: number});
 			//console.log(fetched);
 			
 			var connection = mysql.createConnection({
@@ -43,27 +51,40 @@ client.on('message', message => {
 				database : serverData.db
 			});
 			
-			var sql = 'SELECT * FROM `messages`';
+			var sql = 'SELECT * FROM `'+serverData.dbTable+'`';
 			connection.connect();
-
+			
 			connection.query(sql, function (error, results, fields) {
 				if (error) throw error;
 				console.log('Data recived from db. Result: ', results);
 				var messages = [];
 				fetched.forEach(messageNow => {
 					
-					var found = null;
+					var found = false;
+					var edited = false;
 					
 					results.forEach(function (msg){
-						if (messageNow.id == msg.Id || messageNow.id == message.id) {
-							found = 'yep';
+						if (messageNow.id == msg.id || messageNow.id == message.id ) {
+							found = true;
+							//console.log('new');
+						}
+						
+						//console.log('message:' + ((messageNow.editedTimestamp == null) ? "" : messageNow.editedTimestamp) + ' db: ' + JSON.stringify(msg));
+						
+						if (found != null && ((messageNow.editedTimestamp == null) ? "" : messageNow.editedTimestamp) != msg.timeEdit) {
+							edited = true;
+							//console.log('oh nvm edited');
 						}
 					});
 					
-					if (found==null) {
-						messages.push(messageNow);
+					if (found==true && edited==true) {
+						messages.push({"message":messageNow, "action":1});
+					} else if (found==false) {
+						messages.push({"message":messageNow, "action":0});
 					}
+					
 				});
+				//console.log(messages);
 				sendLoop(messages, serverData, 1000);
 			});
 
@@ -77,6 +98,48 @@ client.on('message', message => {
 
 });
 
+client.on('messageUpdate', (messageOld, messageNew) => {
+	
+	if (messageNew.author.bot==true) return;
+	
+	var serverData = undefined;
+
+	config.servers.forEach(function(server) {
+		if (messageNew.channel.id==server.channel) serverData = server;
+	});
+
+	if (serverData==undefined) return;
+	
+	var channel = messageNew.channel;
+		
+	var connection = mysql.createConnection({
+		host     : serverData.dbHost,
+		user     : serverData.dbUser,
+		password : serverData.dbPassword,
+		database : serverData.db
+	});
+	
+	var sql = 'SELECT * FROM `'+serverData.dbTable+'`';
+	
+	connection.connect();
+
+	connection.query(sql, function (error, results, fields) {
+		if (error) throw error;
+		//console.log('Data recived from db. Result: ', results);
+		var messages = [];
+		results.forEach(messageNow => {
+			if (messageNow.id == messageNew.id) {
+				messages.push({"message":messageNew, "action":1});
+			}
+		});
+		sendLoop(messages, serverData, 1000);
+	});
+
+	connection.end();
+	
+});
+
+
 client.login(config.token);
 
 function sendLoop(messages, serverData, delay) {
@@ -84,8 +147,11 @@ function sendLoop(messages, serverData, delay) {
 	if (messages.length == 0) {
 		return;
 	}
-	
-	sendToDB(messages[0], serverData);
+	if (messages[0].action == 0) {
+		sendToDB(messages[0].message, serverData);
+	} else if (messages[0].action == 1) {
+		updateDB(messages[0].message, serverData);
+	}
 	
 	messages.shift();
 	
@@ -93,6 +159,75 @@ function sendLoop(messages, serverData, delay) {
 	
 }
 
+function updateDB(message, serverData) {
+	
+	var connection = mysql.createConnection({
+		host     : serverData.dbHost,
+		user     : serverData.dbUser,
+		password : serverData.dbPassword,
+		database : serverData.db
+	});
+	
+	var l = [];
+
+	var msgCopy = message.content;
+	
+	
+
+	msgCopy.replace(urlRegex, function(url) {
+        l.push(url);
+    });
+
+	var i = [];
+
+	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});
+	});
+	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: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;
+	connection.connect();
+
+	connection.query(sql, post, function (error, results, fields) {
+		if (error) throw error;
+		console.log('Data updated in db. Result: ', results);
+	});
+
+	connection.end();
+}
+
+
 function sendToDB(message, serverData) {
 	
 	var connection = mysql.createConnection({
@@ -147,7 +282,7 @@ function sendToDB(message, serverData) {
 		var author = message.author.tag;
 	}
 
-	var post = {message:messageContent, id:message.id, time:message.createdTimestamp, user:author, links:JSON.stringify(l), images:JSON.stringify(i)};
+	var post = {message:messageContent, id:message.id, time:message.createdTimestamp, timeEdit:((message.editedTimestamp == null) ? "" : message.editedTimestamp), user:author, links:JSON.stringify(l), images:JSON.stringify(i)};
 	var sql = 'INSERT INTO '+serverData.dbTable+' SET ?';
 	connection.connect();
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 296 - 296
package-lock.json


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác