YouTube chat filter&report

filter&report

目前為 2022-04-06 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         YouTube chat filter&report
// @namespace    null
// @version      1.0.9
// @description  filter&report
// @author       null
// @match        *://*.youtube.com/*
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_addStyle
// ==/UserScript==
(function () {
    'use strict';
    if (window.location.pathname !== "/live_chat"&&window.location.pathname !== "/live_chat_replay") return;
    if (window.location.pathname!=window.parent.location.pathname)window.parent.document.querySelector("YTD-LIVE-CHAT-FRAME#chat").style.minHeight= "850px";
    let language = navigator.language
    const TNT = GM_registerMenuCommand(language_("Translate","翻译","翻訳"), () => {
        let sc=window.parent.document.getElementById("sc-translator-shadow")||document.getElementById("sc-translator-shadow")
        if (sc){
            alert(language_("Translation:On","翻译功能:开","翻訳機能:On"))
            let EliteMiko=sc.shadowRoot.childNodes[4].querySelector(".st-result")
            let scc = new MutationObserver((node) => {
                node.forEach((me)=>{
                    me.addedNodes.forEach((you)=>{
                        if (you?.children?.length==1&&you?.children[0].nodeName=="SPAN"){
                            let selection = window.getSelection ? window.getSelection() : window.document.getSelection();
                            let messs=selection.focusNode
                            if(messs.id=="message"||!messs.nextSibling){
                                const Translate= messs.cloneNode()
                                messs.style.display = "none"
                                Translate.id="Translate"
                                Translate.style.color="rgb(0, 200, 255)"
                                Translate.innerText = you.innerText
                                messs.after(Translate)
                            }else if(messs.id="key_mes_p"){
                                messs.style.color="rgb(0, 200, 255)"
                                messs.innerText = you.innerText
                            }
                        }
                    })
                })
            });
            scc.disconnect();
            scc.observe(EliteMiko,{
                childList: true
            });
        }else{
            alert(language_("ScTranslate is not installed","未安装sc翻译插件","ScTranslateがインストールされていません"))
        }
    });
    let IsMod=document.querySelector("div#top")?.querySelector("#author-name")
    let IsOwner
    if(IsMod){
        IsMod.className=="owner style-scope yt-live-chat-author-chip"?IsOwner=true:IsOwner=false
        IsMod.className=="moderator style-scope yt-live-chat-author-chip"?IsMod=true:IsMod=false
    }else {
    IsMod=false
    }
    const mod_ = GM_registerMenuCommand(language_("Moderator Mode","主持人模式","モデレーターモード"), () => {
        if(!IsMod){
            alert(language_("you are not the Mod","你不是主持人","モデレータではない"))
            mod=0
            return
        }
        mod?mod=0:mod=1
        document.querySelector("#Auto_Report").checked=false
        alert(mod?language_("Mod Mode:ON","主持人模式:ON","モデレーターモード:ON"):language_("Mod Mode:OFF","主持人模式:OFF","モデレーターモード:OFF"))
    });
    const SET = GM_registerMenuCommand(language_("Detailed settings","详细设置","詳細設定"), () => {
        Set_()
    });
    let Keylist_trun = [],Anemati=[],Keylist_Re=[],node_mod=[],Node=[],img_pvp=[],imgg = [],S_Username = []
    let ONOff=true,Script_ISrun=false,Achan=null,Bchan=null,Mod_dell=null,TTK=false,ClickBlock=false;
    let log_1=0,log_2=0,log_3=0,log_4=0,log_5=0,mod=0,outtime=1,rami=0,nethe=0,wait = 10000,ctm = 0,Ch_n=0 ,Ch_m = 0,spam=17,Mode=1,auto_p = 0,BlockIds=0
    let prpr,Kirara,Ame,color,Interval,Yagoo,Itemslist,color_ames,end,aki,korone,error,ISmanual,auto_p_n,log1,log2,log3,log4,log5
    let Key_l =localStorage.getItem("Key_l")||16 , BBQ =localStorage.getItem("BBQ")||3 ,Isblock=localStorage.getItem("IsBlock"),Time = localStorage.getItem("Time")||20000,Isreplace=localStorage.getItem("Isreplace")||"checked"
    let re = /[\u1F601-\u1F64F]|[\u0E00-\u0E7F]|<img.*src.*alt.*>|\[.{1,5}\]|[\[\]\-\_\,\!\|\.\~\`\(\)\#\$\%\^\&\*\+\-\{\}\:\;\"\<\>\@\?\\\/\s\=]|\’|\'/g
    GM_addStyle(".Report_Item{cursor:pointer;background-color:#0000;border-bottom:1px;border-style:solid;border-bottom-color:#22ff028c;overflow:auto;overflow-x:hidden;line-height :25px}")
    GM_addStyle(".P_key{cursor:pointer;text-indent:25px;width:100%;height:100%;display:inline-block;font-size:12px}")
    GM_addStyle("#key_mes{height:100%;overflow :scroll;overflow-x:auto}")
    GM_addStyle(".Title_top{width:100%;height:100%;text-align:center;display:inline-block;cursor:pointer}")
    GM_addStyle("#keyword_frame{overflow-y:auto;width:100%;height:100%;max-height:350px;overflow-x:hidden}")
    GM_addStyle("#automes{display:inline-flex;height:175px;width: 100%;flex-direction:row}")
    GM_addStyle("#img_box{overflow-y:auto;width:40%;height:100%;flex-grow:0}")
    GM_addStyle("#mes_box{overflow-y:auto;width:40%;height:100%;flex-grow:1;display:inline-flex;flex-direction:column}")
    GM_addStyle(".gura{overflow:auto;overflow-x:hidden;max-height:149px;line-height :17px}")
    GM_addStyle("#new_div_chat{overflow-y:auto;height:175px;overflow:scroll}")
    GM_addStyle(".Calliope{line-height:35px;height:20%;width:100%;display:inline-block}")
    GM_addStyle(".log{line-height:20px;height:20px;width:100%}")
    GM_addStyle("#settingitem{user-select:none}")
    GM_addStyle("#ChatMes,#Log,#dad:hover{cursor:pointer}")
    GM_addStyle(".pro{color: #93d2ff;font-size: 13px;text-align: center;line-height:15px}")
    GM_addStyle(".ppts{border-bottom:1px solid #666;font-size: 14px;line-height: 25px;text-indent:25px;color: #aaaaaa;}")
    GM_addStyle("#Set_off{font-size: 14px;line-height: 21px;text-align:center}")
    function css_white(){
        color = "rgba(0, 0, 0, 0.23)"
        GM_addStyle(".set_list{width:25%;height:25px;display:inline-block;background-color:rgba(75, 75, 75, 0.2);text-align:center;user-select:none;line-height:25px;cursor:pointer}")
        GM_addStyle(".set_item_list{height :25px;background-color:rgba(0, 0, 0, 0.23);text-indent: 10px;font-size:16px;line-height:25px;cursor:pointer;;font-size:14px}")
        GM_addStyle(".MainWindow_css{height:250px;overflow:hidden;border-bottom:1px;border-style:solid;border-bottom-color:#0241ff;display:inline-flex;flex-direction:column;overflow:hidden}")
        GM_addStyle("textarea{resize: none;width:100%;height:169px;overflow-x:hidden;border-left:0px;border-top:0px;border-right:0px;border-bottom:0px;color:#000000;background-color:#f9f9f9}")//
        GM_addStyle(".auto_mes_p{padding: 2px 0;line-height: 18px;border-bottom:1px;border-style:solid;border-bottom-color:#00000075}")
        GM_addStyle("#other{overflow-y:auto;width:20%;height:100%;flex-grow:0;background-color:rgba(0, 0, 0, 0.23);text-align:center}")
    }
    function css_black(){
        color = "#4b4b4b"
        GM_addStyle(".set_list{width:25%;height:25px;display:inline-block;background-color:#363333;text-align:center;user-select:none;line-height:25px;cursor:pointer}")
        GM_addStyle(".set_item_list{height :25px;background-color:#4b4b4b;text-indent: 10px;font-size:16px;;line-height:25px;cursor:pointer;font-size:14px}")
        GM_addStyle(".MainWindow_css{height:250px;overflow:hidden;border-bottom:1px;border-style:solid;border-bottom-color:#ff00006e;display:inline-flex;flex-direction:column;overflow:hidden}")
        GM_addStyle("textarea{resize: none;width:100%;height:169px;overflow-x:hidden;border-left:0px;border-top:0px;border-right:0px;border-bottom:0px;color:#FFFFFF;background-color:#181818}")//
        GM_addStyle(".auto_mes_p{padding: 2px 0;line-height: 18px;border-bottom:1px;border-style:solid;border-bottom-color:#cec0ff78}")
        GM_addStyle("#other{overflow-y:auto;width:20%;height:100%;flex-grow:0;background-color:#4b4b4b;text-align:center}")
    }
    /////////////////////////////////////////////////language/////////////////////////////////////
    function language_(en,zh,jp) {
        switch (language) {
            case "en-US":
                return en
            case "zh-CN":
                return zh
            case "ja":
                return jp
            default:
                return en
        }
    }
    //////////////////////////////////////////////////////////////////////////////////////////////
    launch()
    //mod=IsMod?1:0
    function launch() {
        const New_Chat_Frame = document.querySelector("#contents.yt-live-chat-renderer");
        if (New_Chat_Frame){
            switch (window.getComputedStyle(New_Chat_Frame, null)?.getPropertyValue('border-color'))
            {
                case "rgb(255, 255, 255)":
                    css_black()
                    color_ames="#ffffff"
                    break;
                case "rgb(3, 3, 3)":
                    css_white()
                    color_ames="#000000"
                    break;
            }
        }
        Itemslist = document.querySelector("#items.yt-live-chat-item-list-renderer");
        if (!Itemslist) return;
        const DMM=localStorage.getItem("IMGitem");
        const Important_Frame = document.createElement("div");
        Important_Frame.id = "MainWindow";
        Important_Frame.setAttribute("class","MainWindow_css");
        const shion = document.createElement("div");
        const Setting = document.createElement("div");
        const Settinglist = document.createElement("div");
        const SettingItem = document.createElement("div")
        const O_Item = document.createElement("div");
        const shion_p = document.createElement("span");
        O_Item.style.flexGrow="1";
        O_Item.style.height = "175px";
        Setting.id = "setting";
        shion.id="state"
        shion.setAttribute("class","set_item_list")
        shion_p.id="tex"
        Settinglist.id = "settinglist";
        SettingItem.id = "settingitem";
        for (let i=0;i<4;i++){
            const set_List = document.createElement("div");
            const set_Item_List = document.createElement("div");
            const Title = document.createElement("span");
            Title.setAttribute("class","Title_top");
            set_List.setAttribute("class","set_list");
            set_Item_List.setAttribute("class","set_item_list");
            set_Item_List.style.display = "none";
            switch (i)
            {
                case 0:
                    set_List.id = "Input_Key_List";
                    set_Item_List.id = "Input_Key_Item";
                    set_Item_List.style.display = "";
                    Title.innerHTML = language_("Keys","关键词","キーワード")
                    Title.id = "T1";
                    break;
                case 1:
                    set_List.id = "gauging";
                    set_Item_List.id = "gauging_Item";
                    Title.innerHTML = language_("Comment","留言","コメント");
                    Title.id = "T2";
                    break;
                case 2:
                    set_List.id = "report_T";
                    set_Item_List.id = "report_Item";
                    Title.innerHTML = language_("Report","举报","報告");
                    Title.id = "T3";
                    break;
                case 3:
                    set_List.id= "Speech";
                    set_Item_List.id = "speech_Item";
                    Title.innerHTML = language_("Speech","报告","スピーチ");
                    Title.id = "T4";
                    break;
            }
            Settinglist.appendChild(set_List);
            set_List.appendChild(Title);
            SettingItem.appendChild(set_Item_List);
        }
        shion_p.innerText = language_("Save keywords to local text for next use","手动保存关键词到本地文本文档以备下次使用","キーワードをローカルテキストに保存してください");
        shion.appendChild(shion_p);
        Setting.appendChild(Settinglist);
        Setting.appendChild(SettingItem);
        Important_Frame.appendChild(Setting);
        Important_Frame.appendChild(shion);
        New_Chat_Frame.before(Important_Frame);
        const MainWindow = document.getElementById("MainWindow");
        const self= document.querySelector("div#top")?.querySelector("yt-live-chat-author-chip")
        let myname =self?.querySelector("#author-name")?.innerText
        const Inputs = document.getElementById("Input_Key_Item");
        const Report_Frame= document.getElementById("report_Item");
        const gauging_Item = document.getElementById("gauging_Item");
        const speech_Item= document.getElementById("speech_Item");
        const speech_Item_0 = document.createElement("div");
        const speech_Item_p1= document.createElement("span");
        const speech_Item_p2= document.createElement("span");
        const speech_Item_p3= document.createElement("span");
        Inputs.style.display="none"
        gauging_Item.style.display=""
        speech_Item_0.id="Time_Set"
        speech_Item_0.appendChild(speech_Item_p1)
        speech_Item_0.appendChild(speech_Item_p2)
        speech_Item_0.appendChild(speech_Item_p3)
        speech_Item_p1.innerText= language_("Interval:(","间隔:(","間隔:(");
        speech_Item_p2.id = "Ti"
        speech_Item_p2.setAttribute('contenteditable', 'true')
        speech_Item_p2.innerText= Time/1000
        speech_Item_p3.innerText= language_(")Sec",")秒",")Sec");
        speech_Item.appendChild(speech_Item_0);
        speech_Item_p2.addEventListener('keydown', function (e) {if(e.keyCode == 13)speech_Item_p2.blur()})
        const TItle_1= document.getElementById("Input_Key_List");
        const TItle_2= document.getElementById("gauging");
        const TItle_3= document.getElementById("report_T");
        const TItle_4= document.getElementById("Speech");
        const Report_SET = document.createElement("div");
        const Report_key_mes = document.createElement("div");
        const gauging_0 = document.createElement("div");
        const gauging_1 = document.createElement("div");
        const gauging_00 = document.createElement("span");
        const gauging_01 = document.createElement("span");
        const gauging_02 = document.createElement("span");
        const gauging_10 = document.createElement("span");
        const gauging_11 = document.createElement("span");
        const gauging_12 = document.createElement("span");
        gauging_0 .style.display = "inline-block";
        gauging_0.id = "Key_l"
        gauging_00.innerText = language_("Filter comment greater than:","过滤出大于这个数的留言:","コメントの長さ:");
        gauging_01.innerText = Key_l
        gauging_01.setAttribute('contenteditable', 'true')
        gauging_01.addEventListener('keydown', function (e) {if(e.keyCode == 13)gauging_01.blur()})
        gauging_0 .style.textIndent="0px";
        gauging_1.style.display = "inline-block";
        gauging_1.id = "BBQ"
        gauging_10.innerText = language_("Standard","标准:","標準:");
        gauging_11.innerText = BBQ
        gauging_11.setAttribute('contenteditable', 'true')
        gauging_12.innerText = ""
        gauging_11.addEventListener('keydown', function (e) {if(e.keyCode == 13)gauging_11.blur()})
        gauging_0.appendChild(gauging_00);
        gauging_0.appendChild(gauging_01);
        gauging_0.appendChild(gauging_02);
        gauging_1.appendChild(gauging_10);
        gauging_1.appendChild(gauging_11);
        gauging_1.appendChild(gauging_12);
        gauging_Item.appendChild(gauging_0);
        gauging_Item.appendChild(gauging_1);
        Report_SET.id = "report_";
        Report_SET.style.display="inline-flex";
        Report_SET.style.textIndent= "0px";
        const Report_SET_0 = document.createElement("span");
        const Report_SET_1 = document.createElement("span");
        const Report_SET_2 = document.createElement("div");
        const Report_SET_2_p = document.createElement("span");
        const Report_SET_0_Input = document.createElement("input");
        Report_SET_0_Input.type="checkbox";
        Report_SET_0_Input.id = "Auto_Report";
        Report_SET_0.innerHTML= language_("Simplification","流程简化","簡素化");
        Report_SET_0.appendChild(Report_SET_0_Input);
        Report_SET_1.innerHTML= language_("👈On","👈开启","👈On");
        Report_SET_1.id = "ReportSET"
        Report_SET_2_p.innerHTML=language_("👉Automatic👈","👉自动👈","👉自動👈");
        Report_SET_2_p.id = "dad"
        Report_SET_2.style.textAlign="center";
        Report_SET_2.style.display="none"
        Report_SET_2.id = "A_Report"
        Report_key_mes.id = "key_mes";
        Report_key_mes.style.display = "none";
        Report_SET_2.appendChild(Report_SET_2_p);
        Report_SET.appendChild(Report_SET_0);
        Report_SET.appendChild(Report_SET_1);
        Report_Frame.appendChild(Report_SET);
        Report_SET.appendChild(Report_SET_2);
        MainWindow.appendChild(O_Item);
        const New_Chat = document.createElement("div");
        const Keyword_Frame = document.createElement("div");
        const Auto_mes = document.createElement("div");
        const Keyword_Frame_Textarea = document.createElement("textarea");
        Keyword_Frame_Textarea.id = "keys"
        const Auto_mes_L = document.createElement("div");
        Auto_mes_L.id = "img_box";
        const Auto_mes_O = document.createElement("div");
        const Auto_mes_O_P = document.createElement("span");
        const Auto_mes_R= document.createElement("div");
        const Auto_mes_log= document.createElement("div");
        const Auto_mes_log_x= document.createElement("div");
        Auto_mes_log.style.display="none"
        Auto_mes_log.style.width="40%"
        Auto_mes_O.id = "other";
        Auto_mes_O_P.innerHTML = language_("Ready","就绪","就绪");
        Auto_mes_O_P.id= "TTi"
        Auto_mes_O_P.style.textIndent="25px"
        Auto_mes_O_P.style.cursor="pointer"
        Auto_mes_log.appendChild(Auto_mes_log_x);
        self&&self.appendChild(Auto_mes_O_P);
        Auto_mes_R.id = "mes_box";
        Auto_mes.id = "automes";
        Auto_mes.appendChild(Auto_mes_L);
        Auto_mes.appendChild(Auto_mes_O);
        Auto_mes.appendChild(Auto_mes_R);
        Auto_mes.appendChild(Auto_mes_log);
        Auto_mes.style.display = "none";
        New_Chat.id = "new_div_chat";
        Keyword_Frame.style.display = "none";
        Keyword_Frame.id = "keyword_frame";
        Keyword_Frame_Textarea.placeholder = language_("Paste keywords here and click Add","复制关键词到这后点添加","ここにキーワードを貼り付けて、[Add]をクリックします");
        Keyword_Frame.appendChild(Keyword_Frame_Textarea);
        O_Item.appendChild(Keyword_Frame);
        O_Item.appendChild(New_Chat);
        O_Item.appendChild(Report_key_mes);
        O_Item.appendChild(Auto_mes);
        let Chat=document.getElementById("new_div_chat")
        for (let i=0;i<5;i++){
            const Mori = document.createElement("div");
            const Mori_p = document.createElement("span");
            Mori_p.setAttribute('class', 'Calliope')
            switch (i)
            {
                case 0:
                    Mori_p.id = "ChatMes"
                    Mori_p.innerText=language_("Call","Call","Call");
                    break;
                case 1:
                    Mori_p.id = "Log"
                    Mori_p.innerText=language_("Data","Data","Data");
                    break;
            }
            Mori.appendChild(Mori_p);
            Auto_mes_O.appendChild(Mori);
        }
        for (let i=0;i<5;i++){
            const Log_p = document.createElement("span");
            const Log_p_0 = document.createElement("span");
            const Log_div = document.createElement("div")
            Log_p.setAttribute('class', 'log')
            Log_p_0.id = "Log_"+(i+1)
            switch (i)
            {
                case 0:
                    Log_p.innerText=language_("Spam:","Spam:","Spam:");
                    Log_p_0.innerText = 0
                    break;
                case 1:
                    Log_p.innerText=language_("Account:","Account:","Account:");
                    Log_p_0.innerText = ""
                    break;
            }
            Log_div.appendChild(Log_p);
            Log_div.appendChild(Log_p_0)
            Auto_mes_log_x.appendChild(Log_div);
        }
        log1 = document.getElementById("Log_1")
        log2 = document.getElementById("Log_2")
        log2.style.overflowY="scroll"
        log2.style.height="135px";
        log2.innerText = BlockIds
        log3 = document.getElementById("Log_3")
        log4 = document.getElementById("Log_4")
        log5 = document.getElementById("Log_5")
        if (DMM){img_pvp=DMM.split("|")
                 for (let item of img_pvp){
                     imgg=item.split(",")
                     imgset(imgg)
                     auto_p += 1
                 }
                }
        const Key_Frame = document.getElementById("keyword_frame")
        const Add_Input_Key = document.createElement("input")
        Add_Input_Key.id = "add_i_key";
        Add_Input_Key.type = "text";
        Add_Input_Key.placeholder = language_("Enter keyword","输入单条关键词","キーワードを入力してください");
        Add_Input_Key.maxlength = "500"
        Inputs.appendChild(Add_Input_Key)
        const Get_Key = document.getElementsByClassName("add_key")
        const Add_Button = document.createElement("input")
        Add_Button.type = "button"
        Add_Button.value = "Add"
        Add_Button.id = "add_b_key"
        Inputs.appendChild(Add_Button)
        const Del_Button = document.createElement("input")
        Del_Button.type = "button"
        Del_Button.value = "Delete:"+Keylist_Re.length
        Del_Button.id = "delete_key"
        Inputs.appendChild(Del_Button)
        const Addrun = document.getElementById("overflow")
        const Re = document.createElement("input")
        Re.type = "button"
        Re.id = "on_off"
        Re.value = language_("Hide","Hide","Hide");
        Addrun.before(Re)
        let counter = document.createElement("span")
        counter.id = "miko"
        counter.innerHTML = New_Chat.querySelectorAll("yt-live-chat-text-message-renderer").length
        let Report_l = document.createElement("span")
        Report_l.id = "nrn"
        Report_l.innerHTML = log_2
        let kanata = document.createElement("div")
        kanata.style.display="inline-block"
        let kanata_1 = document.createElement("div")
        kanata.style.cssText+="font-size:12px"
        Re.before(kanata)
        const rami_1 = document.createElement("span")
        const rami_2 = document.createElement("span")
        const rami_T = document.createElement("span")
        rami_1.innerText="MSG:"
        rami_2.innerText="AUTO:"
        rami_T.innerText="=>"
        rami_T.style.cssText+="font-size:15px"
        rami_T.title="Click to Arrange"
        rami_T.style.cssText+="user-select:none;cursor:pointer"
        kanata_1.appendChild(rami_1)
        kanata_1.appendChild(counter)
        kanata_1.appendChild(rami_T)
        kanata_1.appendChild(rami_2)
        kanata_1.appendChild(Report_l)
        kanata.appendChild(kanata_1)
        /////////////////////////Detailed settings /////////////////////////////////
        let bo =document.querySelector("yt-live-chat-app")
        let TOP_div = document.createElement("div")
        TOP_div.id = "TOPdiv"
        TOP_div.style.position="absolute"
        TOP_div.style.background="rgba(33, 33, 33,0.92)"
        TOP_div.style.display = "none";
        TOP_div.innerHTML+='<div style="height: 5%;"><div style="color: rgb(255, 255, 255);text-align:right;padding-top: 5px;padding-right: 10px;"><span id="Set_off" style="display: inline-block;cursor:pointer;width: 21px;height: 21px">×</span></div></div>'
        TOP_div.innerHTML+='<div style="height: 25px;width: 100%;display: inline-flex"><div class="ppts" style="width: 75%;"><span>'+
            language_("Report/Remove and Block","举报/删除并拉黑","レポート/削除とブロック")
            +'</span></div><div class="ppts" style="width: 25%;"><input id="ISblock" type="checkbox" '+Isblock+'></div></div>'
        TOP_div.innerHTML+='<div style="height: 25px;width: 100%;display: inline-flex"><div class="ppts" style="width: 75%;"><span>'+
            language_("Replace chat comments","替换聊天评论","チャットコメントを置き換える")
            +'</span></div><div class="ppts" style="width: 25%;"><input id="ISreplace" type="checkbox" '+Isreplace+'></div></div>'
        bo.appendChild(TOP_div)
        let pro = document.createElement("div")
        pro.id = "Pro"
        pro.style.display = "none";
        pro.style.position="absolute"
        pro.style.background="rgba(0, 0, 0,0)"
        MainWindow.appendChild(pro)
        pro.innerHTML = '<div style="height: 235px;"></div><div id="PRO_1" class="pro" style="height: 15px;background:rgba(75,75,75,0.7)"></div>'
        /////////////////////function////////////////////////////////////////////////
        function imgset(item){
            let Auto_mes_R = document.querySelector("#mes_box")
            const Auto_mes_P = document.createElement("span")
            Auto_mes_R.appendChild(Auto_mes_P)
            auto_p_n= "auto_p"+auto_p
            Auto_mes_P.id = "auto_p"+auto_p
            Auto_mes_P.setAttribute('contenteditable', 'true')
            Auto_mes_P.setAttribute('class', 'auto_mes_p')
            Auto_mes_P.onblur = function (){if (Auto_mes_P.innerHTML=="") Auto_mes_P.remove()}
            for(let img of item ){
                Auto_mes_P.innerHTML=img
            }
        }
        function Report(mes,cdk,key_i,index){
            let T_1 = document.createElement("div")
            let T_2 = document.createElement("div")
            let p_1 = document.createElement("span")
            let ID_key= "key_uid"+key_i
            let Mes_key= "mes_uid"+key_i
            T_1.id =ID_key
            T_2.id = Mes_key
            T_2.setAttribute('class', 'gura')
            T_2.style.display = "none"
            T_1.setAttribute("class","Report_Item")
            Keylist_Re.push(cdk)
            DellArray("",Keylist_Re)
            Keylist_Re=[...new Set(Keylist_Re)]
            p_1.innerText=Keylist_trun[key_i].replace(/(\.\*)/g, "")
            p_1.id = "key_mes_p"
            p_1.setAttribute("class","P_key")
            T_1.appendChild(p_1)
            node_mod.unshift(mes)
            setTimeout(()=>{
                Report_l.innerHTML=Report_key_mes.querySelectorAll("yt-live-chat-text-message-renderer").length
                mes.querySelector("#message").removeAttribute("style")
                mes.querySelector("#message").style.display = "";
                mes.querySelector("#ZOO").style.display="none"
                let Mes_list = document.getElementById(Mes_key);
                if(Mes_list){
                    Mes_list.appendChild(mes)
                }else {
                    T_2.appendChild(mes)
                    T_1.appendChild(T_2)
                    Report_key_mes.appendChild(T_1)
                }
            },index*1000+5000)
        }
        function pekoname(name,mes_,index,mes){
            let NCL= Node
            for (let i=0,l=NCL.length;i<l;i++){
                if (NCL[i].querySelector("#author-name").innerText==name){
                    let Cdk=NCL[i].querySelector("#message").innerHTML.replace(re, "")
                    let cdk=GetKey(Cdk)
                    Cdk!=mes_&&AddKey_List(cdk,Cdk)
                    Keylist_Re.push(cdk)
                    DellArray("",Keylist_Re)
                    Keylist_Re=[...new Set(Keylist_Re)];
                    Report(NCL[i],cdk,key_i(cdk),-3)
                    Mod(NCL[i],index)
                    break
                }
            }
        }
        function AddItems(mes,uername,key,Ch_m,get_time,index) {
            let gdp = document.createElement("div")
            let key_list = document.createElement("div")
            let gdp_in_1 = document.createElement("div")
            let gdp_in_2 = document.createElement("div")
            let gdp_in_3 = document.createElement("div")
            let gdp_in_4 = document.createElement("div")
            gdp_in_1.id = "TOP"
            gdp_in_2.id = "Fold"
            gdp_in_2.style.display = "none"
            gdp_in_3.id = "L"
            gdp_in_3.style.display = "inline-block"
            gdp_in_3.style.width = "4%"
            gdp_in_4.id = "O"
            gdp_in_4.style.display = "inline-block"
            gdp_in_4.style.width = "96%"
            let C_Name=Chat.querySelectorAll(".Mio")
            key_list.id = get_time+"&"+Ch_m
            gdp.id = uername
            gdp.setAttribute("class","Mio")
            key_list.setAttribute("class","Tako")
            let a=setTimeout(()=>{
                let isspam=node_mod.some((item)=>{
                    return (item==mes)
                })
                if(isspam){
                    clearTimeout(a);
                    return
                }
                let m=New_Chat.firstElementChild?.id||"0&0"
                let tako = m.split("&")
                let Kronii_new=Number(get_time)
                let Kronii_Old=Number(tako[0])
                if(Kronii_new-Kronii_Old<0)Kronii_new+=60
                let T=Kronii_new-Kronii_Old
                if (Number(Ch_m)<BBQ&&Math.abs(T)<=1&&Number(tako[1])<=BBQ){
                    let ol=New_Chat?.firstElementChild?.querySelector("#message")
                    if(ol)ol.style.color = "red"
                    mes.querySelector("#message").style.color = "red"
                }
                mes.querySelector("#message").style.display = "";
                mes.querySelector("#ZOO").style.display="none"
                gdp_in_1.appendChild(mes)
                gdp.appendChild(gdp_in_1)
                key_list.appendChild(gdp)
                mod||Script_ISrun?New_Chat.append(key_list):New_Chat.prepend(key_list)
                counter.innerHTML = Number(counter.innerHTML)+1
                if (C_Name.length){
                    for (let i=0,l=C_Name.length;i<l;i++){
                        if(C_Name[i].id===uername){
                            let fold= C_Name[i].querySelectorAll("yt-live-chat-text-message-renderer")
                            for(let q = 0,k=fold.length;q<k;q++){
                                gdp_in_2.appendChild(gdp_in_3)
                                gdp_in_2.appendChild(gdp_in_4)
                                gdp_in_4.appendChild(fold[q])
                                gdp.appendChild(gdp_in_2)
                                fold[q].querySelector("#message").style.color = "#f700ff"
                                mes.querySelector("#message").style.color = "#f700ff"
                            }
                            counter.innerHTML = Number(counter.innerHTML)-1
                            C_Name[i].parentNode.remove()
                        }
                    }
                }
            },index*1000+8000)
            }
        //===================================================onev===============================================================================
        document.addEventListener('keydown', logKey);
        function logKey(e) {
            if(!mod&&!Script_ISrun)return
            switch (e.code)
            {
                case "ArrowRight":
                    ISmanual=1
                    if(Mod_dell){
                        if(Script_ISrun&&!mod)Achan=Mod_dell
                        let Cdk=Mod_dell.querySelector("#message").innerText
                        let cdk= GetKey(Cdk);
                        Keylist_Re.push(cdk)
                        DellArray("",Keylist_Re)
                        Keylist_Re=[...new Set(Keylist_Re)]
                        if(mod){
                            let bba = document.createElement("div")
                            bba.style.display="none"
                            bba.setAttribute('class', 'gura')
                            bba.id = "ModD"
                            if(aki){
                                document.querySelector("#ModD").appendChild(Mod_dell)
                            }else{
                                let dell = document.createElement("div")
                                let span = document.createElement("span")
                                dell.id = "mod_delete"
                                dell.setAttribute("class","Report_Item")
                                span.setAttribute("class","P_key")
                                span.innerText=language_("Manually deleted comment","手动删除的留言","手動で削除されたコメント")
                                bba.appendChild(Mod_dell)
                                dell.appendChild(bba)
                                dell.prepend(span)
                                Report_key_mes.prepend(dell)
                                aki=document.querySelector("#mod_delete")
                            }
                        }
                        Mod_dell.querySelector("#button.yt-icon-button").click()
                    }else{
                        Mod_dell = Chat.querySelector("yt-live-chat-text-message-renderer")
                        if(Mod_dell){
                            pro.style.display = "none"
                            Mod_dell.parentNode.parentNode.style.display = "";
                            Mod_dell.querySelector("#message").style.fontSize="18px"
                            Mod_dell.querySelector("#message").style.fontWeight='bold'
                        }else{
                            Mes(language_("No Comment!","没有留言!","コメントなし!"))
                            rami--
                        }
                    }
                    break;
                case "ArrowLeft":
                    if(Mod_dell){
                        Mod_dell.remove()
                        Mod_dell=null
                        Mes(language_("Comment skipped","已跳过留言","スキップしました"))
                    }else{
                        Mod_dell = Chat.querySelector("yt-live-chat-text-message-renderer")
                        if(Mod_dell){
                            pro.style.display = "none"
                            Mod_dell.parentNode.parentNode.style.display = "";
                            Mod_dell.querySelector("#message").style.fontSize="18px"
                            Mod_dell.querySelector("#message").style.fontWeight='bold'
                        }else{
                            Mes(language_("No Comment!","没有留言!","コメントなし!"))
                            rami--
                        }
                    }
                    break;
            }
        }
        document.querySelector("#contents").onclick = (e)=>{
            if(!Script_ISrun&&e.target.id == "message"){
                let selection = window.getSelection();
                selection.removeAllRanges();
                let range = new Range();
                range.selectNodeContents(e.target);
                selection.addRange(range);
            }
        }
        New_Chat.onmouseover = function (e) {
            let E=e.target
            if (E.id == "message"||E.id=="Translate"){
                if(Script_ISrun){
                    E.style.cursor="pointer"
                    E.style.userSelect="none"
                }else{
                    E.id=="message"?E.style.cursor="help":E.style.cursor="default"
                    E.style.userSelect="text";
                }
            }
        }
        New_Chat.onclick = function (e){
            ISmanual=1
            if (Script_ISrun&&(e.target.id == "message"||e.target.id=="Translate")&&!korone){
                let Cdk
                Achan=null
                let mes=e.target.parentNode.parentNode
                Achan=mes.parentNode.parentNode.parentNode
                if(error==mes.id){
                    error=confirm(language_("[OK] skip, [Cancel] try again","[确定]跳过,[取消]重试","[OK]スキップ、[キャンセル]再試行"))?null:mes.id
                }else{
                    error=mes.id
                }
                e.target.id=="Translate"?Cdk = e.target.previousSibling.innerText: Cdk=e.target.innerText
                let cdk= GetKey(Cdk);
                Keylist_Re.push(cdk)
                DellArray("",Keylist_Re)
                Keylist_Re=[...new Set(Keylist_Re)]
                if(mes.parentNode.parentNode.id=="Fold")Achan=mes.parentNode.parentNode
                if (error==null){
                    Achan.remove()
                    Achan=null
                }else{
                    mes.querySelector("#button.yt-icon-button").click();
                }
                error=mes.id
            }else if(!Script_ISrun&&(e.target.id == "message"||e.target.id=="Translate")){
                if(e.target.id=="Translate"){
                    let Tran=e.target.previousSibling
                    Tran.style.display = ""
                    e.target.style.display = "none"
                }else if(e.target.id =="message"){
                    let Tran =e.target.nextSibling
                    if (Tran.id=="Translate"){
                        Tran.style.display = ""
                        e.target.style.display = "none"
                    }
                }
                let selection = window.getSelection();
                selection.removeAllRanges();
                let range = new Range();
                range.selectNodeContents(e.target);
                selection.addRange(range);
                if (window.getComputedStyle(e.target, null).getPropertyValue('color')=="rgb(247, 0, 255)"){
                    let b=e.target.parentNode.parentNode.parentNode.nextSibling
                    if(b){b.style.display == "none"?b.style.display = "":b.style.display = "none"}
                }}
        }
        Auto_mes_O_P.onclick=()=>{
            autocall(0,Time,true)
        }
        Auto_mes_L.onclick = function(e){
            if (e.target.nodeName=="IMG"){
                let img=document.createElement("img")
                img.src = e.target.src
                img.setAttribute('class', 'emoji yt-formatted-string style-scope yt-live-chat-text-input-field-renderer')
                img.style.cssText+="margin:-5px 2px;width:20px;height: 20px"
                img.alt= e.target.alt
                if (!auto_p_n){
                    const Auto_mes_P = document.createElement("span")
                    Auto_mes_R.appendChild(Auto_mes_P)
                    Auto_mes_P.id = "auto_p"+auto_p
                    Auto_mes_P.setAttribute('contenteditable', 'true')
                    Auto_mes_P.setAttribute('class', 'auto_mes_p')
                    Auto_mes_P.appendChild(img)
                    Auto_mes_P.onblur = function (y){if (Auto_mes_P.innerHTML=="") Auto_mes_P.remove()}
                    auto_p_n= "auto_p"+auto_p
                    auto_p += 1
                }else{
                    document.getElementById(auto_p_n)?.focus()
                    document.activeElement.appendChild(img)
                }
            }
        }
        Auto_mes_L.onmouseover = function(e){
            shion_p.innerText= language_("Click the emoji to add to content","点击表情加入留言内容","emojiをクリックしてコメントに追加");
        }
        Auto_mes.onmouseleave = function(){
            let p =document.getElementById(auto_p_n)
            if (p){
                p.blur()
                auto_p_n=null
                localItem()
            }
            p=null
        }
        Auto_mes_O.onmouseover = function (e) {
            localItem()
            switch (e.target.id)
            {
                case "ChatMes":
                    shion_p.innerText= language_("on/off Confrontation Mode","开/关 对喷模式","on/off コールモード");
                    break;
                case "Log":
                    shion_p.innerText= language_("無意味なデータ","無意味なデータ","無意味なデータ");
                    break;
            }
        }
        Auto_mes_O.onclick = function (e) {
            switch (e.target.id)
            {
                case "ChatMes":
                    TTK?TTK=false:TTK=true
                    TTK?e.target.innerText="Confrontation":e.target.innerText="Call"
                    if(!TTK){
                        window.clearInterval(Interval)
                        outtime=1
                        Interval=null
                        Auto_mes_O_P.innerHTML = "Ready"
                    }
                    break;
                case "Log":
                    log2.innerText = BlockIds
                    Auto_mes_R.style.display == "none"?Auto_mes_R.style.display = "":Auto_mes_R.style.display = "none"
                    Auto_mes_log.style.display == ""?Auto_mes_log.style.display = "none":Auto_mes_log.style.display = ""
                    break;
            }
        }
        Auto_mes_R.onclick =function(e){
            if (e.target.nodeName=="SPAN"){
                auto_p_n=e.target.id
            }else {
                auto_p_n=null
                localItem()
            }
        }
        Add_Button.onclick = function addkey() {
            if (Add_Input_Key.value != ""){
                Keylist_trun.push(GetKey(Add_Input_Key.value))
                Add_Input_Key.value = ""
                Del_Button.value = "Delete:"+Keylist_Re.length
                Keyword_Frame_Textarea.value = Keylist_Re.join("\n").replace(/(\.\*)/g, "")
                return;
            }
            if (Keyword_Frame_Textarea.value!=""){
                let Keylist=Keyword_Frame_Textarea.value.split('\n')
                DellArray("",Keylist)
                Keylist=[...new Set(Keylist)]
                Keylist_trun = Keylist.map(item=>{return GetKey(item.replace(re, ""))}).concat(Keylist_trun)
                DellArray("",Keylist_trun)
                Keylist_trun=[...new Set(Keylist_trun)]
                Keylist_Re = Keylist.map(item=>{return GetKey(item.replace(re, ""))}).concat(Keylist_Re)
                DellArray("",Keylist_Re)
                Keylist_Re=[...new Set(Keylist_Re)]
                let key__=Keylist_Re.join("\n").replace(/(\.\*)/g, "")
                Del_Button.value = "Delete:"+Keylist_Re.length
                Keyword_Frame_Textarea.value = key__
            }
        }
        Add_Input_Key.onfocus = function () {
            Key_Frame.style.display = ""
            Keyword_Frame_Textarea.value = Keylist_Re.join("\n").replace(/(\.\*)/g, "")
        }
        Del_Button.onclick = function () {
            Keylist_trun = []
            Keylist_Re=[]
            Del_Button.value = "Delete:"+Keylist_Re.length
            Keyword_Frame_Textarea.value = ""
        }
        Keyword_Frame_Textarea.onclick = function (e) {
        }
        Report_key_mes.addEventListener('dblclick', function (e) {
            if (e.target.className == "P_key"){
                let x = e.target.parentNode.querySelector(".gura")
                x.style.display = "none"
                let key_del= e.target.innerText
                let key_i
                if (confirm(language_("Not Spam","不是Spam","スパムではない"))){
                    for (let i=0,l=Keylist_Re.length;i<l;i++){
                        let reg_kkey = new RegExp(Keylist_Re[i]);
                        if (reg_kkey.test(key_del)) {
                            key_i=i
                            break;
                        }
                    }
                    Keylist_Re.splice(key_i,1)
                    e.target.parentNode.remove()
                    return
                }
            }
        });
        Report_key_mes.onclick = function (e) {
            if (e.target.className == "P_key"){
                let selection = window.getSelection();
                selection.removeAllRanges();
                let range = new Range();
                range.selectNodeContents(e.target);
                selection.addRange(range);
                let x = e.target.parentNode.querySelector(".gura")
                x.style.display!="none" ? x.style.display = "none":x.style.display=""
            }
        }
        Report_SET_0_Input.onclick = function(){
            if(mod){
                alert(language_("Turn off mod mode to use report","请关闭主持人模式","モデレータモードオフにして "))
                Report_SET_0_Input.checked=false
                return
            }
            Script_ISrun = Report_SET_0_Input.checked
            ISmanual=0
            korone=null
            let of=Mode?language_("Report","举报","報告"):language_("Block","拉黑","ブロック");
            Script_ISrun?Report_SET_1.innerText=language_("Mode:(","模式:(","モード:(")+of+")":Report_SET_1.innerText=language_("Off","关闭","Off");
            Report_SET_2_p.innerHTML=language_("👉Run Automated Scripts👈","👉运行自动脚本👈","👉自動スクリプトを実行する👈");
            error=null
            Script_ISrun?Report_SET_2.style.display="":Report_SET_2.style.display="none"
        }
        Re.onclick = function () {
            switch (Re.value)
            {
                case "Hide":
                    MainWindow.style.display = "none"
                    Re.value = "View"
                    break;
                case "View":
                    MainWindow.style.display = ""
                    Re.value = "Hide"
                    break;
            }
        }
        Settinglist.onclick = function (e){
            switch (e.target.id)
            {
                case "T1":
                    if(Inputs.style.display="none" )Inputs.style.display="";
                    if (Inputs.style.display==""){
                        TItle_1.style.backgroundColor=color
                        TItle_2.removeAttribute("style")
                        TItle_3.removeAttribute("style")
                        TItle_4.removeAttribute("style")
                        Report_Frame.style.display="none"
                        gauging_Item.style.display = "none"
                        speech_Item.style.display = "none"
                        New_Chat.style.display = "none"
                        Report_key_mes.style.display = "none"
                        Auto_mes.style.display = "none"
                        Keyword_Frame.style.display = ""
                        Keyword_Frame_Textarea.value = Keylist_Re.join("\n").replace(/(\.\*)/g, "")
                        Del_Button.value = "Delete:"+Keylist_Re.length
                        shion_p.innerText= language_("Add single↑ or multiple↓ keywords","添加单条↑ 添加多条↓ 关键词","1つのキーワードを追加↑複数のキーワードを追加↓");
                    }
                    break;
                case "T2":
                    if(gauging_Item.style.display="none")gauging_Item.style.display="";
                    if (gauging_Item.style.display==""){
                        TItle_1.removeAttribute("style")
                        TItle_2.style.backgroundColor=color
                        TItle_3.removeAttribute("style")
                        TItle_4.removeAttribute("style")
                        Report_Frame.style.display="none"
                        Inputs.style.display = "none"
                        speech_Item.style.display = "none"
                        New_Chat.style.display = ""
                        Report_key_mes.style.display = "none"
                        Auto_mes.style.display = "none"
                        Keyword_Frame.style.display = "none"
                        shion_p.innerText= language_("Turn on Simplification,Click to comment to report","开启流程简化后点击留言举报","簡素化をオンにする,コメントをクリックして報告する");
                        counter.innerHTML=New_Chat.querySelectorAll("yt-live-chat-text-message-renderer").length
                    }
                    break;
                case "T3":
                    if (Report_Frame.style.display="none")Report_Frame.style.display="";
                    if (Report_Frame.style.display==""){
                        TItle_1.removeAttribute("style")
                        TItle_2.removeAttribute("style")
                        TItle_3.style.backgroundColor=color
                        TItle_4.removeAttribute("style")
                        Inputs.style.display="none"
                        gauging_Item.style.display = "none"
                        speech_Item.style.display = "none"
                        New_Chat.style.display = "none"
                        Report_key_mes.style.display = ""
                        Auto_mes.style.display = "none"
                        Keyword_Frame.style.display = "none"
                        shion_p.innerText= language_("↓Click to expand | Double click to delete↓","↓单击展开|双击删除↓","↓クリックして展開|ダブルクリックして削除↓");
                        Report_l.innerHTML=Report_key_mes.querySelectorAll("yt-live-chat-text-message-renderer").length
                    }
                    break;
                case "T4":
                    if (speech_Item.style.display="none")speech_Item.style.display="";
                    if (speech_Item.style.display==""){
                        TItle_1.removeAttribute("style")
                        TItle_2.removeAttribute("style")
                        TItle_3.removeAttribute("style")
                        TItle_4.style.backgroundColor=color
                        Report_Frame.style.display="none"
                        gauging_Item.style.display = "none"
                        Inputs.style.display = "none"
                        New_Chat.style.display = "none"
                        Report_key_mes.style.display = "none"
                        Auto_mes.style.display = ""
                        Keyword_Frame.style.display = "none"
                        shion_p.innerText= language_("et interval and content","设置发言间隔","間隔を設定する");
                        iron_load()
                    }
                    break;
            }
        }
        SettingItem.onclick =function(e){
            if(e.target.nodeName=="SPAN"){
                let of
                switch (e.target.parentNode.id)
                {
                    case "Key_l":
                        gauging_01.focus()
                        gauging_01.innerText= ""
                        break;
                    case "BBQ":
                        gauging_11.focus()
                        gauging_11.innerText= ""
                        break;
                    case "Time_Set":
                        speech_Item_p2.focus()
                        speech_Item_p2.innerText= ""
                        break;
                    case "A_Report":
                        !korone?autor():Report_SET_2_p.innerText=language_("don't click repeatedly","不要重复点击","繰り返しクリックしないで");
                        break;
                    case "report_":
                        if(!Script_ISrun) return
                        Mode?Mode=0:Mode=1
                        of=Mode?language_("Report","举报","報告"):language_("Block","拉黑","ブロック");
                        Report_SET_1.innerText=language_("Mode:(","模式:(","モード:(")+of+")"
                        break;
                }
            }
        }
        SettingItem.onmouseover = function(e){
            if(e.target.nodeName=="SPAN"){
                switch (e.target.parentNode.id)
                {
                    case "Key_l":
                        shion_p.innerText= language_("Set a number greater than 10","设置大于10的数","10より大きい数を設定");
                        break;
                    case "BBQ":
                        shion_p.innerText= language_("Set a number greater than 2 and less than 17","设置大于2小于17的数字","2より大きく17より小さい数値を設定して");
                        break;
                    case "Time_Set":
                        shion_p.innerText= language_("Set the interval, too fast will be judged as a robot","设置间隔,过快可能被判定为机器人","間隔を設定。速すぎるとロボットと判断される");
                        break;
                    case "A_Report":
                        shion_p.innerText=language_("Report/block users based on selected mode","根据所选模式举报/拉黑用户","選択したモードに基づいてユーザーを報告/ブロックする")
                        break;
                    case "report_":
                        e.target.id == "ReportSET"&&Script_ISrun?shion_p.innerText=language_("Click to toggle Report or Block","切换行为:举报/拉黑","トグル動作:レポート/ブロック "):shion_p.innerText= ""
                        break;

                }
            }
        }
        speech_Item_p2.onblur = ()=>{
            let x=speech_Item_p2.innerText
            typeof parseInt(x)=="number"&&x!=""&&!isNaN(parseInt(x))?Time=Math.abs(parseInt(x))*1000:Time= Time
            localStorage.setItem("Time",Time)
            speech_Item_p2.innerText=Time/1000
        }
        gauging_01.onblur = ()=>{
            let x=gauging_01.innerText
            let xx=parseInt(x)
            typeof xx=='number'&&x!=""&&!isNaN(xx)&&Math.abs(xx)>10?Key_l=Math.abs(xx):Key_l= Key_l
            gauging_01.innerText=Key_l
            localStorage.setItem("Key_l",Key_l)
        }
        gauging_11.onblur = ()=>{
            let x=gauging_11.innerText
            let xx=parseInt(x)
            typeof xx=='number'&&x!=""&&!isNaN(xx)&&Math.abs(xx)>2?BBQ=Math.abs(xx):BBQ= BBQ
            gauging_11.innerText=BBQ
            localStorage.setItem("BBQ",BBQ)
        }
        //===================================================filter================================================================================
        let Null_div = document.createElement("div");
        Null_div.style.display = "none";
        Yagoo = new MutationObserver((Guestbook) => {
            Guestbook.forEach(function (MessageList) {
                MessageList.addedNodes.forEach(function (node,index) {
                    if (node.nodeName!="YT-LIVE-CHAT-TEXT-MESSAGE-RENDERER"||node.nodeName=="DIV")return;
                    const Messages_EL = node.querySelector("#message");
                    const Tname = node.querySelector("#author-name");
                    const may = node.querySelector("#chip-badges").children.length;
                    if (!Tname||!Messages_EL||may) return;
                    let Tname_T = Tname.innerText
                    if (Tname_T==myname&&Script_ISrun) return;
                    if (S_Username.length > 0) ctm += 1;
                    if (ctm >= BBQ || S_Username.length >= BBQ) {
                        S_Username.shift()
                        ctm = 0
                    }
                    const Cdk = Messages_EL.innerText.replace(re, "")
                    let Cdk_l = Cdk.length
                    if(Cdk_l < Key_l){
                        if(Ch_m<30)Ch_m += 1
                        return
                    }
                    if (node.querySelector("#card") || node.querySelector(".member")) return;
                    let Key_On = false,Peko = false
                    wait = (Math.floor(Math.random() * 3100)+100)
                    let get_time =new Date().getSeconds()
                    if(Ch_n<17)Ch_n += 1
                    let EN_off=/^[a-zA-Z0-9]+$/g
                    if (EN_off.test(Cdk)) return
                    Keylist_trun.length&&Keylist_trun.some((item)=>{
                        Key_On = new RegExp(item).test(Cdk)
                        return Key_On
                    })
                    Peko = Anemati.includes(Tname_T)
                    let cdk = GetKey(Cdk)
                    let zoo = document.createElement("span");
                    zoo.id = "ZOO"
                    if(Ame){
                        zoo.innerHTML = Zoo()
                        Messages_EL.style.display="none"
                    }
                    Messages_EL.before(zoo)
                    if (Key_On) {
                        let TNT=Null_div.cloneNode()
                        Itemslist.appendChild(TNT)
                        Keylist_Re.push(cdk)
                        DellArray("",Keylist_Re)
                        Keylist_Re=[...new Set(Keylist_Re)];
                        Report(node,cdk,key_i(cdk),index)
                        Mod(node,index)
                        Ch_n=0;Ch_m=0
                        if (TTK)autocall(wait,Time,false)
                        return
                    } else if (Peko) {
                        AddKey_List(cdk,Cdk)
                        let TNT=Null_div.cloneNode()
                        Itemslist.appendChild(TNT)
                        Keylist_Re.push(cdk)
                        DellArray("",Keylist_Re)
                        Keylist_Re=[...new Set(Keylist_Re)]
                        Report(node,cdk,key_i(cdk),index)
                        Mod(node,index)
                        Ch_n=0;Ch_m=0
                        return
                    } else if (!Key_On && !Peko) {
                        if (S_Username.includes(Tname_T)&&Ch_n<=BBQ&&Ch_m<=BBQ) {
                            Anemati.push(Tname_T)
                            Peko = true
                            let TNT=Null_div.cloneNode()
                            Itemslist.appendChild(TNT)
                            Keylist_Re.push(cdk)
                            DellArray("",Keylist_Re)
                            Keylist_Re=[...new Set(Keylist_Re)]
                            AddKey_List(cdk,Cdk)
                            pekoname(Tname_T,Cdk,index,node)
                            Report(node,cdk,key_i(cdk),index)
                            Mod(node,index)
                            Ch_n=0;Ch_m=0
                            return
                        }else{
                            S_Username.push(Tname_T)
                            let TNT=Null_div.cloneNode()
                            Itemslist.appendChild(TNT)
                            AddKey_List(cdk,Cdk)
                            AddItems(node,Tname_T,Key_On,Ch_m,get_time,index)
                            Node.unshift(node)
                            Ch_n=0;Ch_m=0
                            return
                        }
                    }
                });
            });
        });
        Yagoo.observe(Itemslist, {
            childList: true,
        });
        end=function end() {
            Yagoo.disconnect()
            Yagoo=null
            imgset = null
            AddItems = null
            Report = null
            pekoname = null
            New_Chat.onmouseover = null
            New_Chat.onclick = null
            Auto_mes_L.onclick = null
            Auto_mes.onmouseleave = null
            Auto_mes_O.onmouseover = null
            Auto_mes_O.onclick = null
            Auto_mes_R.onclick = null
            Report_key_mes.onclick = null
            Report_SET_0_Input.onclick = null
            Report_SET_2_p.onclick = null
            Settinglist.onclick = null
            Add_Button.onclick = null
            Add_Input_Key.onfocus = null
            Re.onclick = null
            Del_Button.onclick = null
            Auto_mes_O_P.onclick= null
            gauging_01.onblur = null
            gauging_11.onblur = null
            Important_Frame.remove()
            Re.remove()
            counter.remove()
            Report_l.remove()
            Auto_mes_O_P.remove()
            rami_1.remove()
            rami_2.remove()
            rami_T.remove()
        }
    }
    //end//
    let sb = document.getElementById("send-button")
    let Set_off=document.getElementById("Set_off")
    let ISblock=document.getElementById("ISblock")
    let ISreplace=document.getElementById("ISreplace")
    Kirara=ISblock.checked
    Ame = ISreplace.checked
    let TOPdiv=document.getElementById("TOPdiv")
    let button = new MutationObserver((node) => {
        let DT = document.getElementById("TTi")
        color == "#4b4b4b" ?DT.style.color ="#ffffffa8":DT.style.color ="#0000006e"
        if (!node[0].target.getAttributeNode("countdown-active")){
            DT.style.color =""
            DT.innerText = "Ready(slow mode)"
            Interval=null
            outtime=1
        }else{
            DT.innerText = "Waiting(slow mode)";
            window.clearInterval(Interval);
        }
    });
    sb&&button.observe(sb,{attributes: true});
    function Mod(node,index){
        if(mod){
            ((i)=>{
                setTimeout(()=>{node.querySelector("#button.yt-icon-button").click()},i*100)
            })(index)
        }
    }
    function report_set() {
        let body_ = document.querySelector("body")
        let Mumei =document.querySelector("yt-live-chat-app")
        let Report_SET = new MutationObserver((node) => {
            for (let item of node){
                for (let op of item.addedNodes){
                    switch (op?.children[0]?.nodeName)
                    {
                        case "YT-REPORT-FORM-MODAL-RENDERER":
                            Report.disconnect()
                            Report.observe(op,{attributeFilter:[ "style"],})
                            break;
                        case "YT-CONFIRM-DIALOG-RENDERER":
                            Report_Ok.disconnect()
                            Report_Ok.observe(op,{attributeFilter:[ "style"],});
                            break;
                        case "DIV":
                            if(op?.children[0].children[0].nodeName!="YTD-MENU-POPUP-RENDERER") return
                            Report_fram.disconnect()
                            Report_fram.observe(op,{attributeFilter:[ "style"],});
                            break;
                    }
                }
            }
        });
        Report_SET.observe(Mumei, {
            childList: true,
        });
        let Report_black = new MutationObserver((node) => {
            if (!Script_ISrun) return
            for (let item of node){
                for (let op of item.addedNodes){
                    if (op.nodeName=="TP-YT-IRON-OVERLAY-BACKDROP")op.remove()
                }
            }
        });
        Report_black.observe(body_, {childList: true,});
        let Report_fram = new MutationObserver((E) => {
            if (!Script_ISrun&&!mod) return
            let Yes=E[0].target
            if (Yes.style.display!="none"){
                let R_Box = document.querySelectorAll("ytd-menu-service-item-renderer")
                Yes.style.display="none"
                if(!Mode&&!mod){
                    if(R_Box.length==4){
                        R_Box=R_Box[3]
                        R_Box&&R_Box.children[0].children[0].click()
                    }else{
                        R_Box=document.querySelectorAll("ytd-menu-navigation-item-renderer")
                        R_Box&&R_Box[0].children[0].children[0].click()
                    }
                    return
                }
                if(R_Box.length==4&&mod){
                    R_Box=R_Box[1]
                    R_Box&&R_Box.children[0].children[0].click()
                    if(Mod_dell){
                        Mod_dell.querySelector("#message").style.display="none";
                        Mod_dell.querySelector("#deleted-state").innerText = "[message deleted]";
                        if(!ClickBlock)Mes(language_("Comment deleted","已删除留言","コメントが削除されました "))
                        if(Kirara&&ISmanual){
                            setTimeout(()=>{
                                Mod_dell.querySelector("#button.yt-icon-button").click()
                                ClickBlock=true
                            },1000)
                        }else{
                            Mod_dell=null
                        }
                    }
                }else if(R_Box.length==3&&Kirara&&mod){
                    R_Box=R_Box[2]
                    R_Box&&R_Box.click()
                    Mod_dell=null
                }else if(Script_ISrun&&!mod){
                    if(ClickBlock){
                        if(IsMod){
                            R_Box=R_Box[3]
                            R_Box&&R_Box.click()
                            Achan.remove()
                            BlockIds++
                            Achan=null
                            Mod_dell=null
                            error=null
                            ClickBlock=false
                            Mes(language_("Comment has been reported ","已举报留言","コメントが報告されました "))
                            ISmanual?ISmanual=0:setTimeout(()=>{autor()},500)
                        }else{
                            R_Box=document.querySelectorAll("ytd-menu-navigation-item-renderer")
                            R_Box=R_Box[0].children[0].children[0]
                            R_Box&&R_Box.click()
                            ISmanual?ISmanual=0:setTimeout(()=>{autor()},500)
                        }
                    }else{
                        R_Box=R_Box[0]
                        R_Box&&R_Box.click()
                    }
                }
            }
        });
        let Report_Ok = new MutationObserver((E) => {
            if (!Script_ISrun) return
            let OK=E[0].target
            if (OK.style.display!="none"){
                OK.style.display="none"
                OK.querySelector("#confirm-button").children[0].children[0].click();
                if(!Mode){
                    Achan.remove()
                    BlockIds++
                    Achan=null
                    Mod_dell=null
                    error=null
                    ClickBlock=false
                    Mode&&Mes(language_("Comment has been reported ","已举报留言","コメントが報告されました "))
                    ISmanual?ISmanual=0:setTimeout(()=>{autor()},500)
                    return
                }
                clearTimeout(korone)
                korone=null
                if(Achan){
                    if (Kirara){
                        if(ClickBlock){
                            Achan.remove()
                            BlockIds++
                            Achan=null
                            Mod_dell=null
                            error=null
                            ClickBlock=false
                            Mode&&Mes(language_("Comment has been reported ","已举报留言","コメントが報告されました "))
                            ISmanual?ISmanual=0:setTimeout(()=>{autor()},500)
                        }else{
                            Achan.querySelector("#button.yt-icon-button").click()
                            ClickBlock = true
                        }
                    }else{
                        Achan.remove()
                        log_2++
                        Achan=null
                        Mod_dell=null
                        error=null
                        ISmanual?ISmanual=0:setTimeout(()=>{autor()},500)
                        Mode&&Mes(language_("Comment has been reported ","已举报留言","コメントが報告されました "))
                    }
                }
                nethe++
                log1.innerText = nethe
            }
        });
        let Report = new MutationObserver((E) => {
            if (!Script_ISrun) return
            let Fubuki= E[0].target
            if (Fubuki.style.display!="none"){
                Fubuki.style.display="none"
                const menu = document.querySelector(".radio.style-scope.yt-options-renderer")
                menu.click()
                menu.setAttribute('class', 'radio style-scope yt-options-renderer iron-selected')
                menu.setAttribute('aria-checked', 'true')
                menu.setAttribute('aria-selected', 'true')
                menu.setAttribute('checked', '')
                menu.setAttribute('active', '')
                menu.setAttribute('focused', '')
                clearTimeout(korone)
                if(Achan&&Mode){
                    Achan.querySelector("#message").style.color=color_ames+"30"
                }else if(Achan&&!Mode){
                    //Achan.querySelector("#message").style.color=color_ames+"30"
                }
                Fubuki.children[0]?.children[3]?.children[1].click();
            }
        });
    }
    function autocall(wait,limit){
        if (!Interval&&outtime){
            outtime=0
            const fram = document.querySelector("#mes_box").children
            let mes_i=Math.floor(Math.random()*fram.length)
            let none2 = fram[mes_i]?.innerHTML||"kawaii"
            Bchan=limit
            setTimeout(function(){
                if (!Bchan)Bchan = Ch_m<spam
                Bchan&&call(none2)
            },wait)
        }
    }
    function call(none){
        let iv=document.querySelector("DIV#input")
        if (!iv) return
        iv.parentNode.setAttribute('focused', '')
        let ie= new InputEvent("input")
        iv.innerHTML= none
        iv.dispatchEvent(ie);
        document.querySelector("yt-button-renderer.yt-live-chat-message-input-renderer").click()
        iv.innerHTML = null
        let DT = document.getElementById("TTi")
        color == "#4b4b4b" ?DT.style.color ="#ffffffa8":DT.style.color ="#0000006e"
        let DT_time=Time/1000
        DT.innerText = "Waiting"
        Interval=setInterval(()=>{
            if (DT_time===0){
                DT.innerText="Ready"
                window.clearInterval(Interval);
                Interval=null
                outtime=1
            }else{
                DT_time -=1
                DT.innerText = "Waiting\("+DT_time+"\)Sec"
            }
        },1000)
    }
    function localItem(){
        const load_mes = document.querySelector("#mes_box").children
        let item_j=""
        for (let item of load_mes){
            let t=item.innerHTML
            item_j?item_j=item_j +"|" + t :item_j=item_j + t
        }
        localStorage.setItem("IMGitem",item_j)
    }
    function img(){
        const fram = document.querySelector("#img_box")
        if (fram.children.length)return
        const iron = document.querySelector("iron-pages#pickers")
        const img = iron.querySelectorAll("div#emoji")
        let x
        img.length==9?x=1:x=2
        for (let i= 1,l=img.length;i<l;i++){
            if (i == x)continue
            ((t)=>{
                let img_new=img[t].cloneNode(true)
                setTimeout(()=>{fram.appendChild(img_new)},t*1000)
            })(i)
        }
    }
    function iron_load(){
        let iron_box= document.querySelector("yt-live-chat-icon-toggle-button-renderer#emoji.yt-live-chat-message-input-renderer")
        if(!iron_box)return
        iron_box= iron_box.querySelector("yt-interaction#interaction.yt-icon-button")
        iron_box.click()
        iron_box.click()
        setTimeout(()=>{img()},6000)
    }
    function DellArray(V,Array){
        for (let i= Array.length-1;i>=0;i--){
            if(Array[i]==V){
                Array.splice(i, 1)
            }
        }
    }
    window.onbeforeunload = function(){
        let key__=Keylist_Re.join("\n").replace(/(\.\*)/g, "")
        navigator.clipboard.writeText(key__).then(() => {})
    }
    function AddKey_List(cdk,Cdk){
        Keylist_trun.push(cdk)
        DellArray("",Keylist_trun)
        Keylist_trun=[...new Set(Keylist_trun)]
    }
    function GetKey(en) {
        let items=Array.from(en,(x,i)=>i===0?x:".*"+x).join("")
        return items
    }
    function key_i(cdk){
        for (let i=0,l=Keylist_trun.length;i<l;i++) {
            let reg_kkey = new RegExp(Keylist_trun[i]);
            if (reg_kkey.test(cdk)) {return i}
        }
    }
    function autor(){
        let Report_key_mes= document.querySelector("#key_mes")
        let Report_SET_2_p=document.querySelector("#dad")
        let Report_L=Report_key_mes.querySelector("yt-live-chat-text-message-renderer")
        if(Report_L&&Script_ISrun){
            error=Report_L.id
            Report_SET_2_p.innerText=language_("Automatic script is running","自动脚本正在运行","自動スクリプトが実行中");
            Achan=Report_L
            Report_L.querySelector("#button.yt-icon-button").click()
            Report_L.parentNode.style.background="#63aaf7"
            Report_key_mes.scrollTop=Report_L.parentNode.parentNode.offsetTop-175
            Report_L.parentNode.style.display = ""
        }else {
            clearTimeout(korone)
            error=null
            korone=null
            Report_SET_2_p.innerText=language_("|Completed(","|完成(","|Completed(")+log_2+language_(")Again",")重复",")Again")
            return
        }
        korone=setTimeout(()=>{
            let Report_key_mes= document.querySelector("#key_mes")
            let Report_L=Report_key_mes.querySelector("yt-live-chat-text-message-renderer")
            let Report_SET_2_p=document.querySelector("#dad")
            if(!Report_L||!Script_ISrun){
                korone=null
                Report_SET_2_p.innerText=language_("|Completed(","|完成(","|Completed(")+log_2+language_(")Again",")重复",")Again")
                return
            }
            if (error==Report_L.id){
                Report_L.remove()
                Report_L=null
                korone=null
                autor()
            }
        },6000)
    }
    const pro=document.getElementById("Pro")
    const pro_mes=document.getElementById("PRO_1")
    function Mes(mes){
        rami++
        const MainWindow = document.getElementById("MainWindow");
        let wi=MainWindow.clientWidth
        pro.style.width=wi+"px";
       // pro.style.height="110px";
        pro.setAttribute('class', 'pro')
        pro.style.display = ""
        pro_mes.innerHTML = mes
        if(prpr){
            pro.style.display = "none"
            clearTimeout(prpr)
            prpr=null
            return
        }else{
            pro.style.display = ""
        }
        prpr=setTimeout(()=>{
            pro.style.display = "none"
            prpr=null
        },700)
        checked_()
    }

    Set_off.onclick = ()=>{
        TOPdiv.style.display = "none"
    }
    ISblock.onclick = ()=>{
        Isblock = ISblock.checked?"checked":" "
        Kirara=ISblock.checked
        localStorage.setItem("IsBlock",Isblock)
    }
    ISreplace.onclick = ()=>{
        Isreplace = ISreplace.checked?"checked":" "
        Ame=ISreplace.checked
        localStorage.setItem("Isreplace",Isreplace)
    }
    function Set_(){
        let wi=window.innerWidth
        let hi=window.innerHeight;
        TOPdiv.style.width=wi+"px";
        TOPdiv.style.height=hi+"px";
        TOPdiv.style.display = ""
    }
    function checked_(){
        if(rami>=5){
            const newchat = document.getElementById("new_div_chat");
            let nl=newchat.children
            for (let i=0;i<nl.length;i++){
                let mes=nl[i].querySelector("yt-live-chat-text-message-renderer")
                if(!mes){
                    nl[i].remove()
                    i--
                    rami--
                }else{
                    break
                }
            }
        }
    }
    function Zoo(){
        let zoo=[]
        zoo[0]='にゃん'
        zoo[1]='モグ'
        zoo[2]='ワン'
        zoo[3]='パチ'
        zoo[4]='ピカ'
        zoo[5]='ガオ'
        let i=Math.floor(Math.random()*6)
        let b=zoo[i]+zoo[i]
        for(let n=0;n<=Math.floor(Math.random()*2);n++){
            b+=zoo[i]
        }
        return b
    }
    const nullll = GM_registerMenuCommand("───────────────────────", () => {

    });
    const nullll1 = GM_registerMenuCommand("─────────────────────", () => {

    });
    const nullll11 = GM_registerMenuCommand("───────────────────", () => {

    });
    const Start = GM_registerMenuCommand(language_("On/Off:Click to restart","开/关:重启脚本","On/Off:Click to restart"), () => {
        ONOff?ONOff=false:ONOff=true
        if(ONOff){
            launch()
        }else{
            end&&end()
            end=null
        }
    });
    setTimeout(()=>{report_set()},500)
})();