Telegram web 屏蔽指定频道

屏蔽Telegram特定频道的搜索和打开,触发会重定向到首页

// ==UserScript==
// @name         Telegram web 屏蔽指定频道
// @version      0.7
// @description  屏蔽Telegram特定频道的搜索和打开,触发会重定向到首页
// @author       涵有闲
// @homepage     https://hyx.ink
// @match        https://web.telegram.org/*
// @grant        none
// @namespace https://gf.qytechs.cn/users/1385884
// ==/UserScript==

(function () {
  "use strict";

  // 核心配置
  const config = {
    // 需要屏蔽的完整用户名列表
    blockList: ["@v114bot","@jisou"],
    // 重定向目标
    baseUrl: "https://web.telegram.org/k/",
    // 选择器配置
    selectors: {
      searchContainer: ".search-super",
      searchGroup: ".search-group-contacts",
      chatItem: ".row.chatlist-chat",
      subtitle: ".row-subtitle",
    },
  };

  /**
   * 检查URL是否需要屏蔽
   * @param {string} url 当前URL
   * @returns {boolean}
   */
  function shouldBlockUrl(url) {
    // 移除@符号并转换为小写进行匹配
    const blockPatterns = config.blockList.map(
      (item) => new RegExp(item.replace("@", ""), "i")
    );
    return blockPatterns.some((pattern) => pattern.test(url));
  }

  /**
   * 处理重定向
   */
  function handleRedirect() {
    const currentUrl = window.location.href;
    if (shouldBlockUrl(currentUrl) && currentUrl !== config.baseUrl) {
      window.location.replace(config.baseUrl);
    }
  }

  /**
   * 处理搜索结果
   */
  function handleSearchResults() {
    const observer = new MutationObserver(() => {
      document
        .querySelectorAll(config.selectors.searchGroup)
        .forEach((group) => {
          group.querySelectorAll(config.selectors.chatItem).forEach((item) => {
            const subtitle = item
              .querySelector(config.selectors.subtitle)
              ?.textContent?.trim();
            // 严格匹配完整用户名
            if (config.blockList.includes(subtitle)) {
              item.style.display = "none";
            }
          });
        });
    });

    // 观察搜索结果区域
    const searchContainer = document.querySelector(
      config.selectors.searchContainer
    );
    if (searchContainer) {
      observer.observe(searchContainer, {
        childList: true,
        subtree: true,
      });
    }
  }

  /**
   * 防抖函数
   */
  function debounce(func, wait) {
    let timeout;
    return function (...args) {
      clearTimeout(timeout);
      timeout = setTimeout(() => func.apply(this, args), wait);
    };
  }

  // 主函数
  const main = debounce(() => {
    if (window.location.hostname === "web.telegram.org") {
      handleRedirect(); // 保留重定向功能
      handleSearchResults();
    }
  }, 100);

  // 初始化
  function init() {
    main();
    // 监听 URL 变化
    const pushState = history.pushState;
    history.pushState = function () {
      pushState.apply(history, arguments);
      main();
    };
    window.addEventListener("popstate", main);
  }

  // 启动
  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", init);
  } else {
    init();
  }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址