您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
666
// ==UserScript== // @name report button // @namespace https://lolz.guru/ // @version 0.1 // @description 666 // @author You // @include /^https:\/\/(lolz\.guru|zelenka\.guru)/*/ // @icon https://www.google.com/s2/favicons?sz=64&domain=lolz.guru // @grant none // ==/UserScript== (function() { const buttons = { "Флуд / Оффтоп / Спам / Бесполезная тема": { name: 'Оффтоп', }, "Создание темы не в соответствующем разделе": { name: 'раздел', }, } const _xfToken = document.querySelector('input[name="_xfToken"]').value; async function postData(url = '', formData) { return await fetch(url, { method: 'POST', body: formData }); } const blocks = document.querySelectorAll('#messageList > li'); for(let block of blocks) { for(let key in buttons) { let name = buttons[key].name; let message = buttons[key].message; let span = document.createElement('span'); span.innerText = name; span.setAttribute('style', 'font-weight: bold; padding: 3px 10px; background: #218e5d; border-radius: 50px; margin-right: 5px; cursor: pointer;') span.onclick = function() { let formData = new FormData(); formData.append("message", key) formData.append("is_common_reason", 1) formData.append("_xfToken", _xfToken); formData.append("_xfNoRedirect", 1) formData.append("_xfToken", _xfToken); formData.append("redirect", window.location.href); postData('posts/' + block.id.split('-')[1] +'/report', formData) XenForo.alert('Жалоба отправлена', '', 5000); } if(block.querySelector('.publicControls')) block.querySelector('.publicControls').prepend(span) } } })(); (function() { var regex = /&user_id=(\d+)&username/g; const threadList = document.querySelector(".userContentLinks"); if(!threadList) { console.log('its not a member'); return; } const currentUserId = regex.exec(threadList.firstElementChild.href)[1]; console.log(currentUserId); function createButton(parent, callback) { let btnname = document.createElement("a"); btnname.className = "OverlayTrigger button smallButton"; btnname.style.margin = "10px 0 5px"; btnname.style.backgroundColor = "rgb(136,68,68)"; btnname.innerHTML = "Report"; btnname.onclick = callback; parent.appendChild(btnname); } const _xfToken = document.querySelector('input[name="_xfToken"]').value; const title = document.querySelector('.userContentLinks a:first-child').getAttribute('href').split('=')[3]; async function postData(url = '', formData) { return await fetch(url, { method: 'POST', body: formData }) .then(function(response) { // Стоит проверить код ответа. if (!response.ok) { // Сервер вернул код ответа за границами диапазона [200, 299] return Promise.reject(new Error( 'Response failed: ' + response.status + ' (' + response.statusText + ')' )); } // Далее будем использовать только JSON из тела ответа. return response.json(); }).then(function(data) { console.log(data['_redirectTarget']) var threadlink = data['_redirectTarget'] if (threadlink) { window.location.replace(threadlink) } }); }; function waitForElm(selector) { return new Promise(resolve => { if (document.querySelector(selector)) { return resolve(document.querySelector(selector)); } const observer = new MutationObserver(mutations => { if (document.querySelector(selector)) { resolve(document.querySelector(selector)); observer.disconnect(); } }); observer.observe(document.body, { childList: true, subtree: true }); }); } waitForElm('.ipMatches').then((elm) => { console.log('IP Opened'); let elements = document.getElementsByClassName('userInfo'); for(let el of elements) { if(el.getElementsByClassName("banReason").length > 0) { createButton(el, function() { let formData = new FormData(); formData.append("prefix_id[]", 92); formData.append("title", 'Жалоба на ' + decodeURIComponent(title)); formData.append("message_html", '<p>1. Никнейм нарушителя и ссылка на профиль: https://lolz.guru/members/'+ currentUserId +'/ @'+ decodeURIComponent(title) + '</p><p>2. Краткое описание жалобы: Был ранее заблокирован</p> <p>3. Доказательства: https://lolz.guru/members/'+ currentUserId +'/shared-ips</p>') formData.append("_xfRelativeResolver:", "https://lolz.guru/forums/test-forum/create-thread") formData.append("tags", "кидок,мульт,мошенник") formData.append("watch_thread", 1) formData.append("watch_thread_state", 1) formData.append("_xfToken", _xfToken); formData.append("_xfRequestUri", "/forums/801/create-thread"); formData.append("_xfNoRedirect", 0) formData.append("_xfToken", _xfToken); formData.append("_xfResponseType", "json"); postData(`https://lolz.guru/forums/801/add-thread`, formData) XenForo.alert('Жалоба размещена', '', 5000); }); } } }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址