Greasy Fork is available in English.
An assistant that helps you block annoying AI messages.
当前为
// ==UserScript==
// @name iirose AI blcoker
// @namespace http://tampermonkey.net/
// @version 0.3
// @description An assistant that helps you block annoying AI messages.
// @author Keane
// @match https://iirose.com/messages.html
// @grant none
// ==/UserScript==
(function() {
'use strict';
var targetNode = document.getElementsByClassName("fullBox msgholderBox")[0];
const configAI = {childList: true, subtree: true };
var count = 0;
var notificationNode = document.getElementById("hidePanel");
var AINames = ["艾瑞","艾莉","艾薇","艾洛","艾瑟","艾花","艾A","艾B"];
function Init (){
var Unodes = document.getElementsByClassName("PubChatUserInfo");
if(Unodes.length==0){
window.setTimeout(Init, 50);
console.log("loading");
}
else{
var i = 0;
var Unode,userNameStr,msgNodes,AIMsg;
console.log(Unodes.length);
for (i; i<Unodes.length;i++){
Unode = Unodes[i];
userNameStr = Unode.firstElementChild.getAttribute("data-name");
console.log(userNameStr);
if (AINames.includes(userNameStr)){
count += 1;
msgNodes = document.getElementsByClassName("msg");
AIMsg = msgNodes[i];
AIMsg.style.display = "none";
}
}
console.log(count + " AI msgs are blocked");
updateCount();
return;
}
}
function updateCount(){
document.getElementById("toggleButtonBadge").innerHTML = count;
}
// Callback function to execute when mutations are observed
const AIcallback = function(mutationsList, observer) {
// Use traditional 'for loops' for IE 11
for(let mutation of mutationsList) {
if (mutation.type === 'childList') {
//console.log('A child node has been added or removed.');
var nodes = document.getElementsByClassName("PubChatUserInfo");
var node = nodes[nodes.length-1];
var userName = node.firstElementChild.getAttribute("data-name");
console.log(userName);
if (AINames.includes(userName)){
count += 1;
var msgNodes = document.getElementsByClassName("msg");
var lastMsg = msgNodes[nodes.length-1];
lastMsg.style.display = "none";
console.log("An AI msg is blocked");
updateCount();
}
}
}
};
const NotifyCallback = function (mutation, observer){
if (mutation.type === 'childList') {
//console.log('A child node has been added or removed.');
var node = document.getElementById("");
}
}
function displayMsg(){
var i = 0;
var Unode,userNameStr,msgNodes,AIMsg;
var Unodes = document.getElementsByClassName("msg");
for (i; i<Unodes.length;i++){
Unode = Unodes[i];
Unode.style.display = "block";
}
console.log(count + " AI msgs are shown");
//updateCount();
return;
}
// Create an observer instance linked to the callback function
const AIobserver = new MutationObserver(AIcallback);
const NotifyObserver = new MutationObserver(NotifyCallback);
// Start observing the target node for configured mutations
// initial
//NotifyObserver.observe();
Init();
AIobserver.observe(targetNode, configAI);
var toggleButtonDiv = document.createElement('div');
//toggleButtonDiv.class = "hvr-radial-out";
toggleButtonDiv.id = "toggleButtonContainer";
toggleButtonDiv.style.cssText = "position:relative;top:2%;left:20%;width:50px;height:50px;z-index:90001";
var toggleButtonBG = document.createElement('span');
toggleButtonBG.id = "toggleButtonBG";
toggleButtonBG.style.cssText = "position:absolute;width:50px;height:50px;background-color: #FFF;border-radius: 50%;z-index: 0;";
var toggleButtonPic1 = document.createElement("img");
toggleButtonPic1.id = "toggleButtonPic";
toggleButtonPic1.src = "http://r.iirose.com/i/20/5/9/23/0526-ET.png";
toggleButtonPic1.style.cssText = "position:relative;width:45px;height:45px;top:2.5px;left:2.5px;z-index: 1;";
var toggleButtonPic2 = document.createElement("img");
toggleButtonPic2.id = "toggleButtonPic2";
toggleButtonPic2.src = "http://r.iirose.com/i/20/5/10/11/1614-W7.png";
toggleButtonPic2.style.cssText = "position:absolute;width:40px;height:40px;top:5px;left:5px; display:block;z-index: 2;";
var toggleButton = document.createElement("div");
toggleButton.id = "toggleButton";
toggleButton.style.cssText = "position:absolute;width:40px;height:40px;top:5px;left:5px; display:block;z-index: 3;";
//toggleButton.addEventListener("click", toggle);
var toggleButtonBadge = document.createElement('span');
toggleButtonBadge.id = "toggleButtonBadge";
toggleButtonBadge.innerHTML = count.toString();
toggleButtonBadge.style.cssText= "position: absolute;top: -12px; right: -12px;padding: 3px 10px;border-radius: 50%; background: red; color: white;display:block;"
toggleButtonDiv.appendChild(toggleButtonBG);
toggleButtonDiv.appendChild(toggleButtonPic1);
toggleButtonDiv.appendChild(toggleButtonPic2);
toggleButtonDiv.appendChild(toggleButtonBadge);
toggleButtonDiv.appendChild(toggleButton);
document.getElementById("mainContainer").append(toggleButtonDiv);
document.getElementById("toggleButton").onclick=toggle;
function hoverTimer (){
console.log("mouseover");
setTimeoutConst = setTimeout(function(){
document.getElementById('toggleButtonContainer').style.display = "none";
return;
}, delay);
}
function hoverTimerStopper(){
console.log("mouseleave");
clearTimeout(setTimeoutConst );
}
var delay=2000, setTimeoutConst;
var divNode = document.getElementById('toggleButtonContainer');
divNode.onmouseenter = hoverTimer;
divNode.onmouseleave = hoverTimerStopper;
// var style = document.createElement('style');
//add css
/*var css = '#toggleButtonBG:hover{ background-color: red }';
var style = document.createElement('style');
if (style.styleSheet) {
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
*/
function toggle(){
//console.log(document.getElementById("toggleButtonPic2").style.display);
if (document.getElementById("toggleButtonPic2").style.display=="block"){
document.getElementById("toggleButtonPic2").style.display="none";
document.getElementById("toggleButtonBadge").style.display="none";
AIobserver.disconnect();
displayMsg();
console.log("Not Blocking AI Msg Now.");
}
else if (document.getElementById("toggleButtonPic2").style.display=="none"){
document.getElementById("toggleButtonPic2").style.display="block";
document.getElementById("toggleButtonBadge").style.display="block";
count=0;
Init();
AIobserver.observe(targetNode, config);
console.log(" Blocking AI Msg Now.");
}
else {
document.getElementById("toggleButtonPic2").style.display="block";
}
}
})();