// ==UserScript==
// @name MPP tools
// @description Room filter/sorting, clickable chat links
// @version 0.2.1
// @author Jakob
// @include *mppclone.com/*
// @include *multiplayerpiano.com/*
// @include *multiplayerpiano.net/*
// @namespace https://greasyfork.org/users/779512
// @license MIT
// @downloadURL none
// ==/UserScript==
/* globals MPP, $ */
const filter = /wolf|\brp\b|blm|bts|fna?f|anime|role|autoplay|sans|furry|afton|[üğş]|[一-龯]|[\u3131-\uD79D]|[а-я]|[\u3000-\u303F]|[\u3040-\u309F]|[\u30A0-\u30FF]|[\uFF00-\uFFEF]|[\u4E00-\u9FAF]|[\u2605-\u2606]|[\u2190-\u2195]|\u203B/iu;
MPP.client._events.ls.unshift((packet) => {
packet.u = packet.u.filter(({ _id }) => !filter.test(_id));
packet.u.sort((a, b) => {
if (a.banned || b.banned) return 1;
return b.count - a.count;
});
});
MPP.client.on('a', () => {
const msgElem = $('.message').last();
msgElem.html(linkify(escapeHTML(msgElem.text())));
});
function escapeHTML(content) {
const span = document.createElement('span');
span.textContent = content;
return span.innerHTML;
}
function linkify(text) {
let replacedText;
// URLs starting with http://, https://, or ftp://
const replacePattern1 = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
replacedText = text.replace(replacePattern1, '$1');
// URLs starting with "www." (without // before it, or it'd re-link the ones done above).
const replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim;
replacedText = replacedText.replace(replacePattern2, '$1$2');
// Change email addresses to mailto:: links.
const replacePattern3 = /(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)/gim;
replacedText = replacedText.replace(replacePattern3, '$1');
return replacedText;
}