您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Collapses messages that contain words from the ad-word list
当前为
// ==UserScript== // @name Telegram Ad Filter // @version 0.4.4 // @description Collapses messages that contain words from the ad-word list // @license MIT // @author VChet // @icon https://web.telegram.org/favicon.ico // @namespace Telegram-Ad-Filter // @include https://web.telegram.org/k/* // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // ==/UserScript== /* jshint esversion: 10 */ (() => { let defaultList = ["#advertisement", "#promo"]; if (navigator.language === "ru-RU") defaultList = ["#взаимопиар", "#партнерский", "#реклама", "#рекламный"]; let adWords = GM_getValue("ad-words", defaultList); function applyStyles(node) { const message = node.querySelector(".message"); if (!message?.innerText) return; const hasAdWord = adWords.some((filter) => message.innerText.toLowerCase().includes(filter.toLowerCase())); if (!hasAdWord || node.querySelector(".advertisement")) return; const trigger = document.createElement("div"); trigger.classList.add("advertisement"); trigger.innerText = "Advertisement"; node.querySelector(".bubble-content").append(trigger); node.classList.add("has-advertisement"); trigger.addEventListener("click", () => { node.classList.remove("has-advertisement"); }); message.addEventListener("click", () => { node.classList.add("has-advertisement"); }); } GM_addStyle(` .bubble:not(.has-advertisement) .advertisement, .bubble.has-advertisement .message, .bubble.has-advertisement .bubble-beside-button, .bubble.has-advertisement .attachment { display: none; } .advertisement { position: relative; padding: 0.5rem 1rem; text-decoration: underline dotted; cursor: pointer; font-weight: bold; color: var(--link-color); } `); GM_registerMenuCommand("Filter list", () => { const oldValue = GM_getValue("ad-words", adWords); const input = prompt("Enter words to filter, separated by comma:", oldValue); // Convert string to array, trim values const newValue = input.split(",").reduce((acc, entry) => { if (entry) acc.push(entry.trim()); return acc; }, []); adWords = newValue; GM_setValue("ad-words", newValue); document.querySelectorAll(".bubble").forEach((message) => { applyStyles(message); }); }); const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.type !== "childList" || !mutation.addedNodes.length) return; const nodes = [...mutation.addedNodes].filter((node) => node.nodeType === 1 && node.classList.contains("bubble")); if (nodes.length) document.querySelectorAll(".bubble").forEach((message) => { applyStyles(message); }); }); }); observer.observe(document.documentElement, { childList: true, subtree: true, attributeFilter: ["class"] }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址