您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Автоответы
// ==UserScript== // @name MAGADAN | ГС/ЗГС ОПГ — Анти Блат // @namespace forum.blackrussia.online // @version 1 // @description Автоответы // @author Azimut Elemental + доработка // @match https://forum.blackrussia.online/threads/* // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; const FONT = 'Verdana'; const PREFIX = { UNACCEPT: 4, ACCEPT: 8, PIN: 2, TEX14: 14, // Тех Спецу NINETY9: 99 // 99 с GIF }; const buttons = [ {icon:'📌', title:'нет привязки TG и BK', message:'"нет привязки TG и BK', prefix:PREFIX.UNACCEPT}, {icon:'📍', title:'очсп', message:' очсп', prefix:PREFIX.UNACCEPT}, {icon:'✅', title:'Одобрено', message:'+', prefix:PREFIX.ACCEPT} , {icon:'📍', title:'Нет привязки тг', message:'нет привязки тг', prefix:PREFIX.UNACCEPT}, {icon:'🎯', title:'нет привязки вк', message: 'нет привязки VK', prefix:PREFIX.UNACCEPT}, {icon:'🎯', title:'нет 6 лвл', message:'нет 6 lvl', prefix:PREFIX.NINETY9}, {icon:'🎯', title:'NRP Ник', message:'Нрп ник', prefix:PREFIX.UNACCEPT} // TEX14 и 99 здесь не добавляем в buttons — кнопок нет ]; function getUsername() { const el = document.querySelector('.p-title-value a, .message-threadStarterPost .username'); return el ? el.textContent.trim() : 'игрок'; } function getTimeOfDay() { const hour = new Date().getHours(); if (hour < 12) return 'Доброе утро'; if (hour < 18) return 'Добрый день'; return 'Добрый вечер'; } function formatMessage(message, nickname, timeOfDay, btn) { let statusText = ''; let gif = btn.gif || ''; switch(btn.prefix) { case PREFIX.ACCEPT: statusText = ''; gif = gif || 'https://i.postimg.cc/76fTQD2t/8-F84-EC21-5-F00-40-D4-8-CA3-F53-AC8-F46-CA6.gif'; break; case PREFIX.UNACCEPT: statusText = 'Отказано'; gif = gif || 'https://i.postimg.cc/76fTQD2t/8-F84-EC21-5-F00-40-D4-8-CA3-F53-AC8-F46-CA6.gif'; break; case PREFIX.PIN: statusText = 'На рассмотрении'; gif = gif || 'https://i.postimg.cc/L6dgQP6H/tumblr-mylm16-BBTs1rydwbvo1-500.gif'; break; case PREFIX.TEX14: statusText = 'Тех Спецу'; gif = gif || 'https://i.postimg.cc/3RFFP36n/51b7e32fd2b0779a4c3ae02705b679f9.gif'; break; case PREFIX.NINETY9: statusText = 'На рассмотрении'; gif = gif || 'https://i.postimg.cc/3RFFP36n/51b7e32fd2b0779a4c3ae02705b679f9.gif'; break; } let formatted = `[B][COLOR=black]${timeOfDay}, уважаемый(ая) [COLOR=white]${nickname}[/COLOR][/COLOR][/B]\n\n`; const lines = message.split('\n'); lines.forEach(line => { formatted += `[B][COLOR=gray]${line}[/COLOR][/B]\n\n`; }); formatted += `[B][COLOR=white]${statusText}[/COLOR]`; return { text: formatted, gif: gif }; } function insertAndSend(btn) { const username = getUsername(); const timeOfDay = getTimeOfDay(); const formatted = formatMessage(btn.message, username, timeOfDay, btn); const finalMessage = `[CENTER][FONT=${FONT}]${formatted.text}[/FONT][/CENTER]\n` + (formatted.gif ? `[CENTER][IMG]${formatted.gif}[/IMG][/CENTER]` : ''); const editor = document.querySelector('.fr-element'); if (editor) { editor.focus(); document.execCommand('selectAll', false, null); document.execCommand('delete', false, null); document.execCommand('insertText', false, finalMessage); editor.dispatchEvent(new Event('input', { bubbles: true })); editor.dispatchEvent(new Event('change', { bubbles: true })); } const textarea = document.querySelector('textarea[name="message"]'); if (textarea) { textarea.value = finalMessage; textarea.dispatchEvent(new Event('input', { bubbles: true })); textarea.dispatchEvent(new Event('change', { bubbles: true })); } const prefixSelect = document.querySelector('select[name="prefix_id"]'); if (prefixSelect) { prefixSelect.value = btn.prefix; prefixSelect.dispatchEvent(new Event('change', { bubbles: true })); } const lockBox = document.querySelector('input[name="discussion_open"]'); if (lockBox) lockBox.checked = false; const stickyBox = document.querySelector('input[name="sticky"]'); if (stickyBox) stickyBox.checked = true; const form = document.querySelector('form[action*="add-reply"]'); if (form) setTimeout(() => form.requestSubmit(), 400); } function addButtons() { const container = document.querySelector('.button--icon--reply'); if (!container) return; const wrap = document.createElement('div'); wrap.style.marginTop = '10px'; const mainBtn = document.createElement('button'); mainBtn.type = 'button'; mainBtn.innerHTML = '📝 <b>Ответы</b>'; mainBtn.style.cssText = ` background:#2b2b2b; color:#fff; padding:6px 14px; border-radius:10px; cursor:pointer; font-weight:bold; margin-bottom:6px; font-family:Verdana; `; const menu = document.createElement('div'); menu.style.display = 'none'; menu.style.marginTop = '5px'; buttons.forEach(btn => { const b = document.createElement('button'); b.type = 'button'; b.textContent = `${btn.icon} ${btn.title}`; b.style.cssText = ` display:block; width:100%; text-align:left; background:#444; color:white; border:none; padding:6px; margin-bottom:2px; border-radius:5px; cursor:pointer; font-family:Verdana; font-weight:bold; `; b.onclick = () => insertAndSend(btn); menu.appendChild(b); }); mainBtn.onclick = () => menu.style.display = menu.style.display === 'none' ? 'block' : 'none'; wrap.appendChild(mainBtn); wrap.appendChild(menu); container.parentNode.insertBefore(wrap, container.nextSibling); } window.addEventListener('load', addButtons); })();