Скрипт для Оливера

Версия для сервера CHOCO с ответами от Оливера, RP биографиями и полным списком жалоб с указанием пунктов

// ==UserScript==
// @name         Скрипт для Оливера
// @namespace    https://forum.blackrussia.online
// @version      13.0
// @description  Версия для сервера CHOCO с ответами от Оливера, RP биографиями и полным списком жалоб с указанием пунктов
// @author       Arab_Kalashnikov
// @match        https://forum.blackrussia.online/*
// @include      https://forum.blackrussia.online/
// @grant        none
// @license      MIT
// @icon         0
// ==/UserScript==

(function () {
    'use strict';
    const FAIL_PREFIX = 4;
    const OKAY_PREFIX = 8;
    const WAIT_PREFIX = 2;
    const TECH_PREFIX = 13;
    const CLOSE_PREFIX = 7;

    const START_DECOR = `<div style="text-align: center"><span style="font-family: 'Courier New'">`;
    const END_DECOR = `</span></div>`;

    // Раздел "Оливер ответы" с динамическим указанием пунктов
    const oliver = [
        {
            title: 'Жалоба передана руководству',
            content:
                `${START_DECOR}Доброго времени суток, {{ user.mention }}!<br><br>` +
                `Ваша жалоба была внимательно рассмотрена и передана на утверждение руководству. ` +
                `Просим вас немного подождать — мы ценим ваше терпение и обязательно разберемся в ситуации.<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: WAIT_PREFIX,
            status: true,
            move: 0,
        },
        {
            title: 'Наказание выдано ошибочно',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Ваше наказание было выдано ошибочно и передано на рассмотрение руководству. ` +
                `Ожидайте решения в ближайшее время.<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: WAIT_PREFIX,
            status: true,
            move: 0,
        },
        {
            title: 'Нарушение правил с передачей руководству',
            content: function(ruleText) {
                return `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                       `Вы были наказаны за нарушение пункта правил: [QUOTE]${ruleText}[/QUOTE]. ` +
                       `Ваше дело передано руководству для рассмотрения.<br><br>` +
                       `С уважением, Oliver_Horisov.${END_DECOR}`;
            },
            prefix: WAIT_PREFIX,
            status: true,
            move: 0,
        },
    ];

    // Раздел "RP биографии" (без изменений)
    const biography = [
        {
            title: 'На доработку',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `При рассмотрении вашей RolePlay биографии были выявлены недочеты, требующие исправления. ` +
                `У вас есть 24 часа на доработку.<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: WAIT_PREFIX,
            status: true,
            open: true,
            move: 62,
        },
        {
            title: 'Биография одобрена',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Ваша RolePlay биография успешно проверена и одобрена. Спасибо за вашу работу!<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 61,
        },
        {
            title: 'Истёк срок рассмотрения',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `По истечении 24 часов необходимые изменения в вашей биографии не были внесены.<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: FAIL_PREFIX,
            status: false,
            move: 63,
        },
        {
            title: 'Не по форме',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Ваша RolePlay биография составлена не по установленной форме. Ознакомьтесь с правилами: ` +
                `*[URL='https://forum.blackrussia.online/threads/red-%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F-%D0%A0%D0%9F-%D0%B1%D0%B8%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%B9.7912578/']Кликабельно[/URL]*.<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: FAIL_PREFIX,
            status: false,
            move: 63,
        },
        {
            title: 'Мало информации',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `В вашей RolePlay биографии недостаточно информации. Просим расписать её подробнее.<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: WAIT_PREFIX,
            status: true,
            open: true,
            move: 62,
        },
    ];

    // Раздел "Меню жалоб" с полным списком правил (без изменений)
    const buttons = [
        {
            title: 'Жалоба на рассмотрении',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Ваша жалоба принята и находится в процессе рассмотрения. Просим не создавать дубликаты темы.<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: WAIT_PREFIX,
            status: true,
            move: 0,
        },
        {
            title: 'Не по форме',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Ваша жалоба составлена не по установленной форме. Ознакомьтесь с правилами подачи: ` +
                `*[URL="https://forum.blackrussia.online/index.php?threads/%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D0%BF%D0%BE%D0%B4%D0%B0%D1%87%D0%B8-%D0%B6%D0%B0%D0%BB%D0%BE%D0%B1-%D0%BD%D0%B0-%D0%B8%D0%B3%D1%80%D0%BE%D0%BA%D0%BE%D0%B2.3429394/"]Кликабельно[/URL]*.<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: FAIL_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Нет доказательств',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `В вашей жалобе отсутствуют необходимые доказательства нарушений.<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: FAIL_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'NonRP поведение (2.01)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.01. Запрещено поведение, нарушающее нормы процессов Role Play режима игры | Jail 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Уход от RP (2.02)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.02. Запрещено целенаправленно уходить от Role Play процесса всеразличными способами | Jail 30 минут / Warn[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'NonRP Drive (2.03)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.03. Запрещен NonRP Drive — вождение любого транспортного средства в невозможных для него условиях, а также вождение в неправдоподобной манере | Jail 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Помехи игровому процессу (2.04)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.04. Запрещены любые действия способные привести к помехам в игровом процессе, а также выполнению работ, если они этого не предусматривают и если эти действия выходят за рамки игрового процесса данной работы | Ban 10 дней / Обнуление аккаунта (при повторном нарушении)[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'OOC/IC обман (2.05)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.05. Запрещены любые OOC обманы и их попытки, а также любые IC обманы с нарушением Role Play правил и логики | PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'AFK без ESC (2.07)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.07. Запрещено нахождение в AFK без включенного ESC, создавая помеху другим игрокам | Kick[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Аморальные действия (2.08)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.08. Запрещена любая форма аморальных действий сексуального характера в сторону игроков | Jail 30 минут / Warn[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Слив склада (2.09)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.09. Запрещено сливать склад фракции / семьи путем взятия большого количества ресурсов или превышая допустимый лимит, установленный лидером | Ban 15 - 30 дней / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Обман в /do (2.10)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.10. Запрещено в любой форме обманывать в /do, даже если это в дальнейшем негативно скажется на Вашем игровом персонаже | Jail 30 минут / Warn[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Личное использование транспорта (2.11)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.11. Запрещено использование рабочего или фракционного транспорта в личных целях | Jail 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Помеха блогерам (2.12)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.12. Запрещена помеха в работе блогеров, стримеров (медиа лиц), которые находятся на официальном сотрудничестве с проектом | Ban 7 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'DB (2.13)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.13. Запрещен DB (DriveBy) — намеренное убийство / нанесение урона без веской IC причины на любом виде транспорта | Jail 60 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'TK (2.15)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.15. Запрещен TK (Team Kill) — убийство члена своей или союзной фракции, организации без наличия какой-либо IC причины | Jail 60 минут / Warn (за два и более убийства)[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'SK (2.16)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.16. Запрещен SK (Spawn Kill) — убийство или нанесение урона на титульной территории любой фракции / организации, на месте появления игрока, а также на выходе из закрытых интерьеров и около них | Jail 60 минут / Warn (за два и более убийства)[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'MG (2.18)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.18. Запрещен MG (MetaGaming) — использование ООС информации, которую Ваш персонаж никак не мог получить в IC процессе | Mute 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'DM (2.19)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.19. Запрещен DM (DeathMatch) — убийство или нанесение урона без веской IC причины | Jail 60 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Mass DM (2.20)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.20. Запрещен Mass DM (Mass DeathMatch) — убийство или нанесение урона без веской IC причины трем игрокам и более | Warn / Ban 3 - 7 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Использование багов (2.21)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.21. Запрещено пытаться обходить игровую систему или использовать любые баги сервера | Ban 15 - 30 дней / PermBan (по согласованию с ГА, ЗГА, руководством тех. специалистов)[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Стороннее ПО (2.22)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.22. Запрещено хранить / использовать / распространять стороннее программное обеспечение или любые другие средства, позволяющие получить преимущество над другими игроками | Ban 15 - 30 дней / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Скрытие ошибок (2.23)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.23. Запрещено скрывать от администрации ошибки игровых систем, а также распространять их игрокам | Ban 15 - 30 дней / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Скрытие нарушителей (2.24)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.24. Запрещено скрывать от администрации нарушителей или злоумышленников | Ban 15 - 30 дней / PermBan + ЧС проекта[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Ущерб репутации (2.25)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.25. Запрещены попытки или действия, которые могут навредить репутации проекта | PermBan + ЧС проекта[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Вред ресурсам (2.26)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.26. Запрещено намеренно наносить вред ресурсам проекта (игровые серверы, форум, официальные Discord-серверы и так далее) | PermBan + ЧС проекта[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Распространение информации (2.27)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.27. Запрещено распространение информации и материалов, непосредственно связанных с деятельностью администрации проекта, которые могут повлиять на работу и систему администрации | PermBan + ЧС проекта[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Торговля за реальные деньги (2.28)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.28. Запрещена покупка/продажа внутриигровой валюты за реальные деньги в любом виде | PermBan с обнулением аккаунта + ЧС проекта[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Ущерб экономике (2.30)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.30. Запрещено пытаться нанести ущерб экономике сервера | Ban 15 - 30 дней / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Реклама (2.31)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.31. Запрещено рекламировать на серверах любые проекты, серверы, сайты, сторонние Discord-серверы, YouTube-каналы и тому подобное | Ban 7 дней / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Обман администрации (2.32)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.32. Запрещено введение в заблуждение, обман администрации на всех ресурсах проекта | Ban 7 - 15 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Уязвимость правил (2.33)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.33. Запрещено пользоваться уязвимостью правил | Ban 15 - 30 дней / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Конфликты по национальности (2.35)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.35. На игровых серверах запрещено устраивать IC и OOC конфликты на почве разногласия о национальности и / или религии совершенно в любом формате | Mute 120 минут / Ban 7 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'OOC угрозы (2.37)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.37. Запрещены OOC-угрозы, в том числе и завуалированные, а также угрозы наказанием со стороны администрации | Mute 120 минут / Ban 7 - 15 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Личная информация (2.38)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.38. Запрещено распространять личную информацию игроков и их родственников | Ban 15 - 30 дней / PermBan + ЧС проекта[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Злоупотребление нарушениями (2.39)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.39. Злоупотребление нарушениями правил сервера | Ban 7 - 15 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Деструктивные действия (2.40)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.40. Запрещены совершенно любые деструктивные действия по отношению к проекту: неконструктивная критика, призывы покинуть проект, попытки нарушить развитие проекта или любые другие действия, способные привести к помехам в игровом процессе | Mute 300 минут / Ban 30 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Продажа имущества (2.42)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.42. Попытка продажи любого игрового имущества или игрового аккаунта за реальные деньги | PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Продажа промокодов (2.43)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.43. Запрещена продажа / обмен / покупка поощрительной составляющей от лица проекта, будь то бонус-код, либо промокод, который выдается безвозмездно игрокам в целях промоакций | Mute 120 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'RP сон (2.44)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.44. На серверах проекта запрещен Role Play сон (нахождение в AFK без ESC) | Kick[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Езда по полям (2.46)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.46. Запрещено ездить по полям на любом транспорте | Jail 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Езда по полям на грузовом ТС (2.47)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.47. Запрещено ездить по полям на грузовом транспорте, инкассаторских машинах (работа дальнобойщика, инкассатора) | Jail 60 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Продажа репутации (2.48)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.48. Запрещена продажа, передача, трансфер или покупка репутации семьи любыми способами, скрытие нарушителей, читеров лидером семьи | Обнуление рейтинга семьи / Обнуление игрового аккаунта лидера семьи[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Действия во фракциях (2.50)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.50. Запрещены задержания, аресты, а также любые действия со стороны игроков, состоящих во фракциях в интерьере аукциона, казино, а также во время системных мероприятий | Ban 7 - 15 дней + увольнение из организации[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Аксессуары (2.52)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.52. Запрещено располагать аксессуары на теле персонажа, нарушая нормы морали и этики, увеличивать аксессуары до слишком большого размера | При первом нарушении - обнуление аксессуаров, при повторном нарушении - обнуление аксессуаров + JAIL 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Названия ценностей (2.53)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.53. Запрещено устанавливать названия для внутриигровых ценностей с использованием нецензурной лексики, оскорблений, слов политической или религиозной направленности | Принудительная смена названия семьи / Ban 1 день / При повторном нарушении – обнуление бизнеса[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Неуважение к администрации (2.54)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.54. Запрещено неуважительное обращение, оскорбление, неадекватное поведение, угрозы в любом их проявлении по отношению к администрации | Mute 180 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Багоюз анимации (2.55)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.55. Запрещается багоюз связанный с анимацией в любых проявлениях | Jail 60 / 120 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Невозврат долга (2.57)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]2.57. Запрещается брать в долг игровые ценности и не возвращать их | Ban 30 дней / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Caps Lock в чате (3.02)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.02. Запрещено использование верхнего регистра (Caps Lock) при написании любого текста в любом чате | Mute 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Оскорбления в OOC (3.03)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.03. Любые формы оскорблений, издевательств, расизма, дискриминации, религиозной враждебности, сексизма в OOC чате запрещены | Mute 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Упоминание родных (3.04)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.04. Запрещено оскорбление или косвенное упоминание родных вне зависимости от чата (IC или OOC) | Mute 120 минут / Ban 7 - 15 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Флуд в чате (3.05)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.05. Запрещен флуд — 3 и более повторяющихся сообщений от одного и того же игрока | Mute 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Знаки препинания (3.06)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.06. Запрещено злоупотребление знаков препинания и прочих символов | Mute 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Слив через чаты (3.08)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.08. Запрещены любые формы «слива» посредством использования глобальных чатов | PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Выдача за администратора (3.10)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.10. Запрещена выдача себя за администратора, если таковым не являетесь | Ban 7 - 15 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Злоупотребление командами (3.11)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.11. Запрещено введение игроков проекта в заблуждение путем злоупотребления командами | Ban 15 - 30 дней / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Неправильный репорт (3.12)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.12. Запрещено подавать репорт, написанный транслитом, с сообщением не по теме (Offtop), с включённым Caps Lock, с использованием нецензурной брани, и повторять обращение (если ответ уже был дан ранее) | Report Mute 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Музыка в Voice Chat (3.14)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.14. Запрещено включать музыку в Voice Chat | Mute 60 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Посторонние шумы (3.16)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.16. Запрещено создавать посторонние шумы или звуки | Mute 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Пропаганда (3.18)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.18. Запрещено политическое и религиозное пропагандирование, а также провокация игроков к конфликтам, коллективному флуду или беспорядкам в любом из чатов | Mute 120 минут / Ban 10 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Изменение голоса (3.19)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.19. Запрещено использование любого софта для изменения голоса | Mute 60 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Транслит в чате (3.20)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.20. Запрещено использование транслита в любом из чатов | Mute 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Реклама промокодов (3.21)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.21. Запрещается реклама промокодов в игре, а также их упоминание в любом виде во всех чатах | Ban 30 дней[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Объявления в ГОСС (3.22)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.22. Запрещено публиковать любые объявления в помещениях государственных организаций вне зависимости от чата (IC или OOC) | Mute 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Мат в VIP чате (3.23)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]3.23. Запрещено использование нецензурных слов, в том числе завуалированных и литературных в VIP чате | Mute 30 минут[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Передача аккаунта (4.03)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.03. Передача своего личного игрового аккаунта третьим лицам | PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Лимит аккаунтов (4.04)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.04. Разрешается зарегистрировать максимально только три игровых аккаунта на сервере | PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Трансфер ценностей (4.05)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.05. Запрещена передача либо трансфер игровых ценностей, между игровыми аккаунтами либо серверами, а также в целях удержания имущества | Ban 15 - 30 дней / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Неправильный никнейм (4.06)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.06. Никнейм игрового аккаунта должен быть в формате "Имя_Фамилия" на английском языке | Устное замечание + смена игрового никнейма[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Заглавные буквы в никнейме (4.07)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.07. В игровом никнейме запрещено использовать более двух заглавных букв | Устное замечание + смена игрового никнейма[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Несмысловой никнейм (4.08)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.08. Запрещено использовать никнейм, который не соответствует реальным именам и фамилиям и не несет в себе абсолютно никакой смысловой нагрузки | Устное замечание + смена игрового никнейма[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Оскорбительный никнейм (4.09)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.09. Запрещено использовать никнейм, содержащий в себе матерные слова или оскорбления (в том числе, завуалированные) | Устное замечание + смена игрового никнейма / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Похожий никнейм (4.10)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.10. Запрещено создавать никнейм, повторяющий или похожий на существующие никнеймы игроков или администраторов по их написанию | Устное замечание + смена игрового никнейма / PermBan[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Бизнесы с твинка (4.11)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.11. Владеть бизнесами разрешается с одного основного аккаунта | Обнуление твинк аккаунта[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Неактивность в ТК/СК (4.14)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.14. Запрещено, имея транспортную или строительную компанию, не проявлять активность в игре | Обнуление компании без компенсации[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
        {
            title: 'Промокод блогера (4.15)',
            content:
                `${START_DECOR}Здравствуйте, {{ user.mention }}.<br><br>` +
                `Нарушитель будет наказан по пункту правил: [QUOTE]4.15. Запрещено создавать промокод, идентичный промокоду блогера проекта, а также любой промокод, который не относится к рефералу и имеет возможность пассивного заработка | Перманентная блокировка аккаунта или обнуление имущества[/QUOTE]<br><br>` +
                `С уважением, Oliver_Horisov.${END_DECOR}`,
            prefix: OKAY_PREFIX,
            status: false,
            move: 0,
        },
    ];

    $(document).ready(() => {
        $('body').append('<script src="https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js"></script>');

        addButton('Меню Оливера', 'selectOliverAnswer');
        addButton('Меню биографий', 'selectBiographyAnswer');
        addButton('Меню жалоб', 'selectComplaintAnswer');

        const threadData = getThreadData();

        $(`button#selectOliverAnswer`).click(() => {
            XF.alert(buttonsMarkup(oliver), null, 'Выберите ответ от Оливера:');
            oliver.forEach((btn, id) => {
                $(`button#answers-${id}`).click(() => {
                    if (id === 2) {
                        // Для "Нарушение правил с передачей руководству" показываем список правил
                        XF.alert(buttonsMarkup(buttons.slice(3)), null, 'Выберите пункт правил:');
                        buttons.slice(3).forEach((ruleBtn, ruleId) => {
                            $(`button#answers-${ruleId}`).click(() => {
                                const ruleText = ruleBtn.content.match(/\[QUOTE\](.*?)\[\/QUOTE\]/)[1];
                                pasteContentOliverWithRule(id, threadData, ruleText, true);
                            });
                        });
                    } else {
                        pasteContentOliver(id, threadData, true);
                    }
                });
            });
        });

        $(`button#selectBiographyAnswer`).click(() => {
            XF.alert(buttonsMarkup(biography), null, 'Выберите ответ по биографии:');
            biography.forEach((btn, id) => {
                if (id > 0) {
                    $(`button#answers-${id}`).click(() => pasteContentBiography(id, threadData, true));
                } else {
                    $(`button#answers-${id}`).click(() => pasteContentBiography(id, threadData, false));
                }
            });
        });

        $(`button#selectComplaintAnswer`).click(() => {
            XF.alert(buttonsMarkup(buttons), null, 'Выберите ответ по жалобе:');
            buttons.forEach((btn, id) => {
                if (id > 0) {
                    $(`button#answers-${id}`).click(() => pasteContentComplaint(id, threadData, true));
                } else {
                    $(`button#answers-${id}`).click(() => pasteContentComplaint(id, threadData, false));
                }
            });
        });
    });

    function addButton(name, id) {
        $('.button--icon--reply').before(
            `<button type="button" class="button rippleButton" id="${id}" style="margin: 3px; border: 2px solid red;">${name}</button>`
        );
    }

    function buttonsMarkup(items) {
        return `<div class="select_answer">${items
            .map(
                (btn, i) =>
                    `<button id="answers-${i}" class="button--primary button ` +
                    `rippleButton" style="margin:5px"><span class="button-text">${btn.title}</span></button>`
            )
            .join('')}</div>`;
    }

    function pasteContentOliver(id, data = {}, send = false) {
        const template = Handlebars.compile(oliver[id].content);
        if ($('.fr-element.fr-view p').text() === '') $('.fr-element.fr-view p').empty();
        $('span.fr-placeholder').empty();
        $('div.fr-element.fr-view p').append(template(data));
        $('a.overlay-titleCloser').trigger('click');
        if (send && oliver[id].prefix !== null) {
            editThreadData(oliver[id].move, oliver[id].prefix, oliver[id].status, oliver[id].open);
            $('.button--icon.button--icon--reply.rippleButton').trigger('click');
        }
    }

    function pasteContentOliverWithRule(id, data = {}, ruleText, send = false) {
        const template = Handlebars.compile(oliver[id].content(ruleText));
        if ($('.fr-element.fr-view p').text() === '') $('.fr-element.fr-view p').empty();
        $('span.fr-placeholder').empty();
        $('div.fr-element.fr-view p').append(template(data));
        $('a.overlay-titleCloser').trigger('click');
        if (send && oliver[id].prefix !== null) {
            editThreadData(oliver[id].move, oliver[id].prefix, oliver[id].status, oliver[id].open);
            $('.button--icon.button--icon--reply.rippleButton').trigger('click');
        }
    }

    function pasteContentBiography(id, data = {}, send = false) {
        const template = Handlebars.compile(biography[id].content);
        if ($('.fr-element.fr-view p').text() === '') $('.fr-element.fr-view p').empty();
        $('span.fr-placeholder').empty();
        $('div.fr-element.fr-view p').append(template(data));
        $('a.overlay-titleCloser').trigger('click');
        if (send) {
            editThreadData(biography[id].move, biography[id].prefix, biography[id].status, biography[id].open);
            $('.button--icon.button--icon--reply.rippleButton').trigger('click');
        }
    }

    function pasteContentComplaint(id, data = {}, send = false) {
        const template = Handlebars.compile(buttons[id].content);
        if ($('.fr-element.fr-view p').text() === '') $('.fr-element.fr-view p').empty();
        $('span.fr-placeholder').empty();
        $('div.fr-element.fr-view p').append(template(data));
        $('a.overlay-titleCloser').trigger('click');
        if (send) {
            editThreadData(buttons[id].move, buttons[id].prefix, buttons[id].status, buttons[id].open);
            $('.button--icon.button--icon--reply.rippleButton').trigger('click');
        }
    }

    function getThreadData() {
        const authorID = $('a.username')[0].attributes['data-user-id'].nodeValue;
        const authorName = $('a.username').html();
        const hours = new Date().getHours();
        return {
            user: {
                id: authorID,
                name: authorName,
                mention: `[USER=${authorID}]${authorName}[/USER]`,
            },
            greeting: () =>
                4 < hours && hours <= 11
                    ? 'Доброе утро'
                    : 11 < hours && hours <= 15
                    ? 'Добрый день'
                    : 15 < hours && hours <= 21
                    ? 'Добрый вечер'
                    : 'Доброй ночи',
        };
    }

    function editThreadData(move, prefix, pin = false, open = false) {
        const threadTitle = $('.p-title-value')[0].lastChild.textContent;
        if (pin == false) {
            fetch(`${document.URL}edit`, {
                method: 'POST',
                body: getFormData({
                    prefix_id: prefix,
                    title: threadTitle,
                    _xfToken: XF.config.csrf,
                    _xfRequestUri: document.URL.split(XF.config.url.fullBase)[1],
                    _xfWithData: 1,
                    _xfResponseType: 'json',
                }),
            }).then(() => location.reload());
        } else if (pin == true && open) {
            fetch(`${document.URL}edit`, {
                method: 'POST',
                body: getFormData({
                    prefix_id: prefix,
                    discussion_open: 1,
                    title: threadTitle,
                    sticky: 1,
                    _xfToken: XF.config.csrf,
                    _xfRequestUri: document.URL.split(XF.config.url.fullBase)[1],
                    _xfWithData: 1,
                    _xfResponseType: 'json',
                }),
            }).then(() => location.reload());
        } else {
            fetch(`${document.URL}edit`, {
                method: 'POST',
                body: getFormData({
                    prefix_id: prefix,
                    title: threadTitle,
                    sticky: 1,
                    _xfToken: XF.config.csrf,
                    _xfRequestUri: document.URL.split(XF.config.url.fullBase)[1],
                    _xfWithData: 1,
                    _xfResponseType: 'json',
                }),
            }).then(() => location.reload());
        }
        if (move > 0) {
            moveThread(prefix, move);
        }
    }

    function moveThread(prefix, type) {
        const threadTitle = $('.p-title-value')[0].lastChild.textContent;
        fetch(`${document.URL}move`, {
            method: 'POST',
            body: getFormData({
                prefix_id: prefix,
                title: threadTitle,
                target_node_id: type,
                redirect_type: 'none',
                notify_watchers: 1,
                starter_alert: 1,
                starter_alert_reason: '',
                _xfToken: XF.config.csrf,
                _xfRequestUri: document.URL.split(XF.config.url.fullBase)[1],
                _xfWithData: 1,
                _xfResponseType: 'json',
            }),
        }).then(() => location.reload());
    }

    function getFormData(data) {
        const formData = new FormData();
        Object.entries(data).forEach(i => formData.append(i[0], i[1]));
        return formData;
    }
})();