aboutsummaryrefslogtreecommitdiff
path: root/events/message.js
diff options
context:
space:
mode:
Diffstat (limited to 'events/message.js')
-rw-r--r--events/message.js49
1 files changed, 46 insertions, 3 deletions
diff --git a/events/message.js b/events/message.js
index facd708..b93f081 100644
--- a/events/message.js
+++ b/events/message.js
@@ -5,6 +5,7 @@ const { parse_inp } = require("../src/util")
const { channel } = require('diagnostics_channel');
const { PermissionsBitField } = require('discord.js');
const { EmbedBuilder } = require("discord.js");
+const util = require("../src/util")
let settings = require('../src/settings')
let config_loc = __filename+".json"
module.exports = {
@@ -17,13 +18,55 @@ module.exports = {
return require("./dm").main(client,Discord,message)
if(!settings["allowed-servers"].includes(message.guild.id)||message.author.bot||message.member==null)
return;
+
+ //spam messages
+ for(let i = 0; i < global.recent_messages.length; i++){
+ let diff = util.diff((new Date(message.createdTimestamp)).getUTCSeconds(),(new Date(global.recent_messages[i].createdTimestamp)).getUTCSeconds());
+
+ if(diff>2){
+ global.recent_messages.splice(i,1);
+ i = -1;
+ }
+ }
+
+ let matching_ids = [];
+ for(let i = 0; i < global.recent_messages.length; i++){
+ let m = global.recent_messages[i];
+ if((m.content==message.content||util.similarity(m.content,message.content))&&m.author==message.author){
+ matching_ids.push(m);
+ }
+ }
+ global.recent_messages.push(message)
+ if(matching_ids.length > 3){
+ //let temp_msg = global.recent_messages;
+ global.recent_messages = global.recent_messages.filter(x => x.author != message.author)
+ let could_timeout = true
+ try{
+ await message.member.timeout(60000)
+ } catch (e) {
+ could_timeout = false;
+ }
+ for(let mm of matching_ids){
+ mm.delete();
+ //try { await mm.delete(); } catch (e) {}
+ }
+
+ let embed = new EmbedBuilder()
+ .setColor(settings.defaultColor)
+ .setTitle("Spam:(")
+ .setDescription("<@"+message.author.id+"> sent "+matching_ids.length+" messages, similar to or matching \n`"+message.content+"`")
+
+ global.channels["admin-chan"].send({ embeds: [embed]})
+ }
+ //done w/ spam
+
//track message
let utrack = await db.Track.findAll({where:{user:message.author.id,track:true}})
if(utrack.length!=0){
utrack = utrack[0];
let words = JSON.parse(utrack.words);
for(let w of words){
- if(message.content.includes(w.word)) w.count+=message.content.split(w.word).length-1;
+ if(message.content.toLowerCase().includes(w.word)) w.count+=message.content.split(w.word).length-1;
}
db.Track.update({words:JSON.stringify(words)},{where:{user:message.author.id,track:true}})
}
@@ -66,7 +109,7 @@ module.exports = {
}
//done w/ auto reactions
-
+
//deal with commands
let remove = function(msg) {setTimeout(async()=>{try{await msg.delete()}catch(e){}},config["error-timeout"].value)}
let date = new Date()
@@ -109,4 +152,4 @@ module.exports = {
//done w/ commands
})
},
-} \ No newline at end of file
+}