diff --git a/Plugins/ChatFilter/ChatFilter.plugin.js b/Plugins/ChatFilter/ChatFilter.plugin.js
index 367ee481ef..6f6163d9c7 100644
--- a/Plugins/ChatFilter/ChatFilter.plugin.js
+++ b/Plugins/ChatFilter/ChatFilter.plugin.js
@@ -32,7 +32,7 @@ class ChatFilter {
getDescription () {return "Allows the user to censor words or block complete messages based on words in the chatwindow.";}
- getVersion () {return "3.2.6";}
+ getVersion () {return "3.2.7";}
getAuthor () {return "DevilBro";}
@@ -169,7 +169,7 @@ class ChatFilter {
stop () {
if (typeof BDFDB === "object") {
- document.querySelectorAll(`${BDFDB.dotCN.messagemarkup}.blocked, ${BDFDB.dotCN.messageaccessory}.censored, ${BDFDB.dotCN.messagemarkup}.blocked, ${BDFDB.dotCN.messageaccessory}.censored`).forEach(message => {
+ document.querySelectorAll(`${BDFDB.dotCN.messagemarkup}.blocked, ${BDFDB.dotCN.messageaccessory}.blocked, ${BDFDB.dotCN.messagemarkup}.censored, ${BDFDB.dotCN.messageaccessory}.censored`).forEach(message => {
this.resetMessage(message);
});
@@ -300,7 +300,7 @@ class ChatFilter {
}
hideMessage (message) {
- if (!$(message).hasClass("blocked") && !$(message).hasClass("censored")) {
+ if (message.tagName && !message.classList.contains("blocked") && !message.classList.contains("censored")) {
var orightml = $(message).html();
var newhtml = "";
@@ -327,8 +327,7 @@ class ChatFilter {
var blockedReplace = blockedWords[bWord].empty ? "" : (blockedWords[bWord].replace || replaces.blocked);
var reg = this.createReg(bWord, blockedWords[bWord]);
strings.forEach(string => {
- let emojiname = this.getEmojiName(string);
- if (emojiname && reg.test(emojiname)) blocked = true;
+ if (this.testForEmoji(string, reg)) blocked = true;
else if (string.indexOf(' 0 ? string.split('src="')[1] : null;
url = url ? url.split('"')[0] : null;
@@ -355,12 +354,13 @@ class ChatFilter {
}
else {
var censoredWords = BDFDB.loadData("censored", this, "words");
+ var censored = false;
for (let cWord in censoredWords) {
var censoredReplace = censoredWords[cWord].empty ? "" : (censoredWords[cWord].replace || replaces.censored);
var reg = this.createReg(cWord, censoredWords[cWord]);
strings.forEach((string,i) => {
- let emojiname = this.getEmojiName(string);
- if (emojiname && reg.test(emojiname)) {
+ if (this.testForEmoji(string, reg)) {
+ censored = true;
strings[i] = BDFDB.encodeToHTML(censoredReplace);
if (strings[i+1] && strings[i+1].indexOf(" 0 ? string.split('src="')[1] : null;
url = url ? url.split('"')[0] : null;
if (reg.test(url)) {
+ censored = true;
strings = [BDFDB.encodeToHTML(censoredReplace)];
}
}
else if (string.indexOf("<") != 0) {
var newstring = [];
string.replace(/\n/g, " \n ").split(" ").forEach((word) => {
- newstring.push(word && reg.test(word) ? BDFDB.encodeToHTML(censoredReplace) : word);
+ if (word && reg.test(word)) {
+ censored = true;
+ newstring.push(BDFDB.encodeToHTML(censoredReplace));
+ }
+ else {
+ newstring.push(word);
+ }
});
strings[i] = newstring.join(" ");
}
});
}
- newhtml = strings.join("");
-
- if (newhtml != orightml) {
+ if (censored) {
+ newhtml = strings.join("").replace(/\s\n\s/g, "\n");
$(message)
.html(newhtml)
.addClass("censored")
@@ -405,12 +411,12 @@ class ChatFilter {
return new RegExp(BDFDB.encodeToHTML(config.exact ? "^" + BDFDB.regEscape(word) + "$" : BDFDB.regEscape(word)), config.case ? "" : "i");
}
- getEmojiName (string) {
+ testForEmoji (string, reg) {
if (string.indexOf(" -1 || string.indexOf('class="emoji') > -1)) {
- var emojiname = string.split('alt="').length > 0 ? string.split('alt="')[1] : null;
- emojiname = emojiname ? emojiname.split('" src')[0] : null;
- return emojiname = emojiname ? emojiname.replace(new RegExp(":", 'g'), "") : null;
+ var emojiname = string.split('alt="').length > 0 ? string.split('alt="')[1].split('"')[0] : null;
+ return emojiname = !emojiname ? false : (reg.test(emojiname) || reg.test(emojiname.replace(/:/g, "")));
}
+ return false;
}
resetMessage (message) {