BotChatvdvoem

try to take over the world!

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Для установки этого скрипта вам необходимо установить расширение, такое как Tampermonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name         BotChatvdvoem
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       KoctrX
// @match        https://chatvdvoem.ru
// @grant        none
// ==/UserScript==
obj = {
    text: ['Не те б*яди,\nчто хлеба ради \nспередии сзади \nдают нам е*ти,\nБог их прости! \nА те б*яди - лгущие,\nденьги сосущие,\nе*ать не дающие - \nвот б*яди сущие,\nмать их ети!',
        'Гордишься ты, \nНо ты не идеал, \nСама себе ты набиваешь цену, \nТаких как ты я на х*й одевал, \nИ видит бог не раз ещё одену',
        'Я в Париже живу как денди. \nЖенщин имею до ста. \nМой х*й, как сюжет в легенде, \nПереходит из уст в уста.',
        'Лежу на чужой\nжене, потолок\nприлипает к жопе,\nно мы не ропщем - делаем коммунистов,\nназло буржуазной Европе!\nПусть х*й мой\nкак мачта топорщится!\nМне все равно, кто подо мной -\nжена министра или уборщица!'], // 2230 - max
    update: 1000, // 100mc
    st: false,
    autosave: true
};

_idArr = 0;

flood = {
    connect: function () {
        if (obj.st) {
            document.getElementById('but-start').click();
        }
    },
    close: function () {
        if (obj.st) {
            document.getElementById('but-close').click();
        }
    },
    saveToCookie: function () {
        if (obj.text.length > 0 && obj.text.toString().length > 0) {
            var jsonData = JSON.stringify(obj.text);
            document.cookie = 'list=' + jsonData + ';path=/';
            flood.mirage({'type': 'id', id: 'saveToCookie', innerP: 'Сохранено', innerE: 'Сохранить'});
        } else {
            alert('Вы не можете сохранить пустой объект, добавьте текст и после сохраните.');
        }
    },
    mirage: function (cart) {
        var object = (cart.type === 'id') ? document.getElementById(cart.id) : document.getElementsByClassName(cart.id)[cat.c];
        object.disabled = true;
        object.innerHTML = cart.innerP;
        setTimeout(function () {
            object.disabled = false;
            object.innerHTML = cart.innerE;
        }, 1000);
    },
    clearCookie: function () {
        if (confirm('Вы уверены что хотите удалить данные с куков? ')) {
            document.cookie = 'list=;path=/';
            flood.mirage({'type': 'id', id: 'delCo', innerP: 'Очищено', innerE: 'Очистить куки'});
        }
    },
    getCookie: function (name) {
        var matches = document.cookie.match(new RegExp(
            "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
        ));
        return matches ? decodeURIComponent(matches[1]) : undefined;
    },
    flood: function () {
        if (obj.text.length >= 1 && obj.text.toString().length >= 1) {
            var sub = document.getElementById('_submit');
            if (obj.st) {
                obj.st = false;
                sub.value = 'Включить';
            } else {
                obj.st = true;
                flood.sender();
                sub.value = 'Выключить';
            }
        } else {
            alert('Добавьте текст для флуда');
        }
    },
    list: function (tr) {
        if (!tr) {
            try {
                document.getElementsByClassName('list')[0].remove();
            } catch (e) {
            }
            if (obj.text.length > 0) {
                var elem = this.listRender(this.createObjects({type: 'div', attr: [['class', 'list']]}));
                document.getElementById('projects').appendChild(elem);
            }
        } else {
            document.getElementsByClassName('listcl')[_idArr].innerHTML = flood.miniSub(_idArr);
        }
    },
    getWriteList: function (id, tray) {
        document.getElementById('_textArea').focus();
        if (document.getElementById('_textArea').value.length < 1 && !tray) {
            alert('Введите текст, не оставляйте пустое поле');
        } else {
            _idArr = id;
            document.getElementById('_textArea').value = obj.text[id];
        }
    },
    deleteElemList: function () {
        if (confirm("Вы уверены что хотите удалить текст:\n" + obj.text[_idArr])) {
            obj.text.splice(_idArr, 1);
            flood.getWriteList(0, true);
            flood.list();
        }
    },
    removeList: function () {
        if (confirm("Вы уверены что хотите очистить весь список?")) {
            obj.text = [''];
            flood.getWriteList(0, true);
            flood.list();
        }
    },
    listRender: function (elem) {
        for (var i = 0; i < obj.text.length; i++) {
            var el = flood.createObjects({
                'type': 'div',
                attr: [['onclick', 'flood.getWriteList(' + i + ');'], ['class', 'listcl']]
            });
            el.innerHTML = flood.miniSub(i);
            elem.appendChild(el);
        }
        return elem;
    },
    miniSub: function (i) {
        return (obj.text[i].length > 30) ? obj.text[i].substring(0, 30) + '...' : obj.text[i];
    },
    sendActive: function () {
        flood.updateText();
        if (obj.text[_idArr].length >= 1) {
            this.sendMessage(obj.text[_idArr]);
        } else if (document.getElementById('_textArea').value.length >= 1) {
            flood.sendActive();
        } else {
            alert('Введите что нибудь');
            document.getElementById('_textArea').focus();
        }
    },
    sendMessage: function (message) {
        chat.sendMessage(message);
    },
    getTextFlood: function () {
        if (obj.text.length > 0) {
            flood.sendMessage(obj.text[flood.randomize(0, obj.text.length - 1)]);
        } else {
            alert('Добавьте текст для флуда.');
        }
    },
    randomize: function (x, y) {
        return Math.floor(x + Math.random() * ((y + 1) - x));
    },
    sender: function () {
        if (obj.st) {
            if (chat.isChatStarted()) {
                flood.getTextFlood();
                setTimeout(function () {
                    flood.close();
                    flood.timer();
                }, obj.update);
            } else {
                setTimeout(function () {
                    flood.connect();
                    flood.timer();
                }, obj.update);
            }
        }
    },
    chat: function () {
        var but = document.getElementById('_but');
        var teq = document.getElementById('text');
        if (teq.getAttribute('contenteditable') === 'true') {
            teq.setAttribute('contenteditable', 'false');
            but.value = 'Включить чат';
        } else {
            teq.setAttribute('contenteditable', 'true');
            but.value = 'Выключить чат';
        }
    },
    setPoster: function () {
        var projects = document.getElementById('projects');
        document.getElementById('log-wrap').setAttribute('class', 'show-projects');
        var log = document.createElement('style');
        log.setAttribute('type', 'text/css');
        log.innerHTML = '.show-projects #log { right:315px; }';
        log.innerHTML += '.list { width: 100%; background: #000; }';
        log.innerHTML += '.listcl { padding: 3px 5px; background: #3d3d3d; margin: 1px 0; color: #fff; cursor: pointer; }';
        log.innerHTML += '.listcl:hover { background: rgba(0,0,0,0.5); }';
        log.innerHTML += '.btn { margin: 2px 2px; padding: 3px; cursor: pointer; border: 1px solid #000; }';
        document.head.appendChild(log);
        projects.innerHTML = '';
        projects.style = 'width: 300px; display: inline-block;';
        projects.appendChild(this.createForm());
        if (obj.autosave) {
            document.getElementById('_update').disabled = true;
        }
        if (this.getCookie('list')) {
            obj.text = flood.resCookie();
        }
        document.getElementById('_textArea').value = obj.text[0];
        this.list();
    },
    resCookie: function () {
        var test = JSON.parse(this.getCookie('list'));
        return ({}.toString.call(test).slice(8, -1) === 'Array') ? test : obj.text;
    },
    updateText: function (re) {
        if (document.getElementById('_textArea').value.length >= 1 || re) {
            obj.text[_idArr] = document.getElementById('_textArea').value;
        } else {
            document.getElementById('_textArea').focus();
            return alert('Нельзя сохранить пустое поле');
        }
        if (!re) {
            flood.list();
            flood.mirage({'type': 'id', id: '_update', innerP: 'Сохранено', innerE: 'Сохранить'});
        } else {
            flood.list(true);
        }
    },
    createForm: function () {
        var tie = document.createElement('form');
        tie.setAttribute('onsubmit', 'return false;');
        tie.appendChild(this.createObjects({
            'type': 'button',
            inner: 'Новый',
            attr: [['class', 'btn'], ['onclick', 'flood.newTicket();'], ['title', 'Добавить текст']]
        }));
        tie.appendChild(this.createObjects({
            'type': 'button',
            inner: 'Удалить',
            attr: [['class', 'btn'], ['onclick', 'flood.deleteElemList();'], ['title', 'Удалить текущий текст']]
        }));
        tie.appendChild(this.createObjects({
            'type': 'button',
            inner: 'Удалить все',
            attr: [['class', 'btn'], ['onclick', 'flood.removeList();'], ['title', 'Удалить все сохраненные тексты']]
        }));
        tie.appendChild(this.createObjects({
            'type': 'input',
            attr: [['type', 'submit'], ['id', '_update'], ['class', 'btn'], ['onclick', 'flood.updateText();'], ['value', 'Сохранить']]
        }));
        var style = 'border: 1px solid #000; height: 100px; width: 95%; resize: none; padding: 5px; font-size: 14px;';
        tie.appendChild(this.createObjects({
            'type': 'textarea',
            attr: [['id', '_textArea'], ['onkeyup', '(obj.autosave)?flood.updateText(true):"";'], ['style', style]]
        }));
        style = 'padding: 5px; font-size: 16px; border-radius: 5px; cursor: pointer; margin: 5px;';
        tie.appendChild(this.createObjects({
            'type': 'input',
            attr: [['type', 'submit'], ['id', '_active'], ['class', 'btn'], ['onclick', 'flood.sendActive();'], ['value', 'Отправить']]
        }));
        tie.appendChild(this.createObjects({
            'type': 'input',
            attr: [['type', 'submit'], ['id', '_submit'], ['class', 'btn'], ['onclick', 'flood.flood();'], ['value', 'Включить']]
        }));
        tie.appendChild(this.createObjects({
            'type': 'input',
            attr: [['type', 'submit'], ['id', '_but'], ['class', 'btn'], ['onclick', 'flood.chat();'], ['value', 'Выключить чат']]
        }));
        var inputCheck = '<input type="checkbox" ' + ((obj.autosave) ? 'checked' : 'none') + ' id="_autosave" onclick="flood.autosave();"/>';
        tie.appendChild(this.createObjects({
            'type': 'div',
            inner: '<label>Автосохранение ' + inputCheck + '</label>',
            attr: [['class', 'save']]
        }));
        tie.appendChild(this.createObjects({
            'type': 'button',
            inner: 'Сохранить в куки',
            attr: [['class', 'save btn'], ['id', 'saveToCookie'], ['onclick', 'flood.saveToCookie();']]
        }));
        tie.appendChild(this.createObjects({
            'type': 'button',
            inner: 'Очистить куки',
            attr: [['class', 'save btn'], ['id', 'delCo'], ['onclick', 'flood.clearCookie();']]
        }));
        return tie;
    },
    autosave: function () {
        obj.autosave = document.getElementById('_autosave').checked;
        document.getElementById('_update').disabled = (obj.autosave) ? true : false;
        alert((obj.autosave) ? 'Автосохранение включено' : 'Автосохранение отключено');
    },
    newTicket: function () {
        if (obj.text[_idArr].length < 1) {
            alert('Введите текст, не оставляйте пустое поле');
        } else {
            obj.text.push('');
            document.getElementById('_textArea').focus();
            this.getWriteList(obj.text.length - 1);
            this.list();
        }
    },
    timer: function () {
        setTimeout(function () {
            flood.sender();
        }, obj.update);
    },
    createObjects: function (obj) {
        var object = document.createElement(obj.type);
        if (obj.inner) {
            object.innerHTML = obj.inner;
        }
        if (obj.attr) {
            for (var i = 0; i < obj.attr.length; i++) {
                object.setAttribute(obj.attr[i][0], obj.attr[i][1]);
            }
        }
        return object;
    }
};
flood.setPoster();