您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Автоматизация обработки тем
// ==UserScript== // @name Скрипт для форума BlackRussia // @namespace http://tampermonkey.net/ // @version 2.1 // @description Автоматизация обработки тем // @author Valik // @match https://forum.blackrussia.online/threads/* // @icon https://klike.net/uploads/posts/2021-12/1638345168_12.jpg // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; const PREFIXES = { UNACCEPT: 4, ACCEPT: 8, PIN: 2, SPECADM: 11, MAINADM: 12, CLOSE: 7, TEXY: 13, REALIZOVANO: 5, VAJNO: 1, OJIDANIE: 14, PREFIKS: 0, KACHESTVO: 15, RASSMOTRENO: 9, RESHENO: 10 // добавим на всякий случай }; const buttons = [ { title: 'Приветсвие', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + 'текст <br><br>' + 'Закрыто. [/FONT][/SIZE]', }, { title: 'Ссылку на вк', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + 'Приложите в следующей теме ссылку на вашу VK Страницу. <br><br>' + 'Закрыто. [/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Свяжитесь со мной', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Свяжитесь со мной вконтакте: https://vk.com/77oleinik77<br><br>" + 'На рассмотрении.[/FONT]', prefix: PIN_PREFIX, status: true, }, { title: 'ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠᅠ|-(--(-(-> Жалобы на администрацию <-)-)--)-| ᅠ ᅠ ᅠ ᅠ ᅠ ᅠᅠ ᅠᅠ ᅠ ᅠᅠᅠ', }, { title: 'На рассмотрении', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Ваша жалоба взята на рассмотрение. Ожидайте ответа, просьба не создавать копии темы.<br><br>" + 'Ожидайте ответа.[/FONT]', prefix: PIN_PREFIX, status: true, }, { title: 'Ссылку на тему', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + " Приложите, пожалуйста, в следующей теме ссылку на тему.[/CODE]<br><br>" + 'Отказано, закрыто.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Ответ дан ранее', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + " Ранее вам давался ответ на идентичную тему, чтобы не получить блокировку аккаунта перестаньте писать подобные темы.[/CODE]<br><br>" + 'Отказано, закрыто.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Другой сервер', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + " Составьте тему на форуме вашего сервера.<br><br>" + 'Отказано, закрыто.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Жалоба составлена не по форме', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Ваша жалоба составлена не по форме. Внимательно прочитайте правила составления жалобы на Админстратрацию:[URL='https://forum.blackrussia.online/index.php?threads/Правила-подачи-жалоб-на-администрацию.3429349/']*Клик*[/URL] <br>В названии темы необходимо написать: “Nick_Name администратора | Суть жалобы <br><br>Форма для составление темы<br>[ICODE]1. Ваш Nick_Name:<br>2. Nick_Name администратора:<br>3. Дата выдачи/получения наказания:<br>4. Суть жалобы:<br>5. Доказательство:[/ICODE]<br><br>" + 'Отказано, закрыто.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Запрос доказательств', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "У администратора были запрошены доказательства.<br><br>" + 'На рассмотрении[/FONT]', prefix: PIN_PREFIX, status: true, }, { title: 'Наказание выдано верно', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Доказательства предоставлены, наказание выдано верно.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Отсуствуют док-ва', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Приложите доказательства в следующей теме.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Ошибка Админа', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + 'Администратор допустил ошибку, приносим свои извинения. Наказание снято.[/SIZE]<br><br>' + 'Закрыто.[/FONT]', prefix: ACCEPT_PREFIX, status: false, }, { title: 'Беседа с администратором', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "С данным администратором будет проведенна профилактическая беседа.<br><br>" + 'Решено.[/FONT]', prefix: ACCEPT_PREFIX, status: false, }, { title: 'Передача ГА', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + 'Ваша жалоба передана Главному Администратору.<br><br>'+ 'Ожидайте ответа.[/FONT][/SIZE]', prefix: MAINADM_PREFIX, status: true, }, { title: 'Передача СА', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + 'Ваша жалоба передана Специальной Администрации.<br><br>'+ 'Ожидайте ответа.[/FONT][/SIZE]', prefix: SPECADM_PREFIX, status: true, }, { title: 'В технический раздел', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Ваша тема не относиться к жалобам на администрацию, вам в технический раздел нашего сервера.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'В жалобы на тех', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Вам было выдано наказание от технического специалиста, обратитесь в раздел 'Жалобы на технических специалистов' нашего сервера.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Жалобы от 3-его лица', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Жалоба оформлена от 3-го лица.<br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Присутвуют редактирования', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Доказательства должны быть в первоначальном виде, без присутствия редактирования с помощью сторонних программ.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Нет окна блокировки', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Без окна о блокирвке тема не подлежит рассмотрению - создайте новую тему, приложив окно блокировки с фото-хостинга<br>[URL='https://yapx.ru/']yapx.ru[/URL],<br>[URL='https://imgur.com/']imgur.com[/URL],<br>[URL='https://www.youtube.com/']youtube.com[/URL],<br>[URL='https://imgbb.com']ImgBB.com[/URL]<br>(все кликабельно).<br><br>" + 'Закрыто.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Нет /time', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "В вашем доказательстве отсутствует /time.<br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Прошло более 48 часов', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Ваша жалоба рассмотрению не подлежит, так как с момента выдачи наказания прошло более 48 часов.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'В обжалования', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Обратитесь в раздел Обжалование наказаний нашего сервера.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Доква с соц сетей не принимаются', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Доказательства путем использования соц.сетей ( ВК, Инстаграм ) запрещенны.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Не относится к разделу', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Созданная тема никоим образом не относится к назначению и задачам данного раздела.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Дублирование темы', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Данная тема является дубликатом предыдущей, при 3-ем дублировании ваш форумный аккаунт будет заблокирован.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Недостаточно доказательств', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Недостаточно доказательств на нарушение от данного администратора.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠᅠ|-(--(-(-> Обжалование наказаний <-)-)--)-| ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠᅠ ᅠ ᅠᅠᅠ', }, { title: 'Обжалование на рассмотрении', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Ваше обжалование взято на рассмотрение. Не нужно создавать копии этой темы.<br><br>" + 'Ожидайте ответа.[/FONT]', prefix: MAINADM_PREFIX, status: true, }, { title: 'Передача ГА', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + 'Ваше обжалование передано Главному Администратору.<br><br>'+ 'Ожидайте ответа.[/FONT][/SIZE]', prefix: MAINADM_PREFIX, status: true, }, { title: 'Передача СА', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + 'Ваше обжалование передано Специальной Администрации.<br><br>'+ 'Ожидайте ответа.[/FONT][/SIZE]', prefix: SPECADM_PREFIX, status: true, }, { title: 'В жалобы на админов', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Если вы считаете что наказание было выдано неверно обратитесь в раздел жалоб на администрацию.<br><br>" + 'Отказано.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'П/П/В', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Приложите скриншоты привязок аккаунта в следующей теме.<br><br>" + 'Отказано.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'В жалобы на тех', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Вам было выдано наказание от технического специалиста, обратитесь в раздел 'Жалобы на технических специалистов' нашего сервера.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Жалобы от 3-его лица', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Обжалование составлено от 3-го лица.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Присутвуют редактирования', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Доказательства должны быть в первоначальном виде, без присутствия редактирования с помощью сторонних программ.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Нет окна блокировки', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Без окна о блокирвке тема не подлежит рассмотрению - создайте новую тему, приложив окно блокировки с фото-хостинга<br>[URL='https://yapx.ru/']yapx.ru[/URL],<br>[URL='https://imgur.com/']imgur.com[/URL],<br>[URL='https://www.youtube.com/']youtube.com[/URL],<br>[URL='https://imgbb.com']ImgBB.com[/URL]<br>(все кликабельно).<br><br>" + 'Закрыто.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Обжалование не по форме', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + " Ваше обжалование составлено не по форме. Пожалуйста создайте новую тему соблюдая форму подачи:<br>Ваш никнейм и причина блокировки, пример:<br>Bruce_Banner | Массовый DM.<br>и форму обжалований:<br>[ICODE]1. Ваш Nick_Name:<br>2. Nick_Name администратора:<br>3. Дата выдачи/получения наказания:<br>4. Суть заявки:<br>5. Доказательство:[/ICODE]<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Доква с соц сетей не принимаются', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Доказательства с соц.сетей, не принимаются.<br>Загрузите их на фото-хостинг [URL='https://yapx.ru/']yapx.ru[/URL], [URL='https://imgur.com/']imgur.com[/URL], [URL='https://www.youtube.com/']youtube.com[/URL],[URL='https://imgbb.com']ImgBB.com[/URL](все кликабетильно).<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'В другой раздел', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Созданная тема никоим образом не относится к назначению и задачам данного раздела.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Бан айпи', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Воспользуйтесь VPN или смените сеть WIFI.<br><br>" + 'Закрыто.[/FONT]', prefix: CLOSE_PREFIX, status: false, }, { title: 'Дублирование темы', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Дублирование темы. Если вы продолжите заниматься дублированием тем, ваш форумный аккаунт будет заблокирован.<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'НонРП Обман', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + " Если вы готовы возместить ущерб игроку, свяжитесь с игроком для возврата имущества, затем он должен оформить обжалование.<br><br>" + ' Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Наказание снято', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Рассмотрев ваше наказание, было принято решение о снятии вашего наказания.<br><br>" + 'Одобрено, закрыто.[/FONT][/SIZE]', prefix: ACCEPT_PREFIX, status: false, }, { title: 'ЧС Сервера', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Вы были вынесены из Чёрного Списка Сервера.<br><br>" + 'Одобрено.[/FONT][/SIZE]', prefix: ACCEPT_PREFIX, status: false, }, { title: 'ОЧСА', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Общий Чёрный Список Администрации снят.<br><br>" + 'Одобрено.[/FONT][/SIZE]', prefix: ACCEPT_PREFIX, status: false, }, { title: 'ОЧСП', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Общий Чёрный Список Проекта снят.<br><br>" + 'Одобрено.[/FONT][/SIZE]', prefix: ACCEPT_PREFIX, status: false, }, { title: 'ЧСДП', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Глобальная блокировка снята.<br><br>" + 'Одобрено.[/FONT][/SIZE]', prefix: ACCEPT_PREFIX, status: false, }, { title: 'Блокировка аккаунта', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Блокировка аккаунта снята.<br><br>" + 'Одобрено.[/FONT][/SIZE]', prefix: ACCEPT_PREFIX, status: false, }, { title: 'ранее был обжалован', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Вам уже было одобрено обжалование.<br><br>" + 'Закрыто.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Обжалованию не подлежит', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Ваше обжалование не будет рассматриваться и будет закрыто, так как ваше наказание соответствует причинам, которые обжалованию не подлежат: различные формы слива, продажа игровой валюты, махинации, целенаправленный багоюз, продажа, передача аккаунта, сокрытие ошибок, багов системы, использование стороннего программного обеспечения, распространение конфиденциальной информации, обман администрации.<br><br>" + 'Отказано.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Отказано', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "В обжаловании отказано.<br><br>" + 'Закрыто.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Наказание сокращено', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Ваше обжалование было рассмотрено и принято решение о сокращении вашего наказания.<br><br>" + 'Одобрено.[/FONT][/SIZE]', prefix: ACCEPT_PREFIX, status: false, }, { title: 'Server', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Спасибо за обращение, блокировка снята.<br><br>" + 'Закрыто.[/FONT][/SIZE]', prefix: RASSMOTRENO_PREFIX, status: false, }, { title: 'В данный момент отказано', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + " На данный момент времени ваше обжалование не имеет шансов получить положительный ответ. Спустя некоторое время подайте его повторно.<br><br>" + 'Закрыто.[/FONT][/SIZE]', prefix: UNACCEPT_PREFIX, status: false, }, { title: 'Слив админки (бан)', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Спасибо за обращение, администратор был снят с поста и занесён в Общий чёрный список проекта. Блокировка снята. <br><br>" + 'Закрыто.[/FONT][/SIZE]', prefix: RASSMOTRENO_PREFIX, status: false, }, { title: 'Слив админки (мут)', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Спасибо за обращение, администратор был снят с поста и занесён в Общий чёрный список проекта. Блокировка чата снята. <br><br>" + 'Закрыто.[/FONT][/SIZE]', prefix: RASSMOTRENO_PREFIX, status: false, }, { title: 'Слив админки (варн)', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Спасибо за обращение, администратор был снят с поста и занесён в Общий чёрный список проекта. Предупреждение снято. <br><br>" + 'Закрыто.[/FONT][/SIZE]', prefix: RASSMOTRENO_PREFIX, status: false, }, { title: 'Смена ника', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + 'Аккаунт разблокирован. У вас есть 24 часа на смену игрового никнейма. После смены, пожалуйста, предоставьте скриншот в этой теме. Тема остаётся открытой.<br><br>' + 'На рассмотрении.[/FONT][/SIZE]', prefix: MAINADM_PREFIX, status: true, close: false // Явно указываем, что тему НЕ закрывать }, { title: 'ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠᅠ ᅠ ᅠ ᅠᅠ|-(--(-(-> Жалобы на игроков <-)-)--)-| ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ ᅠᅠ ᅠᅠ ᅠ ᅠᅠᅠ', }, { title: 'Игрок будет наказан', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + "Игрок получит соответсвующее наказание.<br><br>" + 'Закрыто.[/FONT][/SIZE]', prefix: ACCEPT_PREFIX, status: false, }, { title: 'Не по форме', content: '[SIZE=4][FONT=Verdana]Здравствуйте.<br><br>' + " Ваша жалоба составлена не по форме. Пожалуйста создайте новую тему соблюдая форму подачи:<br>Ваш никнейм и никнейм нарушителя, пример:<br>Timofei_Oleinik | OOC Обман.<br>и форму жалоб на игроков:<br>[ICODE]1. Ваш Nick_Name:<br>2. Nick_Name игрока:<br>3. Суть жалобы:<br>4. Доказательство:[/ICODE]<br><br>" + 'Закрыто.[/FONT]', prefix: UNACCEPT_PREFIX, status: false, }, ]; $(document).ready(() => { // Загрузка Handlebars $('body').append('<script src="https://cdn.jsdelivr.net/npm/handlebars@latest/dist/handlebars.js"></script>'); // Добавление кнопок const buttonList = [ ['На рассмотрение', 'pin', PREFIXES.PIN], ['Отказано⛔', 'unaccept', PREFIXES.UNACCEPT], ['Одобрено✅', 'accepted', PREFIXES.ACCEPT], ['Специальному Администратору💥', 'specadm', PREFIXES.SPECADM, true], ['Главному Администратору💥', 'mainadm', PREFIXES.MAINADM, true], ['Теху', 'Texy', PREFIXES.TEXY], ['Закрыто⛔', 'Zakrito', PREFIXES.CLOSE], ['Решено✅', 'Resheno', PREFIXES.RESHENO], ['Реализовано💫', 'Realizovano', PREFIXES.REALIZOVANO], ['Рассмотрено✅', 'Rassmotreno', PREFIXES.RASSMOTRENO], ['Ожидание', 'Ojidanie', PREFIXES.OJIDANIE], ['Без префикса⛔', 'Prefiks', PREFIXES.PREFIKS], ['Проверено контролем качества', 'Kachestvo', PREFIXES.KACHESTVO], ['Ответы💥', 'selectAnswer'] ]; buttonList.forEach(([label, id]) => addButton(label, id)); const threadData = getThreadData(); buttonList.forEach(([label, id, prefix, pin = false]) => { if (prefix !== undefined) { $(`button#${id}`).click(() => editThreadData(prefix, pin, false)); } }); $(`button#selectAnswer`).click(() => { XF.alert(buttonsMarkup(buttons), null, 'Выберите ответ:'); buttons.forEach((btn, id) => { $(`button#answers-${id}`).click(() => pasteContent(id, threadData)); }); }); }); function addButton(name, id) { $('.button--icon--reply').before( `<button type="button" class="button rippleButton" id="${id}" style="margin: 3px;">${name}</button>` ); } function buttonsMarkup(buttons) { return `<div class="select_answer">${buttons .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 pasteContent(id, data = {}) { const btn = buttons[id]; const template = Handlebars.compile(btn.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 ('prefix' in btn) { editThreadData(btn.prefix, btn.status || false, btn.close || false); $('.button--icon.button--icon--reply.rippleButton').trigger('click'); } } function getThreadData() { const authorID = $('a.username')[0]?.dataset.userId || ''; const authorName = $('a.username').html() || ''; const hours = new Date().getHours(); return { user: { id: authorID, name: authorName, mention: `[USER=${authorID}]${authorName}[/USER]`, }, greeting: () => hours <= 11 ? 'Доброе утро' : hours <= 15 ? 'Добрый день' : hours <= 21 ? 'Добрый вечер' : 'Доброй ночи', }; } function editThreadData(prefix, pin = false, close = false) { const threadTitle = $('.p-title-value')[0]?.lastChild?.textContent || document.title; const payload = { prefix_id: prefix, title: threadTitle, _xfToken: XF.config.csrf, _xfRequestUri: document.URL.split(XF.config.url.fullBase)[1], _xfWithData: 1, _xfResponseType: 'json' }; if (pin) payload.sticky = 1; if (close) payload.discussion_open = 0; fetch(`${document.URL}edit`, { method: 'POST', body: getFormData(payload), }).then(() => location.reload()); } function getFormData(data) { const formData = new FormData(); Object.entries(data).forEach(([key, value]) => formData.append(key, value)); return formData; } })();