Telegram 网页端私有频道媒体转发

允许从Telegram网页端私有频道转发媒体

// ==UserScript==
// @name         Telegram Web Media Forward On Private Channel
// @name:en      Telegram Web Media Forward On Private Channel
// @name:vi      Telegram Web Chuyển Tiếp Media Trên Kênh Riêng Tư
// @name:zh-CN   Telegram 网页端私有频道媒体转发
// @name:zh-TW   Telegram 網頁端私有頻道媒體轉發
// @name:ar      Telegram Web توجيه الوسائط في القنوات الخاصة
// @name:bg      Telegram Web Препращане на медии в частен канал
// @name:cs      Telegram Web Přeposílání médií v soukromém kanálu
// @name:da      Telegram Web Videreformidling af medier i privat kanal
// @name:de      Telegram Web Medienweiterleitung im privaten Kanal
// @name:el      Telegram Web Προώθηση πολυμέσων σε ιδιωτικό κανάλι
// @name:eo      Telegram Web Antaŭenigo de amaskomunikiloj en privata kanalo
// @name:es      Telegram Web Reenvío de medios en canal privado
// @name:es-419  Telegram Web Reenvío de medios en canal privado
// @name:fi      Telegram Web Median edelleenlähetys yksityisessä kanavassa
// @name:fr      Telegram Web Transfert média sur canal privé
// @name:fr-CA   Telegram Web Transfert média sur canal privé
// @name:he      Telegram Web העברת מדיה בערוץ פרטי
// @name:hr      Telegram Web Prosljeđivanje medija na privatnom kanalu
// @name:hu      Telegram Web Média továbbítása privát csatornán
// @name:id      Telegram Web Meneruskan media di saluran pribadi
// @name:it      Telegram Web Inoltro media su canale privato
// @name:ja      Telegram Web プライベートチャンネルのメディア転送
// @name:ka      Telegram Web მედიის გადაცემა პირად არხზე
// @name:ko      Telegram Web 비공개 채널에서 미디어 전달
// @name:nb      Telegram Web Videreformidling av medier på privat kanal
// @name:nl      Telegram Web Media doorsturen op privé kanaal
// @name:pl      Telegram Web Przekazywanie mediów na prywatnym kanale
// @name:pt-BR   Telegram Web Encaminhamento de mídia em canal privado
// @name:ro      Telegram Web Redirecționare media pe canal privat
// @name:ru      Telegram Web Пересылка медиа в приватном канале
// @name:sv      Telegram Web Vidarebefordran av media på privat kanal
// @name:th      Telegram Web ส่งต่อมีเดียในช่องส่วนตัว
// @name:tr      Telegram Web Özel kanalda medya yönlendirme
// @name:uk      Telegram Web Пересилання медіа у приватному каналі
// @name:ug      Telegram Web شەخسى كانالدا مېدىيانى ئالماشتۇرۇش
// @name:vi      Telegram Web Chuyển Tiếp Media Trên Kênh Riêng Tư

// @namespace    http://tampermonkey.net/
// @version      1.1.6

// @description  Cho phép chuyển tiếp media từ kênh riêng tư trên Telegram Web
// @description:en Enable forward media from private Telegram channels
// @description:vi  Cho phép chuyển tiếp media từ kênh riêng tư trên Telegram Web
// @description:zh-CN  允许从Telegram网页端私有频道转发媒体
// @description:zh-TW  允許從Telegram網頁端私有頻道轉發媒體
// @description:ar  تمكين إعادة توجيه الوسائط من قنوات تيليجرام الخاصة على الويب
// @description:bg  Позволява препращане на медии от частни канали в Telegram Web
// @description:cs  Umožňuje přeposílání médií z privátních kanálů Telegram Web
// @description:da  Aktiver videresendelse af medier fra private Telegram-kanaler
// @description:de  Ermöglicht das Weiterleiten von Medien aus privaten Telegram-Kanälen im Web
// @description:el  Επιτρέπει την προώθηση πολυμέσων από ιδιωτικά κανάλια στο Telegram Web
// @description:eo  Permesas antaŭenigi amaskomunikilojn el privatkanaloj de Telegram Web
// @description:es  Permite reenviar medios desde canales privados en Telegram Web
// @description:es-419  Permite reenviar medios desde canales privados en Telegram Web
// @description:fi  Mahdollistaa median edelleenlähetyksen yksityisistä Telegram-kanavista
// @description:fr  Permet de transférer des médias depuis des chaînes privées sur Telegram Web
// @description:fr-CA  Permet de transférer des médias depuis des chaînes privées sur Telegram Web
// @description:he  מאפשר העברת מדיה מערוצים פרטיים ב-Telegram Web
// @description:hr  Omogućuje prosljeđivanje medija s privatnih kanala u Telegram Web
// @description:hu  Lehetővé teszi a média továbbítását privát Telegram-csatornákból
// @description:id  Mengaktifkan penerusan media dari saluran pribadi di Telegram Web
// @description:it  Abilita l'inoltro dei media dai canali privati su Telegram Web
// @description:ja  Telegram Webのプライベートチャンネルからメディアを転送可能にする
// @description:ka  შესაძლებლობა პირად არხებზე მედიის გადაცემა Telegram Web-ში
// @description:ko  Telegram Web의 비공개 채널에서 미디어 전달 활성화
// @description:nb  Aktiver videresending av medier fra private Telegram-kanaler
// @description:nl  Sta doorsturen van media toe vanuit privé Telegram-kanalen op het web
// @description:pl  Umożliwia przekazywanie mediów z prywatnych kanałów Telegram Web
// @description:pt-BR  Habilita o encaminhamento de mídia de canais privados no Telegram Web
// @description:ro  Permite redirecționarea media din canale private pe Telegram Web
// @description:ru  Позволяет пересылать медиа из приватных каналов в Telegram Web
// @description:sv  Aktiverar vidarebefordran av media från privata Telegram-kanaler
// @description:th  เปิดใช้งานการส่งต่อมีเดียจากช่องส่วนตัวใน Telegram Web
// @description:tr  Özel Telegram kanallarından medya yönlendirmeyi etkinleştirir
// @description:uk  Дозволяє пересилати медіа з приватних каналів у Telegram Web
// @description:ug  Telegram Web دە شەخسى كاناللاردىن مېدىيانى ئالماشتۇرۇشنى قوشۇش
// @description:vi  Cho phép chuyển tiếp media từ kênh riêng tư trên Telegram Web
// @author       TurtleD
// @match        https://web.telegram.org/*
// @match        https://webk.telegram.org/*
// @match        https://webz.telegram.org/*
// @grant        none
// @license      D07
// @icon         https://www.google.com/s2/favicons?sz=64&domain=telegram.org
// ==/UserScript==

(function() {
    //Observe when the .selection-wrapper element appears to enable Forward and Delete buttons
    const selectionObserver = new MutationObserver((mutationsList, observer) => {
        const selectionWrapper = document.querySelector('.chat-input-wrapper.selection-wrapper');
        if (selectionWrapper) {
            const forwardBtn = document.querySelector('.selection-container-forward');
            const deleteBtn = document.querySelector('.selection-container-delete');

            if (forwardBtn) forwardBtn.disabled = false;
            if (deleteBtn) deleteBtn.disabled = false;
        }
    });

    selectionObserver.observe(document.body, {
        childList: true,
        subtree: true
    });

    const forwardsObserver = new MutationObserver(() => {
        document.querySelectorAll('.bubble.no-forwards').forEach(bubble => {
            bubble.classList.remove('no-forwards');
        });
    });

    forwardsObserver.observe(document.body, {
        childList: true,
        subtree: true
    });

    function addCheckboxToAlbumItems() {
        // Get all album-item
        const albumItems = document.querySelectorAll('.album-item');

        albumItems.forEach((item, index) => {
            // Check checkbox-field and add new
            if (!item.querySelector('.checkbox-field')) {
                // Create checkbox element
                const checkboxWrapper = document.createElement('label');
                checkboxWrapper.classList.add('checkbox-field', 'checkbox-field-round', 'checkbox-without-caption', 'bubble-select-checkbox');

                const checkboxInput = document.createElement('input');
                checkboxInput.type = 'checkbox';
                checkboxInput.id = `input-${index + 1}`; // Set ID for checkbox

                const checkboxBox = document.createElement('div');
                checkboxBox.classList.add('checkbox-box');

                const checkboxBorder = document.createElement('div');
                checkboxBorder.classList.add('checkbox-box-border');

                const checkboxBackground = document.createElement('div');
                checkboxBackground.classList.add('checkbox-box-background');

                const checkboxCheck = document.createElement('svg');
                checkboxCheck.classList.add('checkbox-box-check');
                checkboxCheck.setAttribute('viewBox', '0 0 24 24');
                const useElem = document.createElement('use');
                useElem.setAttribute('href', '#check');
                checkboxCheck.appendChild(useElem);

                // Create checkbox structure
                checkboxBox.appendChild(checkboxBorder);
                checkboxBox.appendChild(checkboxBackground);
                checkboxBox.appendChild(checkboxCheck);

                checkboxWrapper.appendChild(checkboxInput);
                checkboxWrapper.appendChild(checkboxBox);

                item.prepend(checkboxWrapper);  // Add checkbox in album-item
            }
        });
  }
  function addForwardButtonInDiscussion(bubble) {
      if (!bubble.querySelector('.bubble-beside-button.forward')) {
          const button = document.createElement('div');
          button.className = 'bubble-beside-button with-hover forward';
          button.innerHTML = '<span class="tgico"></span>';
          const content = bubble.querySelector('.bubble-content');
          if (content) {
              content.appendChild(button);
          }
      }
  }

   addCheckboxToAlbumItems();
   const globalObserver = new MutationObserver(() => {
       document.querySelectorAll('.bubble.photo:not(.channel-post), .bubble.video:not(.channel-post)')
           .forEach(addForwardButtonInDiscussion);
   });
   globalObserver.observe(document.body, {
       childList: true,
       subtree: true
   });
})();

QingJ © 2025

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