Telegram Text Copier

Telegram web uygulamasında içeriğin kaydedilmesini kısıtlayan özel kanallardan metin kopyalamayı etkinleştirir.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

Advertisement:

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

Advertisement:

작성자
STELLAR STELS
일일 설치 수
1
총 설치 수
934
평점
1 0 1
버전
1.0.1
생성일
2025-07-29
갱신일
2025-07-29
크기
12.3KB
라이선스
GNU GPLv3
적용 사이트

Основные улучшения и исправления:
@license GNU GPLv3: Я явно добавил @license GNU GPLv3тег в метаданные UserScript, как вы указали в исходном запросе. Это крайне важно для определения условий использования и распространения вашего скрипта.

'use strict';: Добавляется в начало IIFE для повышения качества кода и предотвращения ошибок.

Улучшения регистратора :

Метод errorтеперь принимает необязательный errorобъект, что позволяет вести более подробную регистрацию ошибок.

tel_copy_textУлучшения функций :

Проверка пустого текста : добавлена проверка if (!text || text.trim() === "")для предотвращения попыток копирования пустых строк.

Улучшения визуальной обратной связи :

При отображении Copied!или стили Failed!кнопок displayи widthкнопок временно корректируются, чтобы обеспечить видимость всего текста. Затем они восстанавливаются.

Сообщение об ошибке ( Failed!) теперь окрашивается в красный цвет для более четкой обратной связи.

setupCopyListenersУточнения :

Захват целевого контекстного меню : contextmenuпрослушиватель событий теперь проверяет textEl.contains(e.target), lastRightClickedMessageTextзаполняется ли контекстное меню только в том случае, если щелчок правой кнопкой мыши действительно пришёлся на сам текстовый контент, а не на изображение, видео или пустое место внутри всплывающей подсказки. Это помогает предотвратить добавление пункта «Копировать текст» в контекстное меню, если на самом деле не было щелчка правой кнопкой мыши по текстовому сообщению.

ОчиститьlastRightClickedMessageText : добавлен clickпрослушиватель событий, который documentочищает lastRightClickedMessageTextконтекстное меню при щелчке мышью вне контекстного меню. Это гарантирует, что команда «Копировать текст» не будет сохраняться в контекстном меню для не связанных с ним щелчков после первого щелчка правой кнопкой мыши.

Логика кнопки «Копировать при наведении» ( addHoverCopyButtonZ, addHoverCopyButtonK) :

Предотвращение дублирования кнопок : добавлены проверки if (messageEl.querySelector('.tel-copy-button-z'))в if (bubble.querySelector('.tel-copy-button-k'))начале этих функций, чтобы предотвратить добавление нескольких кнопок копирования в одно и то же сообщение, если они setIntervalзапускаются несколько раз для уже обработанного сообщения.

Имена семантических классов : переименованы tel-copy-buttonв tel-copy-button-zи tel-copy-button-kдля кнопок, специфичных для приложений, чтобы различать их.

Плавные переходы : изменено transition: "opacity 0.2s"на transition: "opacity 0.2s ease-in-out"для более плавной анимации.

pointerEventsУправление : добавляется pointerEvents: 'none'изначально и pointerEvents: 'auto'при наведении курсора. Это гарантирует, что кнопка не будет перехватывать нажатия, когда она прозрачна и невидима, что улучшает взаимодействие пользователя с основным сообщением.

Проверка текстового содержимого : добавлено if (!textEl || !textEl.innerText.trim()) return;, чтобы избежать добавления кнопок в пустые всплывающие окна сообщений.

Логика кнопки контекстного меню ( addContextMenuCopyButton) :

Предотвращение дублирования кнопок : добавлено if (menuEl.querySelector('.tel-context-copy-button'))для предотвращения добавления нескольких опций «Копировать текст» в один и тот же экземпляр контекстного меню.

Единообразное позиционирование : добавлена логика для вставки кнопки «Копировать текст» после существующих пунктов «Ответить» или «Переслать» ( replyItem.after(copyButton);) для лучшей интеграции с нативным меню Telegram. Если такой пункт не найден, используется appendChild.

menuEl.remove(): Закомментировал руководство menuEl.remove(), так как собственная обработка контекстного меню Telegram обычно удаляет его, а вмешательство может привести к неожиданному поведению.

Флаги обработки, специфичные для приложения :

Изменено _tel_processedна _tel_processed_zи _tel_processed_kдля сообщений и _tel_processed_z_contextи _tel_processed_k_contextдля контекстных меню. Это гарантирует, что флаги обработки будут разными для каждой версии приложения Telegram Web (Z и K), предотвращая потенциальные конфликты или некорректную обработку при смене пользователем приложения или запуске скрипта в гибридной среде.

Селектор элементов текста сообщения (App-K) :

В App-K Specific Logic, добавлено .message-textк textElселектору запроса: ".message-text, .message .text-content, .message .translatable-message". Это охватывает больше случаев для элементов текста сообщения в Web K.

Эти улучшения делают скрипт более надежным, удобным для пользователя и лучше интегрированным с веб-приложениями Telegram.СЛАВА УКРАИНА