您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Block all Twitch ads, automatically claim bonus points, auto join raids, inject BTTV emotes into Twitch emoji picker, and promote Discord server
当前为
// ==UserScript== // @name Twitch Turbo + // @namespace https://github.com/Brembo19 // @version 1.4.1 // @description Block all Twitch ads, automatically claim bonus points, auto join raids, inject BTTV emotes into Twitch emoji picker, and promote Discord server // @author Brembo19 // @match *://*.twitch.tv/* // @grant none // ==/UserScript== (async function() { 'use strict'; const blockAdsInVideo = () => { const video = document.querySelector('video'); if (video && video.src.includes('ad_')) { video.src = ''; // Clear ad source console.log('Ad blocked in video stream'); } }; const removeAdBanners = () => { const adSelectors = [ '[aria-label="Advertisement"]', '.ad-banner', '.ad-slot', '.tw-ad-container', '[data-ad="true"]', 'div[class*="ad-"]', 'div[class*="sponsored"]' ]; adSelectors.forEach(selector => { document.querySelectorAll(selector).forEach(ad => ad.remove()); }); }; const observeDynamicContent = () => { const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.type === 'childList') { removeAdBanners(); } }); }); observer.observe(document.body, { childList: true, subtree: true }); }; const autoClaimBonus = () => { let claiming = false; const observer = new MutationObserver(() => { const bonus = document.querySelector('.claimable-bonus__icon'); if (bonus && !claiming) { bonus.click(); claiming = true; console.log('Bonus claimed'); setTimeout(() => { claiming = false; }, Math.random() * 1000 + 1000); } }); observer.observe(document.body, { childList: true, subtree: true }); }; const autoJoinRaid = () => { const observer = new MutationObserver(() => { const raidButton = document.querySelector('button[data-test-selector="raid-banner__join-button"]'); if (raidButton) { raidButton.click(); console.log('Automatically joined the raid'); } }); observer.observe(document.body, { childList: true, subtree: true }); }; const injectBTTVEmotesIntoEmojiPicker = async () => { try { const response = await fetch('https://betterttv.com/emotes/popular'); const data = await response.json(); const emotes = data.emotes; const observer = new MutationObserver(() => { const emojiPicker = document.querySelector('.chat-input__picker'); if (emojiPicker && !document.querySelector('.bttv-emote')) { emotes.forEach(emote => { const emoteImg = document.createElement('img'); emoteImg.src = `https://cdn.betterttv.net/emote/${emote.id}/1x`; emoteImg.alt = emote.code; emoteImg.title = emote.code; emoteImg.classList.add('bttv-emote'); emoteImg.style.width = '28px'; emoteImg.style.height = '28px'; emoteImg.style.margin = '5px'; const emojiCategory = emojiPicker.querySelector('[data-test-selector="emote-picker"]'); if (emojiCategory) { emojiCategory.appendChild(emoteImg); } }); console.log('BTTV emotes added to emoji picker'); } }); observer.observe(document.body, { childList: true, subtree: true }); } catch (error) { console.error('Error fetching BTTV emotes:', error); } }; blockAdsInVideo(); removeAdBanners(); observeDynamicContent(); autoClaimBonus(); autoJoinRaid(); injectBTTVEmotesIntoEmojiPicker(); setInterval(blockAdsInVideo, 1000); setInterval(removeAdBanners, 2000); // Discord invite in the console for users who want to join console.log('Join our Discord: https://discord.gg/Cwm8fwknKC'); })();