NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name AutoPoke // @namespace http://trgwii.net/ // @description Pokes people on Facebook // @include http://facebook.com/pokes* // @include http://*.facebook.com/pokes* // @include https://facebook.com/pokes* // @include https://*.facebook.com/pokes* // @include /^https?://(www\.)?facebook.com/pokes.*$/ // @version 1 // @grant none // ==/UserScript== var AutoPoker = { user : "", charcode : 124, interval : { id : 0, delay : 5000, run : function(){ AutoPoker.interval.id = setInterval(function(){ buttons = AutoPoker.button.find(); for(i = 0; i < buttons.length; i++){ buttons[i].click(); buttons[i].setAttribute(AutoPoker.button.attr.name, AutoPoker.button.attr.value); } }, AutoPoker.interval.delay); } }, countdown : { id : 0, delay : 180000 }, button : { text : "Poke Back", attr : { name : "clicked", value : "clicked" }, find : function(){ a = document.getElementsByTagName("a"); out = []; if(AutoPoker.user !== "") for(i = 0; i < a.length; i++) if(a[i].textContent.contains(AutoPoker.user)){ a = a[i].parentElement.parentElement.getElementsByTagName("a"); break; } for(i = 0; i < a.length; i++){ if(a[i].textContent.contains(AutoPoker.button.text)){ if(a[i].getAttribute(AutoPoker.button.attr.name) !== AutoPoker.button.attr.value) out.push(a[i]); else{ clearInterval(AutoPoker.interval.id); AutoPoker.countdown.id = setTimeout(function(){ location.reload(); }, AutoPoker.countdown.delay); } } } return out; } } }; String.prototype.contains = function(needle){ if(this.indexOf(needle) !== -1) return true; else return false; } var showSettings = function(){ var createTextInput = function(win, value){ out = win.document.createElement("input"); out.setAttribute("type", "text"); out.value = value || ""; return out; } var createSpan = function(win, text){ out = win.document.createElement("span"); out.textContent = text; return out; } var sWin = open("", "_blank", "channelmode=no, directories=no, fullscreen=no, height=150, width=600, top=465, left=660, location=no, menubar=no, resizable=no, scrollbars=no, status=no, titlebar=no, toolbar=no", false); var elem = { inDelay : createTextInput(sWin, AutoPoker.interval.delay), p1 : createSpan(sWin, "The interval between clicking the Poke Back buttons."), br1 : sWin.document.createElement("br"), cdDelay : createTextInput(sWin, AutoPoker.countdown.delay), p2 : createSpan(sWin, "The delay before refreshing if a button is glitched."), br2 : sWin.document.createElement("br"), buttonText : createTextInput(sWin, AutoPoker.button.text), p3 : createSpan(sWin, "The text to search for when looking for the Poke Back button."), br3 : sWin.document.createElement("br"), userText : createTextInput(sWin, AutoPoker.user), p4 : createSpan(sWin, "Target a specific user by putting his name here."), br4 : sWin.document.createElement("br"), keyText : createTextInput(sWin, AutoPoker.charcode), p5 : createSpan(sWin, "The charcode used for bringing up this window."), br5 : sWin.document.createElement("br"), saveButton : sWin.document.createElement("button") } elem.keyText.onkeypress = function(e){ this.value = e.charCode; return false; } elem.saveButton.textContent = "Save settings"; elem.saveButton.addEventListener("click", function(){ AutoPoker.interval.delay = Number(elem.inDelay.value); AutoPoker.countdown.delay = Number(elem.cdDelay.value); AutoPoker.button.text = elem.buttonText.value; AutoPoker.user = elem.userText.value; AutoPoker.charcode = Number(/\d+/.exec(elem.keyText.value)); clearInterval(AutoPoker.interval.id); clearTimeout(AutoPoker.countdown.id); AutoPoker.interval.run(); sWin.alert("Saved."); sWin.close(); }); for(k in elem) sWin.document.body.appendChild(elem[k]); } document.addEventListener("DOMContentLoaded", function(){ AutoPoker.interval.run(); document.addEventListener("keypress", function(e){ console.log(e.charCode); if(e.charCode === AutoPoker.charcode){ showSettings(); return false; } }); });