// ==UserScript== // @name OG Kick Advanced Tools - Chat Spammer + Rate Limit Bypass // @namespace http://tampermonkey.net/ // @version 2.1 // @description Advanced chat spammer for Kick.com // @author Robert // @icon https://www.google.com/s2/favicons?sz=64&domain=kick.com // @match https://kick.com/* // @grant none // @run-at document-start // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; const SCRIPT_VERSION = '2.0'; const STORED_VERSION_KEY = 'kickToolsVersion'; const originalFetch = window.fetch; let initialTokenLogged = false; window.fetch = async function(...args) { let [resource, config] = args; let url = ''; let requestHeaders = {}; if (typeof resource === 'string') { url = resource; } else if (resource instanceof Request) { url = resource.url; } if (url.includes('/api/v2/channels/') && url.includes('/chatroom')) { const response = await originalFetch.apply(this, args); const clonedResponse = response.clone(); try { const data = await clonedResponse.json(); const newId = data.id; if (newId && newId !== chatroomId) { chatroomId = newId; const chatIdDisplay = document.getElementById('chatIdDisplay'); if (chatIdDisplay) { chatIdDisplay.textContent = chatroomId; } } } catch (e) { console.error(`[Kick Tools] Failed to parse chatroom response: ${e.message}`); } return response; } if (config && config.headers) { if (config.headers instanceof Headers) { config.headers.forEach((v, k) => { requestHeaders[k.toLowerCase()] = v; }); } else { for (const k in config.headers) { requestHeaders[k.toLowerCase()] = config.headers[k]; } } } else if (resource instanceof Request && resource.headers) { resource.headers.forEach((v, k) => { requestHeaders[k.toLowerCase()] = v; }); } const authHeaderValue = requestHeaders['authorization']; if (authHeaderValue && typeof authHeaderValue === 'string' && authHeaderValue.startsWith('Bearer ')) { const token = authHeaderValue.substring(7); if (token) { const currentStoredToken = localStorage.getItem('bearerToken'); if (token !== currentStoredToken) { localStorage.setItem('bearerToken', token); if (typeof window.bearerTokenGlobal !== 'undefined') window.bearerTokenGlobal = token; if (!initialTokenLogged) { console.log('[Kick Tools] Bearer token detected/updated and stored.'); initialTokenLogged = true; } } } } return originalFetch.apply(this, args); }; window.bearerTokenGlobal = localStorage.getItem('bearerToken') || null; let chatroomId = null; let spamStatus = 'unknown'; let notificationShown = false; const randomEmotes = [ '[emote:39286:YOUTried]', '[emote:37239:WeSmart]', '[emote:37240:WeirdChamp]', '[emote:39284:vibePlz]', '[emote:37237:TriKool]', '[emote:39283:ToXiC]', '[emote:37236:ThisIsFine]', '[emote:37235:SUSSY]', '[emote:28633:SenpaiWhoo]', '[emote:39282:saltyTrain]', '[emote:37248:ratJAM]', '[emote:37234:Prayge]', '[emote:39279:PPJedi]', '[emote:39277:politeCat]', '[emote:37230:POLICE]', '[emote:37233:PogU]', '[emote:39275:peepoShyy]', '[emote:37246:peepoRiot]', '[emote:37245:peepoDJ]', '[emote:37232:PeepoClap]', '[emote:37231:PatrickBoo]', '[emote:28632:OuttaPocke]', '[emote:37229:OOOO]', '[emote:28631:NugTime]', '[emote:37228:NODDERS]', '[emote:39273:MuteD]', '[emote:37244:modCheck]', '[emote:43404:mericKat]', '[emote:37227:LULW]', '[emote:39272:LetMeIn]', '[emote:39261:kkHuh]', '[emote:55886:kickSadge]', '[emote:37226:KEKW]', '[emote:37225:KEKLEO]', '[emote:39269:KEKByebye]', '[emote:39256:KatKiss]', '[emote:305040:KappA]', '[emote:39268:HYPERCLAPH]', '[emote:39267:HaHaaHaHaa]', '[emote:37224:GIGACHAD]', '[emote:37243:gachiGASM]', '[emote:39402:Flowie]', '[emote:37221:EZ]', '[emote:39265:EDMusiC]', '[emote:39262:duckPlz]', '[emote:37220:DonoWall]', '[emote:39260:DanceDance]', '[emote:39258:coffinPls]', '[emote:37218:Clap]', '[emote:37242:catblobDan]', '[emote:39254:CaptFail]', '[emote:37217:Bwop]', '[emote:39251:beeBobble]', '[emote:39250:BBooomer]', '[emote:37215:AYAYA]' ]; function showKickNotification(text, duration = 5000) { let container = document.getElementById('kick-toast-container'); if (!container) { container = document.createElement('div'); container.id = 'kick-toast-container'; container.style.cssText = 'position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); z-index: 10000; display: flex; flex-direction: column; align-items: center; gap: 10px; pointer-events: none;'; document.body.appendChild(container); } const toast = document.createElement('div'); toast.textContent = text; toast.style.cssText = ` background-color: #262626; color: #fff; padding: 12px 20px; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); font-family: 'Roobert', 'Inter', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif; font-size: 14px; font-weight: 500; opacity: 0; transform: translateY(20px); transition: opacity 0.3s ease, transform 0.3s ease; `; container.appendChild(toast); setTimeout(() => { toast.style.opacity = '1'; toast.style.transform = 'translateY(0)'; }, 10); setTimeout(() => { toast.style.opacity = '0'; toast.style.transform = 'translateY(20px)'; toast.addEventListener('transitionend', () => { toast.remove(); if (container.childElementCount === 0) { container.remove(); } }, { once: true }); }, duration); } function createUI() { if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', buildActualUI); } else { buildActualUI(); } } function buildActualUI() { if (document.getElementById('kick-tools-ui')) return; window.bearerTokenGlobal = localStorage.getItem('bearerToken') || null; const ui = document.createElement('div'); ui.style.cssText = ` position: fixed; top: 20px; right: 20px; background: rgba(30, 30, 30, 0.75); backdrop-filter: blur(16px) saturate(180%); -webkit-backdrop-filter: blur(16px) saturate(180%); border: 1px solid rgba(255, 255, 255, 0.125); padding: 0; border-radius: 12px; box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); z-index: 9999; color: #ffffff; font-family: 'Segoe UI', Arial, sans-serif; width: 450px; height: 450px; display: flex; overflow: hidden; opacity: 0; transform: scale(0.95) translateY(10px); transition: opacity 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94), transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); `; ui.setAttribute('id', 'kick-tools-ui'); const currentTokenForUI = window.bearerTokenGlobal || ''; ui.innerHTML = `
Welcome to KickTools v${SCRIPT_VERSION}
For support and updates, join the Telegram: @kickbot_pro
`; backdrop.appendChild(popup); document.body.appendChild(backdrop); setTimeout(() => { backdrop.style.opacity = '1'; popup.style.opacity = '1'; popup.style.transform = 'scale(1)'; }, 10); document.getElementById('close-update-popup').addEventListener('click', () => { backdrop.style.opacity = '0'; popup.style.transform = 'scale(0.9)'; backdrop.addEventListener('transitionend', () => backdrop.remove(), { once: true }); }); } function checkForUpdate() { const storedVersion = localStorage.getItem(STORED_VERSION_KEY); if (storedVersion !== SCRIPT_VERSION) { showUpdatePopup(); } } function setupEventListeners() { const spamButton = document.getElementById('spamButton'); const messageInput = document.getElementById('messageInput'); const countInput = document.getElementById('countInput'); const tokenInput = document.getElementById('tokenInput'); const setTokenButton = document.getElementById('setTokenButton'); const saveButton = document.getElementById('saveButton'); const savedMessagesSelect = document.getElementById('savedMessages'); const delayInput = document.getElementById('delayInput'); const randomEmoteCheckbox = document.getElementById('randomEmoteCheckbox'); const emoteButtons = { kekwButton: '[emote:37226:KEKW]', patrickBooButton: '[emote:37231:PatrickBoo]', thisIsFineButton: '[emote:37236:ThisIsFine]', modCheckButton: '[emote:37244:modCheck]', muteDButton: '[emote:39273:MuteD]', weSmartButton: '[emote:37239:WeSmart]' }; const minimizeButton = document.getElementById('minimizeButton'); const tabButtons = document.querySelectorAll('#tab-buttons button'); tabButtons.forEach(button => { button.addEventListener('click', () => { document.querySelectorAll('.tab-content').forEach(tab => { tab.style.display = 'none'; tab.style.opacity = '0'; tab.style.transform = 'translateY(10px)'; }); const tabContent = document.getElementById(`${button.dataset.tab}-tab`); if (tabContent) { tabContent.style.display = 'block'; setTimeout(() => { tabContent.style.opacity = '1'; tabContent.style.transform = 'translateY(0)'; }, 10); } tabButtons.forEach(btn => { btn.style.background = 'transparent'; btn.style.color = '#eee'; }); button.style.background = 'rgba(0, 255, 0, 0.2)'; button.style.color = '#fff'; if (button.dataset.tab === 'settings') { const tokenField = document.getElementById('tokenInput'); if (tokenField) tokenField.value = localStorage.getItem('bearerToken') || ''; } }); }); if (tabButtons.length > 0) { const firstTab = document.getElementById('chat-tab'); firstTab.style.display = 'block'; firstTab.style.opacity = '1'; firstTab.style.transform = 'translateY(0)'; tabButtons[0].style.background = 'rgba(0, 255, 0, 0.2)'; tabButtons[0].style.color = '#fff'; } spamButton?.addEventListener('click', () => { sendMessages(messageInput.value, parseInt(countInput.value) || 1, parseInt(delayInput.value) || 0, randomEmoteCheckbox.checked); }); setTokenButton?.addEventListener('click', () => { const manualToken = tokenInput.value.trim(); if (manualToken) { window.bearerTokenGlobal = manualToken; localStorage.setItem('bearerToken', manualToken); } else { localStorage.removeItem('bearerToken'); window.bearerTokenGlobal = null; } }); saveButton?.addEventListener('click', () => { const msg = messageInput.value.trim(); if (!msg) return; let saved = JSON.parse(localStorage.getItem('savedMessagesKickTools')) || []; if (!saved.includes(msg)) { saved.push(msg); localStorage.setItem('savedMessagesKickTools', JSON.stringify(saved)); populateSavedMessages(); } }); savedMessagesSelect?.addEventListener('change', () => { const idx = savedMessagesSelect.value; if (idx === '') return; const saved = JSON.parse(localStorage.getItem('savedMessagesKickTools')) || []; messageInput.value = saved[idx]; }); Object.keys(emoteButtons).forEach(id => { document.getElementById(id)?.addEventListener('click', () => { messageInput.value += ` ${emoteButtons[id]}`; messageInput.focus(); }); }); minimizeButton?.addEventListener('click', () => { const ui = document.getElementById('kick-tools-ui'); if (ui) ui.style.display = 'none'; createMinimizedIcon(); }); } createUI(); })();