Auto Lingos Logo
Auto Lingos Premium Bot
Nowość: Wersja 1.1 z natywną obsługą React

Zautomatyzuj Swoją Naukę z Auto Lingos

Oszczędzaj czas i przestań klikać. Nasz zaawansowany skrypt automatycznie rozwiązuje lekcje, zapamiętuje słówka w tle i gwarantuje 100% poprawności po fazie samo-nauki.

300ms
Interwał Web Worker
100%
Samo-ucząca się Baza
0ms
Lagów Interfejsu
Lokalnie
Pełna Prywatność

Technologia klasy Premium

Przemyślana architektura stworzona z dbałością o każdy detal. Bot działa płynnie, nie obciążając przeglądarki.

Szybki Silnik React

Bot natywnie omija blokady frameworka React, wyzwalając odpowiednie zdarzenia input i change, dzięki czemu formularz zawsze aktualizuje swój stan.

nativeSetter.call(val)

Baza Pamięci (Local)

Inteligentny system zapamiętuje poprawne odpowiedzi wyświetlane w czerwonych ramkach Lingosa. Po jednej pomyłce, słowo wpisywane jest bezbłędnie na zawsze.

localStorage['lingos_db']

Wątki w Tle

Zamiast standardowego setInterval, bot wykorzystuje dedykowanego Web Workera. Twój interfejs pozostaje w 100% płynny, a lekcje rozwiązują się błyskawicznie.

new Worker(Blob)

HUD na Stronie

Interfejs użytkownika wbudowany prosto w stronę Lingos.pl. Minimalistyczny, ciemny panel HUD pojawia się w rogu ekranu, umożliwiając podgląd pracy bota w czasie rzeczywistym oraz szybkie pauzowanie.

  • Śledzenie obecnego słówka i odpowiedzi
  • Licznik bazy danych (w czasie rzeczywistym)
  • Pauza 1-kliknięciem
AUTO LINGOS AKTYWNY
Wykryte Pytanie: Apple
Czerwona Ramka: BRAK
Z Pamięci: Jabłko
Słówek w Bazie: 42

Gotowy do akcji?

Pobierz skrypt w 3 super prostych krokach i zacznij automatyzować naukę natychmiast.

1

Zainstaluj Tampermonkey

Jest to darmowe i bezpieczne rozszerzenie do przeglądarki, które pozwala na uruchamianie skryptów użytkownika.

Ważne: Aby skrypty działały, wejdź w zarządzanie Rozszerzeniami przeglądarki, kliknij w szczegóły Tampermonkey i koniecznie włącz opcję Zezwalaj na skrypty użytkownika.

Zainstaluj Menedżer
2

Dodaj Skrypt

Skopiuj kod przygotowany przez nas poniżej. Następnie w Tampermonkey kliknij "Dodaj nowy skrypt", wklej tam cały skopiowany kod i zapisz (Ctrl+S).

3

Ciesz się wolnością

To tyle! Wejdź na platformę, odpal lekcję, a skrypt automatycznie zacznie działać w tle. Twój interfejs HUD poinformuje Cię o gotowości.

Otwórz Lingos.pl

Przezroczysty Kod (Open Source)

Zero ukrytych zapytań. Cały kod wykonuje się lokalnie.

main.js
// ==UserScript==
// @name         Auto Lingos
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Automatyczny bot do lingos.pl
// @author       laweta
// @match        *://*.lingos.pl/*
// @match        *://lingos.pl/*
// @run-at       document-end
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    const STORAGE_KEY = 'lingos_db';
    let lastClickTime = 0;
    const CLICK_INTERVAL = 1000;
    let isActive = true;

    const workerCode = `
        let timer = null;
        self.onmessage = function(e) {
            if (e.data === 'start') {
                if (!timer) timer = setInterval(() => self.postMessage('tick'), 300);
            } else if (e.data === 'stop') {
                if (timer) { clearInterval(timer); timer = null; }
            }
        };
    `;
    const workerBlob = new Blob([workerCode], { type: 'application/javascript' });
    const bgWorker = new Worker(URL.createObjectURL(workerBlob));

    function getDb() {
        return JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}');
    }

    function savePair(q, a) {
        if (!q || !a) return;
        const cleanQ = q.toLowerCase().trim();
        const cleanA = a.trim();
        const db = getDb();

        if (db[cleanQ] !== cleanA) {
            db[cleanQ] = cleanA;
            localStorage.setItem(STORAGE_KEY, JSON.stringify(db));
            console.log(`%c[Lingos Bot] ZAPISANO: "${cleanQ}" -> "${cleanA}"`, 'color: #00ff00; font-weight: bold;');
        }
    }

    function setInputValue(input, val) {
        const nativeSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
        nativeSetter.call(input, val);

        if (input._valueTracker) {
            input._valueTracker.setValue('');
        }

        input.dispatchEvent(new Event('input', { bubbles: true }));
        input.dispatchEvent(new Event('change', { bubbles: true }));
    }

    const ui = document.createElement('div');
    ui.style.cssText = 'position:fixed;bottom:10px;right:10px;z-index:999999;background:#0f172a;color:#f8fafc;padding:12px;border-radius:8px;font-family:monospace;font-size:11px;box-shadow:0 4px 12px rgba(0,0,0,0.5);border:1px solid #334155;width:320px;max-width:calc(100vw - 20px);';
    document.body.appendChild(ui);

    ui.addEventListener('click', (e) => {
        if (e.target && e.target.id === 'toggle-bot-btn') {
            isActive = !isActive;
        }
    });

    function getQuestion() {
        const qEl = document.querySelector('p.text-2xl strong') || document.querySelector('p.text-2xl');
        return qEl ? qEl.textContent.trim().toLowerCase() : null;
    }

    function getRedBoxAnswer() {
        const redEl = document.querySelector('div[class*="bg-red"] span.text-foreground strong, div[class*="bg-red"] strong');
        return redEl ? redEl.textContent.trim() : null;
    }

    function clickNextButton() {
        const now = Date.now();
        if (now - lastClickTime < CLICK_INTERVAL) return;

        const btn = Array.from(document.querySelectorAll('button')).find(b =>
            b.textContent.toLowerCase().includes('dalej') ||
            b.type === 'submit'
        );

        if (btn && !btn.disabled) {
            btn.click();
            lastClickTime = Date.now();
        } else {
            const input = document.getElementById('learning-answer');
            if (input) {
                input.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', keyCode: 13, code: 'Enter', bubbles: true }));
                lastClickTime = Date.now();
            }
        }
    }

    bgWorker.onmessage = function (e) {
        if (e.data !== 'tick') return;

        const question = getQuestion();
        const redAnswer = getRedBoxAnswer();
        const input = document.getElementById('learning-answer');

        const db = getDb();
        const savedAnswer = question ? db[question] : null;

        if (question && redAnswer) {
            savePair(question, redAnswer);
        }

        const statusColor = isActive ? '#4ade80' : '#f87171';
        const statusText = isActive ? 'AKTYWNY' : 'WSTRZYMANY';
        const btnColor = isActive ? '#ef4444' : '#22c55e';
        const btnText = isActive ? 'PAUZA' : 'START';

        ui.innerHTML = `
            <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;">
                <span style="color:#38bdf8;font-weight:bold;">[ AUTO LINGOS ]</span>
                <span style="color:${statusColor};font-weight:bold;font-size:10px;">● ${statusText}</span>
            </div>
            <div>Pytanie: <b style="color:#facc15;">${question || 'NIE WYKRYTO'}</b></div>
            <div>Czerwona ramka: <b style="color:#f87171;">${redAnswer || 'BRAK'}</b></div>
            <div>Odpowiedź w bazie: <b style="color:#4ade80;">${savedAnswer || 'BRAK WPISU'}</b></div>
            <div style="margin-top:6px;padding-top:6px;border-top:1px solid #334155;display:flex;justify-content:space-between;align-items:center;">
                <span style="color:#94a3b8;">Baza słówek: ${Object.keys(db).length}</span>
                <button id="toggle-bot-btn" style="background:${btnColor};color:#fff;border:none;padding:4px 10px;border-radius:4px;cursor:pointer;font-weight:bold;font-size:10px;">${btnText}</button>
            </div>
        `;

        if (isActive) {
            if (input && !input.disabled && question && savedAnswer && input.value !== savedAnswer) {
                setInputValue(input, savedAnswer);
            }
            clickNextButton();
        }
    };

    bgWorker.postMessage('start');
})();

Najczęstsze Pytania

Czy bot sam uczy się nowych słówek?
Tak! Gdy bot po raz pierwszy widzi dane słówko i nie zna odpowiedzi, platforma wyświetli czerwoną ramkę z tłumaczeniem. Bot wykrywa to automatycznie, zapisuje parę w pamięci przeglądarki i przy kolejnym pojawieniu się słówka, odpowiada w 100% bezbłędnie.
Czy używanie bota obciąża moją przeglądarkę?
Nie. Architektura v1.1 została w pełni zoptymalizowana. Logika pętli czasowej przeniesiona jest do Web Workera (procesu w tle), co eliminuje wszelkie lagi interfejsu (UI).
Jak wyłączyć bota w trakcie lekcji?
W każdej chwili możesz kliknąć w przycisk PAUZA/START, znajdujący się w interfejsie HUD (czarne okienko w rogu ekranu). Bot natychmiastowo zmieni swój stan działania.
Dlaczego skrypt nie działa mimo instalacji? (Zezwolenie na skrypty)
Nowe zabezpieczenia w przeglądarkach (szczególnie w Google Chrome z nowym systemem MV3) domyślnie blokują niestandardowe skrypty użytkownika. Aby obejść ten problem:

1. Wpisz w pasku adresu przeglądarki chrome://extensions/ (lub wejdź w panel Rozszerzeń).
2. Znajdź rozszerzenie Tampermonkey i kliknij przycisk Szczegóły.
3. Znajdź i włącz opcję Zezwalaj na skrypty użytkownika.

Po tej operacji odśwież stronę Lingos. Skrypt powinien pojawić się na ekranie!

MIT License

Ładowanie licencji z GitHuba...