// ==UserScript== // @name Discuz BBS AutoReply // @namespace https://greasyfork.org/zh-CN/users/208194-lz0211 // @version 1.01 // @description 论坛快速回复脚本 // @match *://bbs.*/*thread* // @match *://*thread* // @include *://bbs.*/*thread* // @include *://*thread* // @exclude *://*action=newthread* // @license MIT // @downloadURL none // ==/UserScript== (function(sites){ sites = sites || {} var url = document.URL, name = 'default', key = 'defaut_reply', formSelector = '#fastpostform', inputSelector = '#fastpostmessage', submitSelector = '#fastpostsubmit', expressions = ['。', '!', '……', '@~~~', '#^_^#', 'O(∩_∩)O~', '(*^__^*)', '└(^o^)┘', '‘(*>﹏<*)′ ~', '(@^_^@)~', '^_^o ~~~', 'O(∩_∩)O~∑', '(*@ο@*)', '((o(^_ ^)o))', '~@^_^@~ ', '(*∩_∩*)', '(~ o ~)~zZ ', '=^_^=', '~^o^~', '(*@?@*)', '*@_@*'], messages = ['顶楼主', '多谢楼主分享', '楼主辛苦了', '先回复一下', '看帖必回帖', '支持楼主分享', '后排围观', '路过打酱油的', '留名', '楼主写的真棒', '向楼主学习', '希望楼主发更多好帖', '楼主好人', '伸手党路过', 'Mark一下', '好贴,先收藏了', '抱走收藏,不客气了', '不错,支持卤煮', '楼主加油~~', '必须顶起', '好人一生平安','卤煮好厉害','潜水冒泡不说话'], interval = 15000, push = [].push, formDOM,inputDOM,submitDOM //随机返回数组元素 function randomSelect(array){ return array[Math.floor(Math.random() * array.length)] } //生成随机回复 function radomReplyText(){ var a = randomSelect(messages) var b = randomSelect(messages) var c = randomSelect(expressions) while (a == b) { b = randomSelect(messages) } var text = a + ',' + b + c inputDOM.value = inputDOM.innerText = text; } function now(){ return Date.now() } function reply(){ if (localStorage.getItem(key) < now() - interval || !localStorage.getItem(key)) { localStorage.setItem(key, now()) } else { console.log("距离上次回复时间不足15秒,请勿频繁灌水,以免被封!") alert("距离上次回复时间不足15秒,请勿频繁灌水,以免被封!") } } //初始化 function init(){ var reg,site,k,formStyle,height,body,randomBtn,times = 0 for(k in sites){ site = sites[name] if(!site || !site.match) break reg = new RegExp(site.match) if(reg.test(url)){ name = k key = name + '_key' formSelector = site.formSelector || formSelector inputSelector = site.inputSelector || inputSelector submitSelector = site.submitSelector || submitSelector interval = site.interval || interval Array.isArray(site.expressions) && push.apply(expressions,site.expressions) Array.isArray(site.messages) && push.apply(messages,site.messages) break } } formDOM = document.querySelector(formSelector) inputDOM = document.querySelector(inputSelector) submitDOM = document.querySelector(submitSelector) formStyle = formDOM.style.cssText height = formDOM.offsetHeight formDOM.style.cssText = formStyle + ';background-color:#fff;position:fixed;bottom:0px;' body = document.querySelector('body') body.style.cssText = body.style.cssText + 'margin-bottom:' + height + 'px' randomBtn = submitDOM.cloneNode() randomBtn.innerHTML = '随机回复' randomBtn.type = 'button' randomBtn.onclick = radomReplyText submitDOM.parentNode.insertBefore(randomBtn,submitDOM) submitDOM.addEventListener('click',reply) function smiles(){ if(times > 20) return if(typeof smilies_array === 'undefined'){ times += 1 return setTimeout(smiles,500) } if(!Array.isArray(smilies_array)) return smilies_array.forEach(function(group){ if(!Array.isArray(group)) return group.forEach(function(page){ if(!Array.isArray(page)) return push.apply(expressions,page.map(function(arr){return arr[1]})) }) }) } smiles() } init() })()