您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Блокировка эмодзи Twitch по каналу с интерфейсом для управления (включение через Tampermonkey)
当前为
// ==UserScript== // @name Block Twitch Emotes by Channel Author . // @namespace http://tampermonkey.net/ // @version 1.1 // @license MIT // @description Блокировка эмодзи Twitch по каналу с интерфейсом для управления (включение через Tampermonkey) // @author lelusandE // @match https://www.twitch.tv/* // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @grant GM_setValue // @grant GM_getValue // @icon https://avatars.mds.yandex.net/i?id=b92aedab3a27152b2e6ba57a7555951c16d98483-7762396-images-thumbs&ref=rim&n=33&w=200&h=200 // ==/UserScript== (function () { 'use strict'; // Получаем список заблокированных каналов из хранилища const blockedChannels = GM_getValue('blockedChannels', []); // Флаг, показывающий, отображается ли панель let isPanelVisible = false; // Создание интерфейса управления (панель с кнопками) const controlPanel = document.createElement('div'); controlPanel.style.position = 'fixed'; controlPanel.style.top = '20px'; controlPanel.style.left = '20px'; controlPanel.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; controlPanel.style.color = 'white'; controlPanel.style.padding = '10px'; controlPanel.style.borderRadius = '10px'; controlPanel.style.zIndex = '1000'; controlPanel.style.display = 'none'; // Изначально скрыто // Заголовок панели const title = document.createElement('h3'); title.textContent = 'Block Emotes - Manage Channels'; controlPanel.appendChild(title); // Поле для ввода имени канала const inputField = document.createElement('input'); inputField.type = 'text'; inputField.placeholder = 'Enter channel name'; controlPanel.appendChild(inputField); // Кнопка добавления канала const addButton = document.createElement('button'); addButton.textContent = 'Add Channel'; addButton.onclick = () => { const channelName = inputField.value.trim(); if (channelName && !blockedChannels.includes(channelName)) { blockedChannels.push(channelName); GM_setValue('blockedChannels', blockedChannels); updateChannelList(); inputField.value = ''; } }; controlPanel.appendChild(addButton); // Кнопка удаления канала const removeButton = document.createElement('button'); removeButton.textContent = 'Remove Channel'; removeButton.onclick = () => { const channelName = inputField.value.trim(); const index = blockedChannels.indexOf(channelName); if (index !== -1) { blockedChannels.splice(index, 1); GM_setValue('blockedChannels', blockedChannels); updateChannelList(); inputField.value = ''; } }; controlPanel.appendChild(removeButton); // Список заблокированных каналов const channelList = document.createElement('ul'); controlPanel.appendChild(channelList); // Обновляем список каналов function updateChannelList() { channelList.innerHTML = ''; blockedChannels.forEach(channel => { const listItem = document.createElement('li'); listItem.textContent = channel; channelList.appendChild(listItem); }); } // Функция для скрытия смайликов, если они принадлежат заблокированному каналу function hideEmotesForChannel(node) { const emotes = node.querySelectorAll('.chat-line__message img'); emotes.forEach(emote => { const emoteName = emote.getAttribute('alt'); // Проверяем, принадлежит ли смайлик каналу из списка if (emoteName && isEmoteFromBlockedChannel(emoteName)) { console.log('Скрываем смайлик для канала:', emoteName); // Для отладки emote.style.display = 'none'; } }); } // Проверка, принадлежит ли смайлик заблокированному каналу function isEmoteFromBlockedChannel(emoteName) { return blockedChannels.some(channel => emoteName.includes(channel)); } // Наблюдатель за изменениями в DOM для чата const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.addedNodes.length) { mutation.addedNodes.forEach(node => { if (node.nodeType === 1) { // Проверяем, что это элемент hideEmotesForChannel(node); } }); } }); }); // Функция для ожидания появления контейнера чата function waitForChatContainer() { const chatContainer = document.querySelector('.chat-scrollable-area__message-container') || document.querySelector('.ScThumbnail__wrapper'); if (chatContainer) { observer.observe(chatContainer, { childList: true, subtree: true }); console.log("Найден контейнер чата."); } else { console.log("Чат еще не загружен. Повторная попытка..."); setTimeout(waitForChatContainer, 1000); // Пробуем снова через 1 секунду } } // Запускаем функцию ожидания контейнера чата waitForChatContainer(); // Функция для переключения видимости панели function togglePanelVisibility() { isPanelVisible = !isPanelVisible; controlPanel.style.display = isPanelVisible ? 'block' : 'none'; } // Добавляем команду в меню Tampermonkey для управления панелью GM_registerMenuCommand('Toggle Block Emotes Panel', togglePanelVisibility); // Добавляем панель на страницу document.body.appendChild(controlPanel); // Инициализируем список каналов updateChannelList(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址