2053 lines
110 KiB
JavaScript
2053 lines
110 KiB
JavaScript
/*
|
|
* Copyright (C) 2016-2020 phantombot.github.io/PhantomBot
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
(function() {
|
|
var permitList = [],
|
|
timeouts = [],
|
|
whiteList = [],
|
|
blackList = [],
|
|
spamTracker = {},
|
|
|
|
linksToggle = $.getSetIniDbBoolean('chatModerator', 'linksToggle', false),
|
|
linksMessage = $.getSetIniDbString('chatModerator', 'linksMessage', 'you were timed out for linking.'),
|
|
linkPermitTime = $.getSetIniDbNumber('chatModerator', 'linkPermitTime', 30),
|
|
|
|
capsToggle = $.getSetIniDbBoolean('chatModerator', 'capsToggle', false),
|
|
capsMessage = $.getSetIniDbString('chatModerator', 'capsMessage', 'you were timed out for overusing caps.'),
|
|
capsLimitPercent = $.getSetIniDbFloat('chatModerator', 'capsLimitPercent', 70),
|
|
capsTriggerLength = $.getSetIniDbNumber('chatModerator', 'capsTriggerLength', 20),
|
|
|
|
spamToggle = $.getSetIniDbBoolean('chatModerator', 'spamToggle', false),
|
|
spamMessage = $.getSetIniDbString('chatModerator', 'spamMessage', 'you were timed out for spamming repeating characters.'),
|
|
spamLimit = $.getSetIniDbNumber('chatModerator', 'spamLimit', 15),
|
|
|
|
symbolsToggle = $.getSetIniDbBoolean('chatModerator', 'symbolsToggle', false),
|
|
symbolsMessage = $.getSetIniDbString('chatModerator', 'symbolsMessage', 'you were timed out for overusing symbols.'),
|
|
symbolsLimitPercent = $.getSetIniDbFloat('chatModerator', 'symbolsLimitPercent', 50),
|
|
symbolsGroupLimit = $.getSetIniDbFloat('chatModerator', 'symbolsGroupLimit', 10),
|
|
symbolsTriggerLength = $.getSetIniDbNumber('chatModerator', 'symbolsTriggerLength', 20),
|
|
|
|
emotesToggle = $.getSetIniDbBoolean('chatModerator', 'emotesToggle', false),
|
|
emotesMessage = $.getSetIniDbString('chatModerator', 'emotesMessage', 'you were timed out for overusing emotes.'),
|
|
emotesLimit = $.getSetIniDbNumber('chatModerator', 'emotesLimit', 5),
|
|
|
|
longMessageToggle = $.getSetIniDbBoolean('chatModerator', 'longMessageToggle', false),
|
|
longMessageMessage = $.getSetIniDbString('chatModerator', 'longMessageMessage', 'you were timed out for posting a long message.'),
|
|
longMessageLimit = $.getSetIniDbNumber('chatModerator', 'longMessageLimit', 325),
|
|
|
|
colorsToggle = $.getSetIniDbBoolean('chatModerator', 'colorsToggle', false),
|
|
colorsMessage = $.getSetIniDbString('chatModerator', 'colorsMessage', 'you were timed out for using colored text.'),
|
|
|
|
spamTrackerToggle = $.getSetIniDbBoolean('chatModerator', 'spamTrackerToggle', false),
|
|
spamTrackerMessage = $.getSetIniDbString('chatModerator', 'spamTrackerMessage', 'you were timed out for spamming chat.'),
|
|
spamTrackerTime = $.getSetIniDbNumber('chatModerator', 'spamTrackerTime', 30),
|
|
spamTrackerLimit = $.getSetIniDbNumber('chatModerator', 'spamTrackerLimit', 30),
|
|
|
|
blacklistTimeoutTime = $.getSetIniDbNumber('chatModerator', 'blacklistTimeoutTime', 600),
|
|
blacklistMessage = $.getSetIniDbString('chatModerator', 'blacklistMessage', 'you were timed out for using a blacklisted phrase.'),
|
|
blacklistMessageBan = $.getSetIniDbString('chatModerator', 'blacklistMessageBan', 'you were banned for using a blacklisted phrase.'),
|
|
|
|
fakePurgeToggle = $.getSetIniDbBoolean('chatModerator', 'fakePurgeToggle', false),
|
|
fakePurgeMessage = $.getSetIniDbString('chatModerator', 'fakePurgeMessage', 'you were timed out for a fake purge.'),
|
|
|
|
subscribers = {
|
|
Links: $.getSetIniDbBoolean('chatModerator', 'subscribersModerateLinks', true),
|
|
Caps: $.getSetIniDbBoolean('chatModerator', 'subscribersModerateCaps', true),
|
|
Symbols: $.getSetIniDbBoolean('chatModerator', 'subscribersModerateSymbols', true),
|
|
Spam: $.getSetIniDbBoolean('chatModerator', 'subscribersModerateSpam', true),
|
|
Emotes: $.getSetIniDbBoolean('chatModerator', 'subscribersModerateEmotes', true),
|
|
Colors: $.getSetIniDbBoolean('chatModerator', 'subscribersModerateColors', true),
|
|
LongMsg: $.getSetIniDbBoolean('chatModerator', 'subscribersModerateLongMsg', true),
|
|
SpamTracker: $.getSetIniDbBoolean('chatModerator', 'subscribersModerateSpamTracker', true),
|
|
FakePurge: $.getSetIniDbBoolean('chatModerator', 'subscribersModerateFakePurge', true),
|
|
},
|
|
|
|
regulars = {
|
|
Links: $.getSetIniDbBoolean('chatModerator', 'regularsModerateLinks', true),
|
|
Caps: $.getSetIniDbBoolean('chatModerator', 'regularsModerateCaps', true),
|
|
Symbols: $.getSetIniDbBoolean('chatModerator', 'regularsModerateSymbols', true),
|
|
Spam: $.getSetIniDbBoolean('chatModerator', 'regularsModerateSpam', true),
|
|
Emotes: $.getSetIniDbBoolean('chatModerator', 'regularsModerateEmotes', true),
|
|
Colors: $.getSetIniDbBoolean('chatModerator', 'regularsModerateColors', true),
|
|
LongMsg: $.getSetIniDbBoolean('chatModerator', 'regularsModerateLongMsg', true),
|
|
SpamTracker: $.getSetIniDbBoolean('chatModerator', 'regularsModerateSpamTracker', true),
|
|
FakePurge: $.getSetIniDbBoolean('chatModerator', 'regularsModerateFakePurge', true),
|
|
},
|
|
|
|
silentTimeout = {
|
|
Links: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutLinks', false),
|
|
Caps: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutCaps', false),
|
|
Symbols: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutSymbols', false),
|
|
Spam: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutSpam', false),
|
|
Emotes: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutEmotes', false),
|
|
Colors: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutColors', false),
|
|
LongMsg: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutLongMsg', false),
|
|
Blacklist: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutBlacklist', false),
|
|
SpamTracker: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutSpamTracker', false),
|
|
FakePurge: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutFakePurge', false),
|
|
LinkMessage: $.getSetIniDbString('chatModerator', 'silentLinkMessage', 'Posting links without permission. (Automated by ' + $.botName + ')'),
|
|
SpamMessage: $.getSetIniDbString('chatModerator', 'silentSpamMessage', 'Excessive use of repeating characters. (Automated by ' + $.botName + ')'),
|
|
CapMessage: $.getSetIniDbString('chatModerator', 'silentCapMessage', 'Excessive use of caps. (Automated by ' + $.botName + ')'),
|
|
SymbolMessage: $.getSetIniDbString('chatModerator', 'silentSymbolsMessage', 'Excessive use of symbols. (Automated by ' + $.botName + ')'),
|
|
ColorMessage: $.getSetIniDbString('chatModerator', 'silentColorMessage', 'Using colored text. (Automated by ' + $.botName + ')'),
|
|
EmoteMessage: $.getSetIniDbString('chatModerator', 'silentEmoteMessage', 'Excessive use of emotes. (Automated by ' + $.botName + ')'),
|
|
LongMessage: $.getSetIniDbString('chatModerator', 'silentLongMessage', 'Excessive message length. (Automated by ' + $.botName + ')'),
|
|
BlacklistMessage: $.getSetIniDbString('chatModerator', 'silentBlacklistMessage', 'Using a blacklisted phrase. (Automated by ' + $.botName + ')'),
|
|
SpamTrackerMessage: $.getSetIniDbString('chatModerator', 'silentSpamTrackerMessage', 'Spamming chat. (Automated by ' + $.botName + ')'),
|
|
FakePurgeMessage: $.getSetIniDbString('chatModerator', 'silentFakePurgeMessage', 'Fake purge. (Automated by ' + $.botName + ')'),
|
|
},
|
|
|
|
warningTime = {
|
|
Links: $.getSetIniDbNumber('chatModerator', 'warningTimeLinks', 5),
|
|
Caps: $.getSetIniDbNumber('chatModerator', 'warningTimeCaps', 5),
|
|
Symbols: $.getSetIniDbNumber('chatModerator', 'warningTimeSymbols', 5),
|
|
Spam: $.getSetIniDbNumber('chatModerator', 'warningTimeSpam', 5),
|
|
Emotes: $.getSetIniDbNumber('chatModerator', 'warningTimeEmotes', 5),
|
|
Colors: $.getSetIniDbNumber('chatModerator', 'warningTimeColors', 5),
|
|
LongMsg: $.getSetIniDbNumber('chatModerator', 'warningTimeLongMsg', 5),
|
|
SpamTracker: $.getSetIniDbNumber('chatModerator', 'warningTimeSpamTracker', 5),
|
|
FakePurge: $.getSetIniDbNumber('chatModerator', 'warningTimeFakePurge', 5),
|
|
},
|
|
|
|
timeoutTime = {
|
|
Links: $.getSetIniDbNumber('chatModerator', 'timeoutTimeLinks', 600),
|
|
Caps: $.getSetIniDbNumber('chatModerator', 'timeoutTimeCaps', 600),
|
|
Symbols: $.getSetIniDbNumber('chatModerator', 'timeoutTimeSymbols', 600),
|
|
Spam: $.getSetIniDbNumber('chatModerator', 'timeoutTimeSpam', 600),
|
|
Emotes: $.getSetIniDbNumber('chatModerator', 'timeoutTimeEmotes', 600),
|
|
Colors: $.getSetIniDbNumber('chatModerator', 'timeoutTimeColors', 600),
|
|
LongMsg: $.getSetIniDbNumber('chatModerator', 'timeoutTimeLongMsg', 600),
|
|
SpamTracker: $.getSetIniDbNumber('chatModerator', 'timeoutTimeSpamTracker', 600),
|
|
FakePurge: $.getSetIniDbNumber('chatModerator', 'timeoutTimeFakePurge', 600),
|
|
},
|
|
|
|
moderationLogs = $.getSetIniDbBoolean('chatModerator', 'moderationLogs', false),
|
|
msgCooldownSec = $.getSetIniDbNumber('chatModerator', 'msgCooldownSecs', 45),
|
|
warningResetTime = $.getSetIniDbNumber('chatModerator', 'warningResetTime', 60),
|
|
resetTime = (warningResetTime * 6e4),
|
|
messageTime = $.systemTime(),
|
|
warning = '',
|
|
youtubeLinks = new RegExp('(youtube.com|youtu.be)', 'i'),
|
|
i,
|
|
j,
|
|
k;
|
|
|
|
/**
|
|
* @function reloadModeration
|
|
* To be called by the panel to update the chatmod settings after updating the DB directly.
|
|
*/
|
|
function reloadModeration() {
|
|
linksToggle = $.getIniDbBoolean('chatModerator', 'linksToggle');
|
|
linksMessage = $.getIniDbString('chatModerator', 'linksMessage');
|
|
linkPermitTime = $.getIniDbNumber('chatModerator', 'linkPermitTime');
|
|
|
|
capsToggle = $.getIniDbBoolean('chatModerator', 'capsToggle');
|
|
capsMessage = $.getIniDbString('chatModerator', 'capsMessage');
|
|
capsLimitPercent = $.getIniDbFloat('chatModerator', 'capsLimitPercent');
|
|
capsTriggerLength = $.getIniDbNumber('chatModerator', 'capsTriggerLength');
|
|
|
|
spamToggle = $.getIniDbBoolean('chatModerator', 'spamToggle');
|
|
spamMessage = $.getIniDbString('chatModerator', 'spamMessage');
|
|
spamLimit = $.getIniDbNumber('chatModerator', 'spamLimit');
|
|
|
|
symbolsToggle = $.getIniDbBoolean('chatModerator', 'symbolsToggle');
|
|
symbolsMessage = $.getIniDbString('chatModerator', 'symbolsMessage');
|
|
symbolsLimitPercent = $.getIniDbFloat('chatModerator', 'symbolsLimitPercent');
|
|
symbolsGroupLimit = $.getIniDbFloat('chatModerator', 'symbolsGroupLimit');
|
|
symbolsTriggerLength = $.getIniDbNumber('chatModerator', 'symbolsTriggerLength');
|
|
|
|
emotesToggle = $.getIniDbBoolean('chatModerator', 'emotesToggle');
|
|
emotesMessage = $.getIniDbString('chatModerator', 'emotesMessage');
|
|
emotesLimit = $.getIniDbNumber('chatModerator', 'emotesLimit');
|
|
|
|
longMessageToggle = $.getIniDbBoolean('chatModerator', 'longMessageToggle');
|
|
longMessageMessage = $.getIniDbString('chatModerator', 'longMessageMessage');
|
|
longMessageLimit = $.getIniDbNumber('chatModerator', 'longMessageLimit');
|
|
|
|
colorsToggle = $.getIniDbBoolean('chatModerator', 'colorsToggle');
|
|
colorsMessage = $.getIniDbString('chatModerator', 'colorsMessage');
|
|
|
|
spamTrackerToggle = $.getIniDbBoolean('chatModerator', 'spamTrackerToggle');
|
|
spamTrackerMessage = $.getIniDbString('chatModerator', 'spamTrackerMessage');
|
|
spamTrackerTime = $.getIniDbNumber('chatModerator', 'spamTrackerTime');
|
|
spamTrackerLimit = $.getIniDbNumber('chatModerator', 'spamTrackerLimit');
|
|
|
|
fakePurgeToggle = $.getSetIniDbBoolean('chatModerator', 'fakePurgeToggle');
|
|
fakePurgeMessage = $.getSetIniDbString('chatModerator', 'fakePurgeMessage');
|
|
|
|
subscribers = {
|
|
Links: $.getIniDbBoolean('chatModerator', 'subscribersModerateLinks'),
|
|
Caps: $.getIniDbBoolean('chatModerator', 'subscribersModerateCaps'),
|
|
Symbols: $.getIniDbBoolean('chatModerator', 'subscribersModerateSymbols'),
|
|
Spam: $.getIniDbBoolean('chatModerator', 'subscribersModerateSpam'),
|
|
Emotes: $.getIniDbBoolean('chatModerator', 'subscribersModerateEmotes'),
|
|
Colors: $.getIniDbBoolean('chatModerator', 'subscribersModerateColors'),
|
|
LongMsg: $.getIniDbBoolean('chatModerator', 'subscribersModerateLongMsg'),
|
|
SpamTracker: $.getIniDbBoolean('chatModerator', 'subscribersModerateSpamTracker'),
|
|
FakePurge: $.getSetIniDbBoolean('chatModerator', 'subscribersModerateFakePurge')
|
|
};
|
|
|
|
regulars = {
|
|
Links: $.getIniDbBoolean('chatModerator', 'regularsModerateLinks'),
|
|
Caps: $.getIniDbBoolean('chatModerator', 'regularsModerateCaps'),
|
|
Symbols: $.getIniDbBoolean('chatModerator', 'regularsModerateSymbols'),
|
|
Spam: $.getIniDbBoolean('chatModerator', 'regularsModerateSpam'),
|
|
Emotes: $.getIniDbBoolean('chatModerator', 'regularsModerateEmotes'),
|
|
Colors: $.getIniDbBoolean('chatModerator', 'regularsModerateColors'),
|
|
LongMsg: $.getIniDbBoolean('chatModerator', 'regularsModerateLongMsg'),
|
|
SpamTracker: $.getIniDbBoolean('chatModerator', 'regularsModerateSpamTracker'),
|
|
FakePurge: $.getSetIniDbBoolean('chatModerator', 'regularsModerateFakePurge')
|
|
};
|
|
|
|
silentTimeout = {
|
|
Links: $.getIniDbBoolean('chatModerator', 'silentTimeoutLinks'),
|
|
Caps: $.getIniDbBoolean('chatModerator', 'silentTimeoutCaps'),
|
|
Symbols: $.getIniDbBoolean('chatModerator', 'silentTimeoutSymbols'),
|
|
Spam: $.getIniDbBoolean('chatModerator', 'silentTimeoutSpam'),
|
|
Emotes: $.getIniDbBoolean('chatModerator', 'silentTimeoutEmotes'),
|
|
Colors: $.getIniDbBoolean('chatModerator', 'silentTimeoutColors'),
|
|
LongMsg: $.getIniDbBoolean('chatModerator', 'silentTimeoutLongMsg'),
|
|
Blacklist: $.getIniDbBoolean('chatModerator', 'silentTimeoutBlacklist'),
|
|
SpamTracker: $.getIniDbBoolean('chatModerator', 'silentSpamTracker'),
|
|
FakePurge: $.getSetIniDbBoolean('chatModerator', 'silentTimeoutFakePurge'),
|
|
LinkMessage: $.getIniDbString('chatModerator', 'silentLinkMessage'),
|
|
SpamMessage: $.getIniDbString('chatModerator', 'silentSpamMessage'),
|
|
CapMessage: $.getIniDbString('chatModerator', 'silentCapMessage'),
|
|
SymbolMessage: $.getIniDbString('chatModerator', 'silentSymbolsMessage'),
|
|
ColorMessage: $.getIniDbString('chatModerator', 'silentColorMessage'),
|
|
EmoteMessage: $.getIniDbString('chatModerator', 'silentEmoteMessage'),
|
|
LongMessage: $.getIniDbString('chatModerator', 'silentLongMessage'),
|
|
BlacklistMessage: $.getIniDbString('chatModerator', 'silentBlacklistMessage'),
|
|
SpamTrackerMessage: $.getIniDbString('chatModerator', 'silentSpamTrackerMessage'),
|
|
FakePurgeMessage: $.getSetIniDbString('chatModerator', 'silentFakePurgeMessage')
|
|
};
|
|
|
|
warningTime = {
|
|
Links: $.getIniDbNumber('chatModerator', 'warningTimeLinks'),
|
|
Caps: $.getIniDbNumber('chatModerator', 'warningTimeCaps'),
|
|
Symbols: $.getIniDbNumber('chatModerator', 'warningTimeSymbols'),
|
|
Spam: $.getIniDbNumber('chatModerator', 'warningTimeSpam'),
|
|
Emotes: $.getIniDbNumber('chatModerator', 'warningTimeEmotes'),
|
|
Colors: $.getIniDbNumber('chatModerator', 'warningTimeColors'),
|
|
LongMsg: $.getIniDbNumber('chatModerator', 'warningTimeLongMsg'),
|
|
SpamTracker: $.getIniDbNumber('chatModerator', 'warningTimeSpamTracker'),
|
|
FakePurge: $.getSetIniDbNumber('chatModerator', 'warningTimeFakePurge')
|
|
};
|
|
|
|
timeoutTime = {
|
|
Links: $.getIniDbNumber('chatModerator', 'timeoutTimeLinks'),
|
|
Caps: $.getIniDbNumber('chatModerator', 'timeoutTimeCaps'),
|
|
Symbols: $.getIniDbNumber('chatModerator', 'timeoutTimeSymbols'),
|
|
Spam: $.getIniDbNumber('chatModerator', 'timeoutTimeSpam'),
|
|
Emotes: $.getIniDbNumber('chatModerator', 'timeoutTimeEmotes'),
|
|
Colors: $.getIniDbNumber('chatModerator', 'timeoutTimeColors'),
|
|
LongMsg: $.getIniDbNumber('chatModerator', 'timeoutTimeLongMsg'),
|
|
SpamTracker: $.getIniDbNumber('chatModerator', 'timeoutTimeSpamTracker'),
|
|
FakePurge: $.getSetIniDbNumber('chatModerator', 'timeoutTimeFakePurge')
|
|
};
|
|
|
|
blacklistMessage = $.getIniDbString('chatModerator', 'blacklistMessage');
|
|
blacklistMessageBan = $.getIniDbString('chatModerator', 'blacklistMessageBan');
|
|
warningResetTime = $.getIniDbNumber('chatModerator', 'warningResetTime');
|
|
msgCooldownSec = $.getIniDbNumber('chatModerator', 'msgCooldownSecs');
|
|
resetTime = (warningResetTime * 6e4);
|
|
|
|
loadBlackList();
|
|
loadWhiteList();
|
|
}
|
|
|
|
/*
|
|
* @interval
|
|
*/
|
|
setInterval(function() {
|
|
var keys,
|
|
i;
|
|
|
|
if (spamTracker.length !== 0) {
|
|
keys = Object.keys(spamTracker);
|
|
|
|
for (i in keys) {
|
|
if (spamTracker[keys[i]].time < $.systemTime()) {
|
|
delete spamTracker[keys[i]];
|
|
}
|
|
}
|
|
}
|
|
|
|
if (timeouts.length !== 0) {
|
|
keys = Object.keys(timeouts);
|
|
|
|
for (i in keys) {
|
|
if (timeouts[keys[i]] < $.systemTime()) {
|
|
delete timeouts[keys[i]];
|
|
}
|
|
}
|
|
}
|
|
}, 8e4, 'scripts::core::chatModerator.js');
|
|
|
|
/**
|
|
* @function loadBlackList
|
|
*/
|
|
function loadBlackList() {
|
|
var keys = $.inidb.GetKeyList('blackList', '');
|
|
blackList = [];
|
|
|
|
for (i = 0; i < keys.length; i++) {
|
|
var json = JSON.parse($.inidb.get('blackList', keys[i]));
|
|
|
|
if (json != null) {
|
|
if (json.isRegex) {
|
|
try {
|
|
json.phrase = new RegExp(json.phrase.replace('regex:', ''));
|
|
} catch (ex) {
|
|
// Failed to create regex, ignore this and don't make it a blacklist.
|
|
continue;
|
|
}
|
|
} else {
|
|
json.phrase = json.phrase.toLowerCase();
|
|
}
|
|
json.isBan = parseInt(json.timeout) === -1;
|
|
|
|
blackList.push(json);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @function addToWhiteList
|
|
*
|
|
* @param {string} url
|
|
*/
|
|
function addToWhiteList(url) {
|
|
whiteList.push(new RegExp(url.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'g'));
|
|
}
|
|
|
|
/**
|
|
* @function loadWhiteList
|
|
*/
|
|
function loadWhiteList() {
|
|
var keys = $.inidb.GetKeyList('whiteList', '');
|
|
whiteList = [];
|
|
|
|
for (i = 0; i < keys.length; i++) {
|
|
addToWhiteList(keys[i] + '');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @function timeoutUserFor
|
|
*
|
|
* @param {string} username
|
|
* @param {number} time
|
|
* @param {string} reason
|
|
* @param {map} tags
|
|
*/
|
|
function timeoutUserFor(username, time, reason, tags) {
|
|
if (time == 0) {
|
|
$.session.sayNow('.delete ' + tags.get('id')); // Cannot send a reason/time with this.
|
|
} else {
|
|
$.session.sayNow('.timeout ' + username + ' ' + time + ' ' + reason);
|
|
}
|
|
}
|
|
|
|
/*
|
|
* @function banUser
|
|
*
|
|
* @param {string} username
|
|
* @param {string} reason
|
|
*/
|
|
function banUser(username, reason) {
|
|
$.session.sayNow('.ban ' + username + ' ' + reason);
|
|
}
|
|
|
|
/**
|
|
* @function timeout
|
|
*
|
|
* @param {string} username
|
|
* @param {number} warningT
|
|
* @param {number} timeoutT
|
|
* @param {string} reason
|
|
* @param {map} tags
|
|
*/
|
|
function timeout(username, warningT, timeoutT, reason, tags) {
|
|
if (timeouts[username] !== undefined) {
|
|
if (timeouts[username] > $.systemTime()) {
|
|
timeoutUserFor(username, timeoutT, reason, tags);
|
|
warning = $.lang.get('chatmoderator.timeout');
|
|
} else {
|
|
timeoutUserFor(username, warningT, reason, tags);
|
|
warning = $.lang.get('chatmoderator.warning');
|
|
}
|
|
} else {
|
|
timeoutUserFor(username, warningT, reason, tags);
|
|
warning = $.lang.get('chatmoderator.warning');
|
|
}
|
|
timeouts[username] = ($.systemTime() + resetTime);
|
|
}
|
|
|
|
/**
|
|
* @function sendMessage
|
|
*
|
|
* @param {string} username
|
|
* @param {string} message
|
|
* @param {boolean} filter
|
|
*/
|
|
function sendMessage(username, message, filter) {
|
|
if (filter == false && messageTime < $.systemTime() && $.getMessageWrites() < 7) {
|
|
$.session.sayNow('@' + username + ', ' + message + ' ' + warning);
|
|
messageTime = ((msgCooldownSec * 1000) + $.systemTime());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @function permitUser
|
|
*
|
|
* @param {string} username
|
|
*/
|
|
function permitUser(username) {
|
|
permitList[username] = ((linkPermitTime * 1000) + $.systemTime());
|
|
}
|
|
|
|
/**
|
|
* @function getModerationFilterStatus
|
|
*
|
|
* @param {string} filter
|
|
* @param {boolean} toggle
|
|
*/
|
|
function getModerationFilterStatus(filter, toggle) {
|
|
if (toggle) {
|
|
return (filter ? $.lang.get('common.enabled') : $.lang.get('common.disabled'));
|
|
} else {
|
|
return (filter ? 'not allowed' : 'allowed');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @function checkPermitList
|
|
*
|
|
* @param {string} username
|
|
*/
|
|
function checkPermitList(username) {
|
|
if (permitList[username] !== undefined) {
|
|
if (permitList[username] > $.systemTime()) {
|
|
delete permitList[username];
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @function checkBlackList
|
|
*
|
|
* @param {string} sender
|
|
* @param {string} message
|
|
* @param {map} tags
|
|
*/
|
|
function checkBlackList(sender, event, message, tags) {
|
|
for (i in blackList) {
|
|
if (blackList[i].isRegex) {
|
|
if ($.test(message, blackList[i].phrase)) {
|
|
if (blackList[i].excludeRegulars && $.isReg(sender) || blackList[i].excludeSubscribers && $.isSubv3(sender, event.getTags())) {
|
|
return false;
|
|
}
|
|
|
|
if (blackList[i].isBan) {
|
|
banUser(sender, blackList[i].banReason);
|
|
warning = $.lang.get('chatmoderator.ban');
|
|
sendMessage(sender, blackList[i].message, blackList[i].isSilent);
|
|
} else {
|
|
timeoutUserFor(sender, blackList[i].timeout, blackList[i].banReason, tags);
|
|
warning = $.lang.get('chatmoderator.timeout');
|
|
sendMessage(sender, blackList[i].message, blackList[i].isSilent);
|
|
}
|
|
return true;
|
|
}
|
|
} else {
|
|
if (message.indexOf(blackList[i].phrase) !== -1) {
|
|
if (blackList[i].excludeRegulars && $.isReg(sender) || blackList[i].excludeSubscribers && $.isSubv3(sender, event.getTags())) {
|
|
return false;
|
|
}
|
|
|
|
if (blackList[i].isBan) {
|
|
banUser(sender, blackList[i].banReason);
|
|
warning = $.lang.get('chatmoderator.ban');
|
|
sendMessage(sender, blackList[i].message, blackList[i].isSilent);
|
|
} else {
|
|
timeoutUserFor(sender, blackList[i].timeout, blackList[i].banReason, tags);
|
|
warning = $.lang.get('chatmoderator.timeout');
|
|
sendMessage(sender, blackList[i].message, blackList[i].isSilent);
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @function checkWhiteList
|
|
*
|
|
* @param {string} message
|
|
*/
|
|
function checkWhiteList(message) {
|
|
function checkLink(link, whiteListItem) {
|
|
var baseLink = $.match(link, /[^.]*[^/]*/)[0];
|
|
var matches = $.matchAll(link, whiteListItem);
|
|
for (k = 0; k < matches.length; k++) {
|
|
var matchStart = matches[k].index;
|
|
var matchEnd = matches[k].index + matches[k][0].length;
|
|
if (matchStart < baseLink.length && matchEnd >= baseLink.length) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
var links = $.patternDetector.getLinks(message);
|
|
for (i = 0; i < whiteList.length; i++) {
|
|
for (j = 0; j < links.length; j++) {
|
|
if (checkLink(links[j], whiteList[i])) {
|
|
links.splice(j--, 1);
|
|
}
|
|
}
|
|
if (links.length === 0) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @function checkYoutubePlayer
|
|
*
|
|
* @param {string} message
|
|
*/
|
|
function checkYoutubePlayer(message) {
|
|
if ($.youtubePlayerConnected && $.test(message, youtubeLinks)) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @function performModeration
|
|
*/
|
|
function performModeration(event) {
|
|
var sender = event.getSender(),
|
|
message = event.getMessage().toLowerCase(),
|
|
messageLength = message.length(),
|
|
tags = event.getTags();
|
|
|
|
if (!$.isModv3(sender, tags)) {
|
|
// Blacklist
|
|
if (checkBlackList(sender, event, message, tags)) {
|
|
return;
|
|
}
|
|
|
|
// Links filter
|
|
if (linksToggle && $.patternDetector.hasLinks(event)) {
|
|
if (checkYoutubePlayer(message) || checkPermitList(sender) || checkWhiteList(message)) {
|
|
return;
|
|
} else if (!regulars.Links && $.isReg(sender) || !subscribers.Links && $.isSubv3(sender, event.getTags())) {
|
|
return;
|
|
}
|
|
|
|
timeout(sender, warningTime.Links, timeoutTime.Links, silentTimeout.LinkMessage, tags);
|
|
sendMessage(sender, linksMessage, silentTimeout.Links);
|
|
$.patternDetector.logLastLink(event);
|
|
return;
|
|
}
|
|
|
|
// Symbol filter
|
|
if (symbolsToggle && messageLength >= symbolsTriggerLength) {
|
|
if ($.patternDetector.getLongestNonLetterSequence(event) >= symbolsGroupLimit || (($.patternDetector.getNumberOfNonLetters(event) / messageLength) * 100) >= symbolsLimitPercent) {
|
|
if (!regulars.Symbols && $.isReg(sender) || !subscribers.Symbols && $.isSubv3(sender, event.getTags())) {
|
|
return;
|
|
}
|
|
|
|
timeout(sender, warningTime.Symbols, timeoutTime.Symbols, silentTimeout.SymbolMessage, tags);
|
|
sendMessage(sender, symbolsMessage, silentTimeout.Symbols);
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Spam filter
|
|
if (spamToggle && $.patternDetector.getLongestRepeatedSequence(event) >= spamLimit) {
|
|
if (!regulars.Spam && $.isReg(sender) || !subscribers.Spam && $.isSubv3(sender, event.getTags())) {
|
|
return;
|
|
}
|
|
|
|
timeout(sender, warningTime.Spam, timeoutTime.Spam, silentTimeout.SpamMessage, tags);
|
|
sendMessage(sender, spamMessage, silentTimeout.Spam);
|
|
return;
|
|
}
|
|
|
|
// Long msg filter
|
|
if (longMessageToggle && messageLength >= longMessageLimit) {
|
|
if (!regulars.LongMsg && $.isReg(sender) || !subscribers.LongMsg && $.isSubv3(sender, event.getTags())) {
|
|
return;
|
|
}
|
|
|
|
timeout(sender, warningTime.LongMsg, timeoutTime.LongMsg, silentTimeout.LongMessage, tags);
|
|
sendMessage(sender, longMessageMessage, silentTimeout.LongMsg);
|
|
return;
|
|
}
|
|
|
|
// Fake purge filter
|
|
if (fakePurgeToggle && $.patternDetector.getFakePurge(event)) {
|
|
if (!regulars.FakePurge && $.isReg(sender) || !subscribers.FakePurge && $.isSubv3(sender, event.getTags())) {
|
|
return;
|
|
}
|
|
|
|
timeout(sender, warningTime.FakePurge, timeoutTime.FakePurge, silentTimeout.FakePurgeMessage, tags);
|
|
sendMessage(sender, fakePurgeMessage, silentTimeout.FakePurge);
|
|
return;
|
|
}
|
|
|
|
// Emotes folter
|
|
if (emotesToggle && $.patternDetector.getEmotesCount(event) >= emotesLimit) {
|
|
if (!regulars.Emotes && $.isReg(sender) || !subscribers.Emotes && $.isSubv3(sender, event.getTags())) {
|
|
return;
|
|
}
|
|
|
|
timeout(sender, warningTime.Emotes, timeoutTime.Emotes, silentTimeout.EmoteMessage, tags);
|
|
sendMessage(sender, emotesMessage, silentTimeout.Emotes);
|
|
return;
|
|
}
|
|
|
|
// Caps filter
|
|
if (capsToggle && messageLength >= capsTriggerLength) {
|
|
if ((($.patternDetector.getNumberOfCaps(event) / messageLength) * 100) >= capsLimitPercent) {
|
|
if (!regulars.Caps && $.isReg(sender) || !subscribers.Caps && $.isSubv3(sender, event.getTags())) {
|
|
return;
|
|
}
|
|
|
|
timeout(sender, warningTime.Caps, timeoutTime.Caps, silentTimeout.CapMessage, tags);
|
|
sendMessage(sender, capsMessage, silentTimeout.Caps);
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Color filter
|
|
if (colorsToggle && $.patternDetector.getColoredMessage(event)) {
|
|
if (!regulars.Colors && $.isReg(sender) || !subscribers.Colors && $.isSubv3(sender, event.getTags())) {
|
|
return;
|
|
}
|
|
|
|
timeout(sender, warningTime.Colors, timeoutTime.Colors, silentTimeout.ColorMessage, tags);
|
|
sendMessage(sender, colorsMessage, silentTimeout.Colors);
|
|
return;
|
|
}
|
|
|
|
// Spam tracker
|
|
if (spamTrackerToggle) {
|
|
if (!regulars.SpamTracker && $.isReg(sender) || !subscribers.SpamTracker && $.isSubv3(sender, event.getTags())) {
|
|
return;
|
|
}
|
|
|
|
if (spamTracker[sender] !== undefined) {
|
|
if (spamTracker[sender].time - $.systemTime() <= 0) {
|
|
spamTracker[sender] = {count: 0, time: ($.systemTime() + (spamTrackerTime * 1e3))};
|
|
}
|
|
spamTracker[sender].count++;
|
|
} else {
|
|
spamTracker[sender] = {count: 1, time: ($.systemTime() + (spamTrackerTime * 1e3))};
|
|
}
|
|
if (spamTracker[sender].count >= spamTrackerLimit) {
|
|
timeout(sender, warningTime.SpamTracker, timeoutTime.SpamTracker, silentTimeout.SpamTrackerMessage, tags);
|
|
sendMessage(sender, spamTrackerMessage, silentTimeout.SpamTracker);
|
|
delete spamTracker[sender];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @function extraCommands
|
|
* Handles the commands that the normal function can't.
|
|
*/
|
|
function extraCommands(event) {
|
|
var sender = event.getSender(),
|
|
command = event.getCommand(),
|
|
argString = event.getArguments(),
|
|
args = event.getArgs(),
|
|
action = args[0],
|
|
subAction = args[1];
|
|
|
|
if (command.equalsIgnoreCase('moderation') || command.equalsIgnoreCase('mod')) { // js can't handle anymore commands in the default function.
|
|
if (!action) {
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation togglemoderationlogs - Toggles the moderation logs. You will need to reboot if you are enabling it.
|
|
*/
|
|
if (action.equalsIgnoreCase('togglemoderationlogs')) {
|
|
moderationLogs = !moderationLogs;
|
|
$.inidb.set('chatModerator', 'moderationLogs', moderationLogs);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.moderation.logs', (moderationLogs === true ? $.lang.get('chatmoderator.moderation.enabled') : $.lang.get('common.disabled'))));
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation spamtracker [on / off] - Enable/Disable the spam tracker. This limits how many messages a user can sent in 30 seconds by default
|
|
*/
|
|
if (action.equalsIgnoreCase('spamtracker')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spamtracker.usage', getModerationFilterStatus(spamTrackerToggle, true)));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('on') || subAction.equalsIgnoreCase('off')) {
|
|
spamTrackerToggle = subAction.equalsIgnoreCase('on');
|
|
$.inidb.set('chatModerator', 'spamTrackerToggle', spamTrackerToggle);
|
|
$.say($.whisperPrefix(sender) + (spamTrackerToggle ? $.lang.get('chatmoderator.spamtracker.filter.enabled') : $.lang.get('chatmoderator.spamtracker.filter.disabled')));
|
|
$.log.event('spam tracker filter was turned ' + subAction + ' by ' + sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation spamtrackerlimit [amount of messages] - Sets how many messages a user can sent in 30 seconds by default
|
|
*/
|
|
if (action.equalsIgnoreCase('spamtrackerlimit')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spamtracker.limit.usage'));
|
|
return;
|
|
}
|
|
spamTrackerLimit = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'spamTrackerLimit', spamTrackerLimit);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spamtracker.limit.set', spamTrackerLimit));
|
|
$.log.event(sender + ' changed the spam tracker limit to ' + spamTrackerLimit);
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation spamtrackertime [amount in seconds] - Sets how many messages a user can sent in 30 seconds by default
|
|
*/
|
|
if (action.equalsIgnoreCase('spamtrackertime')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spamtracker.time.usage'));
|
|
return;
|
|
}
|
|
|
|
spamTrackerTime = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'spamTrackerTime', spamTrackerTime);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spamtracker.time.set', spamTrackerTime));
|
|
$.log.event(sender + ' changed the spam tracker time to ' + spamTrackerTime);
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation spamtrackermessage [message] - Sets the spam tracker warning message
|
|
*/
|
|
if (action.equalsIgnoreCase('spamtrackermessage')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spamtracker.message.usage'));
|
|
return;
|
|
}
|
|
spamTrackerMessage = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'spamTrackerMessage', spamTrackerMessage);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spamtracker.message.set', spamTrackerMessage));
|
|
$.log.event(sender + ' changed the spam tracker warning message to "' + spamTrackerMessage + '"');
|
|
return;
|
|
}
|
|
|
|
if (action.equalsIgnoreCase('regulars')) {
|
|
if (subAction && subAction.equalsIgnoreCase('spamtracker')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.regulars.toggle.spamtracker', getModerationFilterStatus(regulars.SpamTracker)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
regulars.SpamTracker = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'regularsModerateSpamTracker', regulars.SpamTracker);
|
|
$.say($.whisperPrefix(sender) + (regulars.SpamTracker ? $.lang.get('chatmoderator.regulars.spamtracker.allowed') : $.lang.get('chatmoderator.regulars.spamtracker.not.allowed')));
|
|
$.log.event(sender + ' changed regulars moderation for spam tracker to ' + args[2]);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (action.equalsIgnoreCase('subscribers')) {
|
|
if (subAction && subAction.equalsIgnoreCase('spamtracker')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.subscribers.toggle.spamtracker', getModerationFilterStatus(subscribers.SpamTracker)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
subscribers.SpamTracker = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'subscribersModerateSpamTracker', subscribers.SpamTracker);
|
|
$.say($.whisperPrefix(sender) + (subscribers.SpamTracker ? $.lang.get('chatmoderator.subscribers.spamtracker.allowed') : $.lang.get('chatmoderator.subscribers.spamtracker.not.allowed')));
|
|
$.log.event(sender + ' changed subscribers moderation for spam tracker to ' + args[2]);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (action.equalsIgnoreCase('silenttimeout')) {
|
|
if (subAction && subAction.equalsIgnoreCase('spamtracker')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.toggle.spamtracker', getModerationFilterStatus(silentTimeout.SpamTracker, true)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
silentTimeout.SpamTracker = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'silentTimeoutSpamTracker', silentTimeout.SpamTracker);
|
|
$.say($.whisperPrefix(sender) + (silentTimeout.SpamTracker ? $.lang.get('chatmoderator.silenttimeout.spamtracker.true') : $.lang.get('chatmoderator.silenttimeout.spamtracker.false')));
|
|
$.log.event(sender + ' changed silent timeout moderation for spam tracker to ' + args[2]);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (action.equalsIgnoreCase('warningtime')) {
|
|
if (subAction && subAction.equalsIgnoreCase('spamtracker')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.spamtracker.usage', warningTime.SpamTracker));
|
|
return;
|
|
}
|
|
|
|
warningTime.SpamTracker = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'warningTimeSpamTracker', warningTime.SpamTracker);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.spamtracker', warningTime.SpamTracker));
|
|
$.log.event(sender + ' changed warning time for spam tracker to: ' + warningTime.SpamTracker);
|
|
}
|
|
}
|
|
|
|
if (action.equalsIgnoreCase('timeouttime')) {
|
|
if (subAction && subAction.equalsIgnoreCase('spamtracker')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.spamtracker.usage', timeoutTime.SpamTracker));
|
|
return;
|
|
}
|
|
|
|
timeoutTime.SpamTracker = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'timeoutTimeSpamTracker', timeoutTime.SpamTracker);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.spamtracker', timeoutTime.SpamTracker));
|
|
$.log.event(sender + ' changed timeout time for spam tracker to: ' + timeoutTime.SpamTracker);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation fakepurge [on / off] - Enable/Disable the fake purges filter. This will remove <message deleted> variations if enabled.
|
|
*/
|
|
if (action.equalsIgnoreCase('fakepurge')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.fakepurge.usage', getModerationFilterStatus(fakePurgeToggle, true)));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('on') || subAction.equalsIgnoreCase('off')) {
|
|
fakePurgeToggle = subAction.equalsIgnoreCase('on');
|
|
$.inidb.set('chatModerator', 'fakePurgeToggle', fakePurgeToggle);
|
|
$.say($.whisperPrefix(sender) + (fakePurgeToggle ? $.lang.get('chatmoderator.fakepurge.filter.enabled') : $.lang.get('chatmoderator.fakepurge.filter.disabled')));
|
|
$.log.event('fake purge filter was turned ' + subAction + ' by ' + sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation fakepurgemessage [message] - Sets the fake purge warning message
|
|
*/
|
|
if (action.equalsIgnoreCase('fakepurgemessage')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.fakepurge.message.usage'));
|
|
return;
|
|
}
|
|
fakePurgeMessage = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'fakePurgeMessage', fakePurgeMessage);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.fakepurge.message.set', fakePurgeMessage));
|
|
$.log.event(sender + ' changed the fake purge warning message to "' + fakePurgeMessage + '"');
|
|
return;
|
|
}
|
|
|
|
if (action.equalsIgnoreCase('regulars')) {
|
|
if (subAction && subAction.equalsIgnoreCase('fakepurge')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.regulars.toggle.fakepurge', getModerationFilterStatus(regulars.FakePurge)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
regulars.FakePurge = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'regularsModerateFakePurge', regulars.FakePurge);
|
|
$.say($.whisperPrefix(sender) + (regulars.FakePurge ? $.lang.get('chatmoderator.regulars.fakepurge.allowed') : $.lang.get('chatmoderator.regulars.fakepurge.not.allowed')));
|
|
$.log.event(sender + ' changed regulars moderation for fake purge to ' + args[2]);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (action.equalsIgnoreCase('subscribers')) {
|
|
if (subAction && subAction.equalsIgnoreCase('fakepurge')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.subscribers.toggle.fakepurge', getModerationFilterStatus(subscribers.FakePurge)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
subscribers.FakePurge = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'subscribersModerateFakePurge', subscribers.FakePurge);
|
|
$.say($.whisperPrefix(sender) + (subscribers.FakePurge ? $.lang.get('chatmoderator.subscribers.fakepurge.allowed') : $.lang.get('chatmoderator.subscribers.fakepurge.not.allowed')));
|
|
$.log.event(sender + ' changed subscribers moderation for fake purge to ' + args[2]);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (action.equalsIgnoreCase('silenttimeout')) {
|
|
if (subAction && subAction.equalsIgnoreCase('fakepurge')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.toggle.fakepurge', getModerationFilterStatus(silentTimeout.FakePurge, true)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
silentTimeout.FakePurge = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'silentTimeoutFakePurge', silentTimeout.FakePurge);
|
|
$.say($.whisperPrefix(sender) + (silentTimeout.FakePurge ? $.lang.get('chatmoderator.silenttimeout.fakepurge.true') : $.lang.get('chatmoderator.silenttimeout.fakepurge.false')));
|
|
$.log.event(sender + ' changed silent timeout moderation for fake purge to ' + args[2]);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (action.equalsIgnoreCase('warningtime')) {
|
|
if (subAction && subAction.equalsIgnoreCase('fakepurge')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.fakepurge.usage', warningTime.FakePurge));
|
|
return;
|
|
}
|
|
|
|
warningTime.FakePurge = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'warningTimeFakePurge', warningTime.FakePurge);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.fakepurge', warningTime.FakePurge));
|
|
$.log.event(sender + ' changed warning time for fake purge to: ' + warningTime.FakePurge);
|
|
}
|
|
}
|
|
|
|
if (action.equalsIgnoreCase('timeouttime')) {
|
|
if (subAction && subAction.equalsIgnoreCase('fakepurge')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.fakepurge.usage', timeoutTime.FakePurge));
|
|
return;
|
|
}
|
|
|
|
timeoutTime.FakePurge = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'timeoutTimeFakePurge', timeoutTime.FakePurge);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.fakepurge', timeoutTime.FakePurge));
|
|
$.log.event(sender + ' changed timeout time for fake purge to: ' + timeoutTime.FakePurge);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath blacklist - Show usage of command to manipulate the blacklist of words in chat
|
|
*/
|
|
if (command.equalsIgnoreCase('blacklist')) {
|
|
if (!action) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.blacklist.usage'));
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath blacklist add [timeout time (-1 = ban)] [word] - Adds a word to the blacklist. Use regex: at the start to specify a regex blacklist.
|
|
*/
|
|
if (action.equalsIgnoreCase('add')) {
|
|
if (!subAction || !args[2] || isNaN(parseInt(subAction))) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.blacklist.add.usage'));
|
|
return;
|
|
}
|
|
var word = argString.split(' ').slice(2).join(' '),
|
|
isRegex = word.startsWith('regex:'),
|
|
timeout = parseInt(subAction),
|
|
obj = {};
|
|
|
|
obj = {
|
|
id: String(($.inidb.GetKeyList('blackList', '').length + 1)),
|
|
timeout: String(timeout),
|
|
isRegex: isRegex,
|
|
phrase: String(word),
|
|
isSilent: false,
|
|
excludeRegulars: false,
|
|
excludeSubscribers: false,
|
|
message: timeout !== -1 ? String(blacklistMessage) : String(blacklistMessageBan),
|
|
banReason: String(silentTimeout.BlacklistMessage)
|
|
};
|
|
|
|
$.inidb.set('blackList', word, JSON.stringify(obj));
|
|
loadBlackList();
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.blacklist.added'));
|
|
$.log.event('"' + word + '" was added to the blacklist by ' + sender);
|
|
}
|
|
|
|
/**
|
|
* @commandpath blacklist remove [word] - Removes a word from the blacklist.
|
|
*/
|
|
if (action.equalsIgnoreCase('remove')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.blacklist.remove.usage'));
|
|
return;
|
|
} else if (!$.inidb.exists('blackList', argString.split(' ').slice(1).join(' '))) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.err'));
|
|
return;
|
|
}
|
|
$.inidb.del('blackList', argString.split(' ').slice(1).join(' '));
|
|
loadBlackList();
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.blacklist.removed'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath whitelist - Shows usage of command to manipulate the whitelist links
|
|
*/
|
|
if (command.equalsIgnoreCase('whitelist')) {
|
|
if (!action) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.whitelist.usage'));
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath whitelist add [link] - Adds a link to the whitelist
|
|
*/
|
|
if (action.equalsIgnoreCase('add')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.whitelist.add.usage'));
|
|
return;
|
|
}
|
|
var link = argString.split(' ').slice(1).join(' ').toLowerCase() + '';
|
|
$.inidb.set('whiteList', link, 'true');
|
|
addToWhiteList(link);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.whitelist.link.added'));
|
|
$.log.event('"' + link + '" was added the the whitelist by ' + sender);
|
|
}
|
|
|
|
/**
|
|
* @commandpath whitelist remove [link] - Removes a link from the whitelist.
|
|
*/
|
|
if (action.equalsIgnoreCase('remove')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.whitelist.remove.usage'));
|
|
return;
|
|
} else if (!$.inidb.exists('whiteList', argString.split(' ').slice(1).join(' ').toLowerCase())) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.err'));
|
|
return;
|
|
}
|
|
$.inidb.del('whiteList', argString.split(' ').slice(1).join(' ').toLowerCase());
|
|
loadWhiteList();
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.whitelist.removed'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath permit [user] - Permit someone to post a link for a configured period of time
|
|
*/
|
|
if (command.equalsIgnoreCase('permit')) {
|
|
if (!linksToggle) {
|
|
return;
|
|
}
|
|
|
|
if (!action) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.permit.usage'));
|
|
return;
|
|
}
|
|
|
|
action = $.user.sanitize(action);
|
|
|
|
// if the user got a warning/timeout, unban him, and remove him from the warning/timeout list.
|
|
if (timeouts[action] !== undefined) {
|
|
$.session.sayNow('.unban ' + action);
|
|
delete timeouts[action];
|
|
}
|
|
|
|
permitUser(action);
|
|
$.say(action + $.lang.get('chatmoderator.permited', linkPermitTime));
|
|
$.log.event(action + ' was permited by ' + sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @event ircClearchat
|
|
*/
|
|
/* Removed this for now because sometimes it fails and it fails to send the moderation timeout and message because of it.
|
|
$.bind('ircClearchat', function(event) {
|
|
$.log.event(event.getUser() + ' has been timed out for ' + String(event.getDuration()) + ' seconds. Reason: ' + event.getReason());
|
|
});
|
|
*/
|
|
|
|
/**
|
|
* @event command
|
|
*/
|
|
$.bind('command', function(event) {
|
|
var sender = event.getSender(),
|
|
command = event.getCommand(),
|
|
argString = event.getArguments(),
|
|
args = event.getArgs(),
|
|
action = args[0],
|
|
subAction = args[1];
|
|
|
|
/**
|
|
* Handle extra commands
|
|
*/
|
|
extraCommands(event);
|
|
|
|
/**
|
|
* @commandpath moderation - Shows usage for the various chat moderation options
|
|
*/
|
|
if (command.equalsIgnoreCase('moderation') || command.equalsIgnoreCase('mod')) {
|
|
if (!action) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.usage.toggles'));
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.usage.messages'));
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.options'));
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation links [on / off] - Enable/Disable the link filter
|
|
*/
|
|
if (action.equalsIgnoreCase('links')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.link.usage', getModerationFilterStatus(linksToggle, true)));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('on') || subAction.equalsIgnoreCase('off')) {
|
|
linksToggle = subAction.equalsIgnoreCase('on');
|
|
$.inidb.set('chatModerator', 'linksToggle', linksToggle);
|
|
$.say($.whisperPrefix(sender) + (linksToggle ? $.lang.get('chatmoderator.link.filter.enabled') : $.lang.get('chatmoderator.link.filter.disabled')));
|
|
$.log.event('Link filter was turned ' + subAction + ' by ' + sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation caps [on / off] - Enable/Disable the caps filter
|
|
*/
|
|
if (action.equalsIgnoreCase('caps')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.caps.usage', getModerationFilterStatus(capsToggle, true)));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('on') || subAction.equalsIgnoreCase('off')) {
|
|
capsToggle = subAction.equalsIgnoreCase('on');
|
|
$.inidb.set('chatModerator', 'capsToggle', capsToggle);
|
|
$.say($.whisperPrefix(sender) + (capsToggle ? $.lang.get('chatmoderator.caps.filter.enabled') : $.lang.get('chatmoderator.caps.filter.disabled')));
|
|
$.log.event('Caps filter was turned ' + subAction + ' by ' + sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation spam [on / off] - Enable/Disable the spam filter
|
|
*/
|
|
if (action.equalsIgnoreCase('spam')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spam.usage', getModerationFilterStatus(spamToggle, true)));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('on') || subAction.equalsIgnoreCase('off')) {
|
|
spamToggle = subAction.equalsIgnoreCase('on');
|
|
$.inidb.set('chatModerator', 'spamToggle', spamToggle);
|
|
$.say($.whisperPrefix(sender) + (spamToggle ? $.lang.get('chatmoderator.spam.filter.enabled') : $.lang.get('chatmoderator.spam.filter.disabled')));
|
|
$.log.event('Spam filter was turned ' + subAction + ' by ' + sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation symbols [on / off] - Enable/Disable the symbol filter
|
|
*/
|
|
if (action.equalsIgnoreCase('symbols')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.symbols.usage', getModerationFilterStatus(symbolsToggle, true)));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('on') || subAction.equalsIgnoreCase('off')) {
|
|
symbolsToggle = subAction.equalsIgnoreCase('on');
|
|
$.inidb.set('chatModerator', 'symbolsToggle', symbolsToggle);
|
|
$.say($.whisperPrefix(sender) + (symbolsToggle ? $.lang.get('chatmoderator.symbols.filter.enabled') : $.lang.get('chatmoderator.symbols.filter.disabled')));
|
|
$.log.event('Symbols filter was turned ' + subAction + ' by ' + sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation emotes [on / off] - Enable/Disable the emotes filter
|
|
*/
|
|
if (action.equalsIgnoreCase('emotes')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.emotes.usage', getModerationFilterStatus(emotesToggle, true)));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('on') || subAction.equalsIgnoreCase('off')) {
|
|
emotesToggle = subAction.equalsIgnoreCase('on');
|
|
$.inidb.set('chatModerator', 'emotesToggle', emotesToggle);
|
|
$.say($.whisperPrefix(sender) + (emotesToggle ? $.lang.get('chatmoderator.emotes.filter.enabled') : $.lang.get('chatmoderator.emotes.filter.disabled')));
|
|
$.log.event('Emotes filter was turned ' + subAction + ' by ' + sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation colors [on / off] - Enable/Disable the message color filter
|
|
*/
|
|
if (action.equalsIgnoreCase('colors')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.colors.usage', getModerationFilterStatus(colorsToggle, true)));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('on') || subAction.equalsIgnoreCase('off')) {
|
|
colorsToggle = subAction.equalsIgnoreCase('on');
|
|
$.inidb.set('chatModerator', 'colorsToggle', colorsToggle);
|
|
$.say($.whisperPrefix(sender) + (colorsToggle ? $.lang.get('chatmoderator.colors.filter.enabled') : $.lang.get('chatmoderator.colors.filter.disabled')));
|
|
$.log.event('Colors filter was turned ' + subAction + ' by ' + sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation longmessages [on / off] - Enable/Disable the longmessages filter
|
|
*/
|
|
if (action.equalsIgnoreCase('longmessages')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.message.usage', getModerationFilterStatus(longMessageToggle, true)));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('on') || subAction.equalsIgnoreCase('off')) {
|
|
longMessageToggle = subAction.equalsIgnoreCase('on');
|
|
$.inidb.set('chatModerator', 'longMessageToggle', longMessageToggle);
|
|
$.say($.whisperPrefix(sender) + (longMessageToggle ? $.lang.get('chatmoderator.message.filter.enabled') : $.lang.get('chatmoderator.message.filter.disabled')));
|
|
$.log.event('Long Message filter was turned ' + subAction + ' by ' + sender);
|
|
return;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation regulars [links / caps / symbols / spam / emotes / colors / longmessages / spamtracker / fakepurge] [true / false] - Enable or disable if regulars get moderated by that filter
|
|
*/
|
|
if (action.equalsIgnoreCase('regulars')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.regulars.usage'));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('links')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.regulars.toggle.link', getModerationFilterStatus(regulars.Links)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
regulars.Links = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'regularsModerateLinks', regulars.Links);
|
|
$.say($.whisperPrefix(sender) + (regulars.Links ? $.lang.get('chatmoderator.regulars.links.allowed') : $.lang.get('chatmoderator.regulars.links.not.allowed')));
|
|
$.log.event(sender + ' changed regulars moderation for links to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('caps')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.regulars.toggle.caps', getModerationFilterStatus(regulars.Caps)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
regulars.Caps = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'regularsModerateCaps', regulars.Caps);
|
|
$.say($.whisperPrefix(sender) + (regulars.Caps ? $.lang.get('chatmoderator.regulars.caps.allowed') : $.lang.get('chatmoderator.regulars.caps.not.allowed')));
|
|
$.log.event(sender + ' changed regulars moderation for caps to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('symbols')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.regulars.toggle.symbols', getModerationFilterStatus(regulars.Symbols)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
regulars.Symbols = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'regularsModerateSymbols', regulars.Symbols);
|
|
$.say($.whisperPrefix(sender) + (regulars.Symbols ? $.lang.get('chatmoderator.regulars.symbols.allowed') : $.lang.get('chatmoderator.regulars.symbols.not.allowed')));
|
|
$.log.event(sender + ' changed regulars moderation for symbols to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('spam')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.regulars.toggle.spam', getModerationFilterStatus(regulars.Spam)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
regulars.Spam = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'regularsModerateSpam', regulars.Spam);
|
|
$.say($.whisperPrefix(sender) + (regulars.Spam ? $.lang.get('chatmoderator.regulars.spam.allowed') : $.lang.get('chatmoderator.regulars.spam.not.allowed')));
|
|
$.log.event(sender + ' changed regulars moderation for spam to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('emotes')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.regulars.toggle.emotes', getModerationFilterStatus(regulars.Emotes)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
regulars.Emotes = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'regularsModerateEmotes', regulars.Emotes);
|
|
$.say($.whisperPrefix(sender) + (regulars.Emotes ? $.lang.get('chatmoderator.regulars.emotes.allowed') : $.lang.get('chatmoderator.regulars.emotes.not.allowed')));
|
|
$.log.event(sender + ' changed regulars moderation for emotes to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('colors')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.regulars.toggle.colors', getModerationFilterStatus(regulars.Colors)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
regulars.Colors = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'regularsModerateColors', regulars.Colors);
|
|
$.say($.whisperPrefix(sender) + (regulars.Colors ? $.lang.get('chatmoderator.regulars.colors.allowed') : $.lang.get('chatmoderator.regulars.colors.not.allowed')));
|
|
$.log.event(sender + ' changed regulars moderation for colors to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('longmessages')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.regulars.toggle.long.msg', getModerationFilterStatus(regulars.LongMsg)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
regulars.LongMsg = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'regularsModerateColors', regulars.LongMsg);
|
|
$.say($.whisperPrefix(sender) + (regulars.LongMsg ? $.lang.get('chatmoderator.regulars.long.messages.allowed') : $.lang.get('chatmoderator.regulars.long.messages.not.allowed')));
|
|
$.log.event(sender + ' changed regulars moderation for long messages to ' + args[2]);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation subscribers [links / caps / symbols / spam / emotes / colors / longmessages / spamtracker / fakepurge] [true / false] - Enable or disable if subscribers get moderated by that filter
|
|
*/
|
|
if (action.equalsIgnoreCase('subscribers')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.subscribers.usage'));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('links')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.subscribers.toggle.link', getModerationFilterStatus(subscribers.Links)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
subscribers.Links = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'subscribersModerateLinks', subscribers.Links);
|
|
$.say($.whisperPrefix(sender) + (subscribers.Links ? $.lang.get('chatmoderator.subscribers.links.allowed') : $.lang.get('chatmoderator.subscribers.links.not.allowed')));
|
|
$.log.event(sender + ' changed subscribers moderation for links to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('caps')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.subscribers.toggle.caps', getModerationFilterStatus(subscribers.Caps)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
subscribers.Caps = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'subscribersModerateCaps', subscribers.Caps);
|
|
$.say($.whisperPrefix(sender) + (subscribers.Caps ? $.lang.get('chatmoderator.subscribers.caps.allowed') : $.lang.get('chatmoderator.subscribers.caps.not.allowed')));
|
|
$.log.event(sender + ' changed subscribers moderation for caps to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('symbols')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.subscribers.toggle.symbols', getModerationFilterStatus(subscribers.Symbols)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
subscribers.Symbols = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'subscribersModerateSymbols', subscribers.Symbols);
|
|
$.say($.whisperPrefix(sender) + (subscribers.Symbols ? $.lang.get('chatmoderator.subscribers.symbols.allowed') : $.lang.get('chatmoderator.subscribers.symbols.not.allowed')));
|
|
$.log.event(sender + ' changed subscribers moderation for symbols to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('spam')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.subscribers.toggle.spam', getModerationFilterStatus(subscribers.Spam)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
subscribers.Spam = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'subscribersModerateSpam', subscribers.Spam);
|
|
$.say($.whisperPrefix(sender) + (subscribers.Spam ? $.lang.get('chatmoderator.subscribers.spam.allowed') : $.lang.get('chatmoderator.subscribers.spam.not.allowed')));
|
|
$.log.event(sender + ' changed subscribers moderation for spam to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('emotes')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.subscribers.toggle.emotes', getModerationFilterStatus(subscribers.Emotes)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
subscribers.Emotes = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'subscribersModerateEmotes', subscribers.Emotes);
|
|
$.say($.whisperPrefix(sender) + (subscribers.Emotes ? $.lang.get('chatmoderator.subscribers.emotes.allowed') : $.lang.get('chatmoderator.subscribers.emotes.not.allowed')));
|
|
$.log.event(sender + ' changed subscribers moderation for emotes to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('colors')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.subscribers.toggle.colors', getModerationFilterStatus(subscribers.Colors)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
subscribers.Colors = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'subscribersModerateColors', subscribers.Colors);
|
|
$.say($.whisperPrefix(sender) + (subscribers.Colors ? $.lang.get('chatmoderator.subscribers.colors.allowed') : $.lang.get('chatmoderator.subscribers.colors.not.allowed')));
|
|
$.log.event(sender + ' changed subscribers moderation for colors to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('longmessages')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.subscribers.toggle.long.msg', getModerationFilterStatus(subscribers.LongMsg)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
subscribers.LongMsg = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'subscribersModerateColors', subscribers.LongMsg);
|
|
$.say($.whisperPrefix(sender) + (subscribers.LongMsg ? $.lang.get('chatmoderator.subscribers.long.messages.allowed') : $.lang.get('chatmoderator.subscribers.long.messages.not.allowed')));
|
|
$.log.event(sender + ' changed subscribers moderation for long messages to ' + args[2]);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation silenttimeout [links / caps / symbols / spam / emotes / colors / longmessages / spamtracker / fakepurge / all] [true / false] - Enable or disable if the warning and timeout message will be said for that filter
|
|
*/
|
|
if (action.equalsIgnoreCase('silenttimeout')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.usage'));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('links')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.toggle.link', getModerationFilterStatus(silentTimeout.Links, true)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
silentTimeout.Links = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'silentTimeoutLinks', silentTimeout.Links);
|
|
$.say($.whisperPrefix(sender) + (silentTimeout.Links ? $.lang.get('chatmoderator.silenttimeout.links.true') : $.lang.get('chatmoderator.silenttimeout.links.false')));
|
|
$.log.event(sender + ' changed silent timeout moderation for links to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('caps')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.toggle.caps', getModerationFilterStatus(silentTimeout.Caps, true)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
silentTimeout.Caps = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'silentTimeoutCaps', silentTimeout.Caps);
|
|
$.say($.whisperPrefix(sender) + (silentTimeout.Caps ? $.lang.get('chatmoderator.silenttimeout.caps.true') : $.lang.get('chatmoderator.silenttimeout.caps.false')));
|
|
$.log.event(sender + ' changed silent timeout moderation for caps to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('symbols')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.toggle.symbols', getModerationFilterStatus(silentTimeout.Symbols, true)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
silentTimeout.Symbols = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'silentTimeoutSymbols', silentTimeout.Symbols);
|
|
$.say($.whisperPrefix(sender) + (silentTimeout.Symbols ? $.lang.get('chatmoderator.silenttimeout.symbols.true') : $.lang.get('chatmoderator.silenttimeout.symbols.false')));
|
|
$.log.event(sender + ' changed silent timeout moderation for symbols to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('spam')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.toggle.spam', getModerationFilterStatus(silentTimeout.Spam, true)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
silentTimeout.Spam = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'silentTimeoutSpam', silentTimeout.Spam);
|
|
$.say($.whisperPrefix(sender) + (silentTimeout.Spam ? $.lang.get('chatmoderator.silenttimeout.spam.true') : $.lang.get('chatmoderator.silenttimeout.spam.false')));
|
|
$.log.event(sender + ' changed silent timeout moderation for spam to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('emotes')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.toggle.emotes', getModerationFilterStatus(silentTimeout.Emotes, true)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
silentTimeout.Emotes = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'silentTimeoutEmotes', silentTimeout.Emotes);
|
|
$.say($.whisperPrefix(sender) + (silentTimeout.Emotes ? $.lang.get('chatmoderator.silenttimeout.emotes.true') : $.lang.get('chatmoderator.silenttimeout.emotes.false')));
|
|
$.log.event(sender + ' changed silent timeout moderation for emotes to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('colors')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.toggle.colors', getModerationFilterStatus(silentTimeout.Colors, true)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
silentTimeout.Colors = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'silentTimeoutColors', silentTimeout.Colors);
|
|
$.say($.whisperPrefix(sender) + (silentTimeout.Colors ? $.lang.get('chatmoderator.silenttimeout.colors.true') : $.lang.get('chatmoderator.silenttimeout.colors.false')));
|
|
$.log.event(sender + ' changed silent timeout moderation for colors to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('longmessages')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.toggle.long.msg', getModerationFilterStatus(silentTimeout.LongMsg, true)));
|
|
return;
|
|
}
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
silentTimeout.LongMsg = args[2].equalsIgnoreCase('true');
|
|
$.inidb.set('chatModerator', 'silentTimeoutColors', silentTimeout.LongMsg);
|
|
$.say($.whisperPrefix(sender) + (silentTimeout.LongMsg ? $.lang.get('chatmoderator.silenttimeout.long.messages.true') : $.lang.get('chatmoderator.silenttimeout.long.messages.false')));
|
|
$.log.event(sender + ' changed silent timeout moderation for long messages to ' + args[2]);
|
|
return;
|
|
}
|
|
} else if (subAction.equalsIgnoreCase('all')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.silenttimeout.usage.all'));
|
|
return;
|
|
}
|
|
|
|
var toggle = args[2].equalsIgnoreCase('true');
|
|
|
|
if (args[2].equalsIgnoreCase('true') || args[2].equalsIgnoreCase('false')) {
|
|
silentTimeout.Links = toggle;
|
|
silentTimeout.Caps = toggle;
|
|
silentTimeout.Symbols = toggle;
|
|
silentTimeout.Spam = toggle;
|
|
silentTimeout.Colors = toggle;
|
|
silentTimeout.LongMsg = toggle;
|
|
silentTimeout.Emotes = toggle;
|
|
silentTimeout.SpamTracker = toggle;
|
|
$.inidb.set('chatModerator', 'silentTimeoutLinks', silentTimeout.Links);
|
|
$.inidb.set('chatModerator', 'silentTimeoutCaps', silentTimeout.Caps);
|
|
$.inidb.set('chatModerator', 'silentTimeoutSymbols', silentTimeout.Symbols);
|
|
$.inidb.set('chatModerator', 'silentTimeoutSpam', silentTimeout.Spam);
|
|
$.inidb.set('chatModerator', 'silentTimeoutEmotes', silentTimeout.Emotes);
|
|
$.inidb.set('chatModerator', 'silentTimeoutLongMsg', silentTimeout.LongMsg);
|
|
$.inidb.set('chatModerator', 'silentTimeoutColors', silentTimeout.Colors);
|
|
$.inidb.set('chatModerator', 'silentTimeoutSpamTacker', silentTimeout.SpamTracker);
|
|
$.inidb.set('chatModerator', 'silentTimeoutFakePurge', silentTimeout.FakePurge);
|
|
$.say($.whisperPrefix(sender) + (toggle ? $.lang.get('chatmoderator.silenttimeout.true') : $.lang.get('chatmoderator.silenttimeout.false')));
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation warningtime [links / caps / symbols / spam / emotes / colors / longmessages / spamtracker / fakepurge] [time in seconds] - Sets a warning time for a filter. This is when the user gets timed out for the first time
|
|
*/
|
|
if (action.equalsIgnoreCase('warningtime')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.usage'));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('links')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.links.usage', warningTime.Links));
|
|
return;
|
|
}
|
|
warningTime.Links = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'warningTimeLinks', warningTime.Links);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.links', warningTime.Links));
|
|
$.log.event(sender + ' changed warning time for links to: ' + warningTime.Links);
|
|
} else if (subAction.equalsIgnoreCase('caps')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.caps.usage', warningTime.Caps));
|
|
return;
|
|
}
|
|
warningTime.Caps = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'warningTimeCaps', warningTime.Caps);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.caps', warningTime.Caps));
|
|
$.log.event(sender + ' changed warning time for caps to: ' + warningTime.Caps);
|
|
} else if (subAction.equalsIgnoreCase('symbols')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.symbols.usage', warningTime.Symbols));
|
|
return;
|
|
}
|
|
warningTime.Symbols = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'warningTimeSymbols', warningTime.Symbols);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.symbols', warningTime.Symbols));
|
|
$.log.event(sender + ' changed warning time for symbols to: ' + warningTime.Symbols);
|
|
} else if (subAction.equalsIgnoreCase('spam')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.spam.usage', warningTime.Spam));
|
|
return;
|
|
}
|
|
warningTime.Spam = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'warningTimeSpam', warningTime.Spam);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.spam', warningTime.Spam));
|
|
$.log.event(sender + ' changed warning time for spam to: ' + warningTime.Spam);
|
|
} else if (subAction.equalsIgnoreCase('emotes')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.emotes.usage', warningTime.Emotes));
|
|
return;
|
|
}
|
|
warningTime.Emotes = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'warningTimeEmotes', warningTime.Emotes);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.emotes', warningTime.Emotes));
|
|
$.log.event(sender + ' changed warning time for emotes to: ' + warningTime.Emotes);
|
|
} else if (subAction.equalsIgnoreCase('colors')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.colors.usage', warningTime.Colors));
|
|
return;
|
|
}
|
|
warningTime.Colors = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'warningTimeColors', warningTime.Colors);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.colors', warningTime.Colors));
|
|
$.log.event(sender + ' changed warning time for colors to: ' + warningTime.Colors);
|
|
} else if (subAction.equalsIgnoreCase('longmessages')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.longmsg.usage', warningTime.LongMsg));
|
|
return;
|
|
}
|
|
warningTime.LongMsg = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'warningTimeLongMsg', warningTime.LongMsg);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningtime.longmsg', warningTime.LongMsg));
|
|
$.log.event(sender + ' changed warning time for longmsg to: ' + warningTime.LongMsg);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation timeouttime [links / caps / symbols / spam / emotes / colors / longmessages / spamtracker / fakepurge] [time in seconds] - Sets a timeout time for a filter. This is when a user gets timed out the for the second time
|
|
*/
|
|
if (action.equalsIgnoreCase('timeouttime')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.usage'));
|
|
return;
|
|
}
|
|
|
|
if (subAction.equalsIgnoreCase('links')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.links.usage', timeoutTime.Links));
|
|
return;
|
|
}
|
|
timeoutTime.Links = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'timeoutTimeLinks', timeoutTime.Links);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.links', timeoutTime.Links));
|
|
$.log.event(sender + ' changed timeout time for links to: ' + timeoutTime.Links);
|
|
} else if (subAction.equalsIgnoreCase('caps')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.caps.usage', timeoutTime.Caps));
|
|
return;
|
|
}
|
|
timeoutTime.Caps = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'timeoutTimeCaps', timeoutTime.Caps);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.caps', timeoutTime.Caps));
|
|
$.log.event(sender + ' changed timeout time for caps to: ' + timeoutTime.Caps);
|
|
} else if (subAction.equalsIgnoreCase('symbols')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.symbols.usage', timeoutTime.Symbols));
|
|
return;
|
|
}
|
|
timeoutTime.Symbols = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'timeoutTimeSymbols', timeoutTime.Symbols);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.symbols', timeoutTime.Symbols));
|
|
$.log.event(sender + ' changed timeout time for symbols to: ' + timeoutTime.Symbols);
|
|
} else if (subAction.equalsIgnoreCase('spam')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.spam.usage', timeoutTime.Spam));
|
|
return;
|
|
}
|
|
timeoutTime.Spam = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'timeoutTimeSpam', timeoutTime.Spam);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.spam', timeoutTime.Spam));
|
|
$.log.event(sender + ' changed timeout time for spam to: ' + timeoutTime.Spam);
|
|
} else if (subAction.equalsIgnoreCase('emotes')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.emotes.usage', timeoutTime.Emotes));
|
|
return;
|
|
}
|
|
timeoutTime.Emotes = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'timeoutTimeEmotes', timeoutTime.Emotes);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.emotes', timeoutTime.Emotes));
|
|
$.log.event(sender + ' changed timeout time for emotes to: ' + timeoutTime.Emotes);
|
|
} else if (subAction.equalsIgnoreCase('colors')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.colors.usage', timeoutTime.Colors));
|
|
return;
|
|
}
|
|
timeoutTime.Colors = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'timeoutTimeColors', timeoutTime.Colors);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.colors', timeoutTime.Colors));
|
|
$.log.event(sender + ' changed timeout time for colors to: ' + timeoutTime.Colors);
|
|
} else if (subAction.equalsIgnoreCase('longmessages')) {
|
|
if (!args[2]) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.longmsg.usage', timeoutTime.LongMsg));
|
|
return;
|
|
}
|
|
timeoutTime.LongMsg = parseInt(args[2]);
|
|
$.inidb.set('chatModerator', 'timeoutTimeLongMsg', timeoutTime.LongMsg);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.timeouttime.longmsg', timeoutTime.LongMsg));
|
|
$.log.event(sender + ' changed timeout time for longmsg to: ' + timeoutTime.LongMsg);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation linksmessage [message] - Sets the link warning message
|
|
*/
|
|
if (action.equalsIgnoreCase('linksmessage')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.link.message.usage'));
|
|
return;
|
|
}
|
|
linksMessage = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'linksMessage', linksMessage);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.link.message.set', linksMessage));
|
|
$.log.event(sender + ' changed the links warning message to "' + linksMessage + '"');
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation capsmessage [message] - Sets the cap warning message
|
|
*/
|
|
if (action.equalsIgnoreCase('capsmessage')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.caps.message.usage'));
|
|
return;
|
|
}
|
|
capsMessage = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'capsMessage', capsMessage);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.caps.message.set', capsMessage));
|
|
$.log.event(sender + ' changed the caps warning message to "' + capsMessage + '"');
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation symbolsmessage [message] - Sets the symbols warning message
|
|
*/
|
|
if (action.equalsIgnoreCase('symbolsmessage')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.symbols.message.usage'));
|
|
return;
|
|
}
|
|
symbolsMessage = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'symbolsMessage', symbolsMessage);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.symbols.message.set', symbolsMessage));
|
|
$.log.event(sender + ' changed the symbols warning message to "' + symbolsMessage + '"');
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation emotesmessage [message] - Sets the emotes warning message
|
|
*/
|
|
if (action.equalsIgnoreCase('emotesmessage')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.emotes.message.usage'));
|
|
return;
|
|
}
|
|
emotesMessage = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'emotesMessage', emotesMessage);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.emotes.message.set', emotesMessage));
|
|
$.log.event(sender + ' changed the emotes warning message to "' + emotesMessage + '"');
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation colorsmessage [message] - Sets the color warning message
|
|
*/
|
|
if (action.equalsIgnoreCase('colorsmessage')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.colors.message.usage'));
|
|
return;
|
|
}
|
|
colorsMessage = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'colorsMessage', colorsMessage);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.colors.message.set', colorsMessage));
|
|
$.log.event(sender + ' changed the colors warning message to "' + colorsMessage + '"');
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation longmsgmessage [message] - Sets the long message warning message
|
|
*/
|
|
if (action.equalsIgnoreCase('longmsgmessage')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.message.message.usage'));
|
|
return;
|
|
}
|
|
longMessageMessage = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'longMessageMessage', longMessageMessage);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.message.message.set', longMessageMessage));
|
|
$.log.event(sender + ' changed the long messages warning message to "' + longMessageMessage + '"');
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation spammessage [message] - Sets the spam warning message
|
|
*/
|
|
if (action.equalsIgnoreCase('spammessage')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spam.message.usage'));
|
|
return;
|
|
}
|
|
spamMessage = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'spamMessage', spamMessage);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spam.message.set', spamMessage));
|
|
$.log.event(sender + ' changed the spam warning message to "' + spamMessage + '"');
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation blacklistmessage [message] - Sets the blacklist warning message that will be default for blacklists you add from chat. This can be custom on the panel.
|
|
*/
|
|
if (action.equalsIgnoreCase('blacklistmessage')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.blacklist.message.usage'));
|
|
return;
|
|
}
|
|
blacklistMessage = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'blacklistMessage', blacklistMessage);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.blacklist.message.set', blacklistMessage));
|
|
$.log.event(sender + ' changed the blacklist warning message to "' + blacklistMessage + '"');
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation blacklistmessageban [message] - Sets the blacklist ban message that will be default for blacklists you add from chat. This can be custom on the panel.
|
|
*/
|
|
if (action.equalsIgnoreCase('blacklistmessageban')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.blacklistban.message.usage'));
|
|
return;
|
|
}
|
|
blacklistMessageBan = argString.replace(action, '').trim();
|
|
$.inidb.set('chatModerator', 'blacklistMessageBan', blacklistMessageBan);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.blacklistban.message.set', blacklistMessageBan));
|
|
$.log.event(sender + ' changed the blacklist ban message to "' + blacklistMessageBan + '"');
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation permittime [seconds] - Sets the permit time in seconds
|
|
*/
|
|
if (action.equalsIgnoreCase('permittime')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.permit.time.usage'));
|
|
return;
|
|
}
|
|
linkPermitTime = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'linkPermitTime', linkPermitTime);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.permit.time.set', linkPermitTime));
|
|
$.log.event(sender + ' changed the link permit time to ' + linkPermitTime + ' seconds');
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation capslimit [amount] - Sets the amount (in percent) of caps allowed in a message
|
|
*/
|
|
if (action.equalsIgnoreCase('capslimit')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.caps.limit.usage'));
|
|
return;
|
|
}
|
|
capsLimitPercent = parseFloat(subAction);
|
|
$.inidb.set('chatModerator', 'capsLimitPercent', capsLimitPercent);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.caps.limit.set', capsLimitPercent));
|
|
$.log.event(sender + ' changed the caps limit to ' + capsLimitPercent);
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation capstriggerlength [amount] - Sets the minimum amount of charaters before checking for caps
|
|
*/
|
|
if (action.equalsIgnoreCase('capstriggerlength')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.caps.trigger.length.usage'));
|
|
return;
|
|
}
|
|
capsTriggerLength = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'capsTriggerLength', capsTriggerLength);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.caps.trigger.length.set', capsTriggerLength));
|
|
$.log.event(sender + ' changed the caps trigger length to ' + capsTriggerLength);
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation spamlimit [amount] - Sets the amount of repeating charaters allowed in a message
|
|
*/
|
|
if (action.equalsIgnoreCase('spamlimit')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spam.limit.usage'));
|
|
return;
|
|
}
|
|
spamLimit = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'spamLimit', spamLimit);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.spam.limit.set', spamLimit));
|
|
$.log.event(sender + ' changed the spam limit to ' + spamLimit);
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation symbolslimit [amount] - Sets the amount (in percent) of symbols allowed in a message
|
|
*/
|
|
if (action.equalsIgnoreCase('symbolslimit')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.symbols.limit.usage'));
|
|
return;
|
|
}
|
|
symbolsLimitPercent = parseFloat(subAction);
|
|
$.inidb.set('chatModerator', 'symbolsLimitPercent', symbolsLimitPercent);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.symbols.limit.set', symbolsLimitPercent));
|
|
$.log.event(sender + ' changed the symbols limit to ' + symbolsLimitPercent);
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation symbolsgrouplimit [amount] - Sets the max amount of grouped symbols allowed in a message
|
|
*/
|
|
if (action.equalsIgnoreCase('symbolsgrouplimit')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.symbols.group.limit.usage'));
|
|
return;
|
|
}
|
|
symbolsGroupLimit = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'symbolsGroupLimit', symbolsGroupLimit);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.symbols.group.limit.set', symbolsGroupLimit));
|
|
$.log.event(sender + ' changed the symbols group limit to ' + symbolsGroupLimit);
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation symbolstriggerlength [amount] - Sets the minimum amount of charaters before checking for symbols
|
|
*/
|
|
if (action.equalsIgnoreCase('symbolsTriggerLength')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.symbols.trigger.length.usage'));
|
|
return;
|
|
}
|
|
|
|
symbolsTriggerLength = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'symbolsTriggerLength', symbolsTriggerLength);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.symbols.trigger.length.set', symbolsTriggerLength));
|
|
$.log.event(sender + ' changed the symbols trigger length to ' + symbolsTriggerLength);
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation emoteslimit [amount] - Sets the amount of emotes allowed in a message
|
|
*/
|
|
if (action.equalsIgnoreCase('emoteslimit')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.emotes.limit.usage'));
|
|
return;
|
|
}
|
|
emotesLimit = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'emotesLimit', emotesLimit);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.emotes.limit.set', emotesLimit));
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation messagecharacterlimit [amount] - Sets the amount of characters allowed in a message
|
|
*/
|
|
if (action.equalsIgnoreCase('messagecharacterlimit')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.message.limit.usage'));
|
|
return;
|
|
}
|
|
longMessageLimit = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'longMessageLimit', longMessageLimit);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.message.limit.set', longMessageLimit));
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation messagecooldown [seconds] - Sets a cooldown in seconds on the timeout messages (minimum is 30 seconds)
|
|
*/
|
|
if (action.equalsIgnoreCase('messagecooldown')) {
|
|
if (!subAction || parseInt(subAction) < 30) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.msgcooldown.usage'));
|
|
return;
|
|
}
|
|
msgCooldownSec = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'msgCooldownSecs', msgCooldownSec);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.msgcooldown.set', msgCooldownSec));
|
|
}
|
|
|
|
/**
|
|
* @commandpath moderation warningresettime [seconds] - Sets how long a user stays on his first offence for (there are 2 offences). Default is 60 minutes (minimum is 30 minutes)
|
|
*/
|
|
if (action.equalsIgnoreCase('warningresettime')) {
|
|
if (!subAction) {
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningresettime.usage'));
|
|
return;
|
|
}
|
|
warningResetTime = parseInt(subAction);
|
|
$.inidb.set('chatModerator', 'warningResetTime', warningResetTime);
|
|
$.say($.whisperPrefix(sender) + $.lang.get('chatmoderator.warningresettime.set', warningResetTime));
|
|
}
|
|
}
|
|
});
|
|
|
|
/**
|
|
* @event initReady
|
|
*/
|
|
$.bind('initReady', function() {
|
|
loadWhiteList();
|
|
loadBlackList();
|
|
|
|
$.registerChatCommand('./core/chatModerator.js', 'permit', 2);
|
|
$.registerChatCommand('./core/chatModerator.js', 'moderation', 1);
|
|
$.registerChatCommand('./core/chatModerator.js', 'mod', 1);
|
|
$.registerChatCommand('./core/chatModerator.js', 'blacklist', 1);
|
|
$.registerChatCommand('./core/chatModerator.js', 'whitelist', 1);
|
|
});
|
|
|
|
/** Export functions to API */
|
|
$.performModeration = performModeration;
|
|
$.timeoutUser = timeoutUserFor;
|
|
$.permitUserLink = permitUser;
|
|
$.reloadModeration = reloadModeration;
|
|
})();
|