AJDS Core complete

This commit is contained in:
Ben
2020-08-03 00:25:52 +01:00
parent b0382ddfde
commit 7ba67a9a7d
3 changed files with 92 additions and 1337 deletions

View File

@@ -1,13 +1,15 @@
const WordsList = require('./ajds-wordslist.js').BlackList;
const OffensiveWordsList = require('./ajds-wordslist.js').BlackList;
module.exports.ScoreMember = async function(erismember)
{
// warnings are an object
// Higher score = higher trust factor
// Warnings are an object
// of at risk features of
// the member, ie
// {
// warning: "",
// severity: int // 0 low, 1 warn, 2 high, 3 action needed
// severity: int // 0 low, 1 warn, 2 high, 3 action needed / severe
// }
let ret = {
score: 0,
@@ -15,13 +17,70 @@ module.exports.ScoreMember = async function(erismember)
warnings: []
}
// Bot clients automatically trusted due to admin
// permission needed in order to invite them
if (erismember.bot)
{
ret.score = 50;
warnins.push({warning:'member is bot', severity: 0});
ret.score = 999;
ret.warnins.push({warning:'member is bot', severity: 0});
return ret;
}
// Account age -5-10 points
// After 2 days of no increase, goes up 1 pt every 2 days of age
// prior to 2 days, deduct 5 points
let Age = new Date().getTime() - ((erismember.id >> 22 >>> 0) + 1420070400000);
// age in days
Age = Math.floor(age / 1000 / 60 / 60 / 24);
if (age < 2)
{
ret.score -= 5;
ret.warnings.push({warning: 'member account very new', severity: 2});
} else
{
let AgeScore = Math.min(Math.max(0, age / 2 - 1), 10);
if (AgeScore > 10) ret.warnings.push({warning: 'member account new', severity: 1});
ret.score += AgeScore;
}
// Reward non-basic avatar
if (erismember.avatar == null)
ret.warnings.push({warning: 'member has basic avatar', severity: 1});
else
ret.score += 4;
// TODO: proper non-basic colour distance alg
// Penalize 4 letter usernames
if (erismember.username.length == 4) ret.score -= 1;
// Username profanity check
// Inoffensive is +6 while offensive is -5 and severe warning
let OffensiveWords = this.NickCheck(erismember.username);
if (OffensiveWords.length == 0 || OffensiveWords == undefined)
{
ret.score += 6;
} else
{
for (OffensiveWord of OffensiveWords)
{
ret.warnings.push({warning: `members name contains offensive word: ${OffensiveWord}`, severity: 3});
}
ret.score -= 5;
}
}
module.exports.NickCheck = function(name)
{
// returns an array of every offensive word
// included in the name provided
let ret = [];
name = name.toLowerCase();
for (OffensiveWord of OffensiveWordsList)
if (name.includes(OffensiveWord)) ret.push(OffensiveWord);
return ret;
}

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,8 @@ const Logger = require('./logger.js');
const Database = require('./database.js');
const Discord = require('./discord.js');
const AJDS = require('./ajds-core.js')
require('dotenv').config()
module.exports.main = async function()