您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a button to repeatedly send the same message in a certain interval.
- // ==UserScript==
- // @name WhatsApp Web Message Spam
- // @namespace graphen
- // @version 1.0.1
- // @description Adds a button to repeatedly send the same message in a certain interval.
- // @author Graphen
- // @license MIT
- // @match https://web.whatsapp.com/*
- // @icon https://i.imgur.com/C6GToWK.png
- // @grant none
- // ==/UserScript==
- /* jshint esversion: 6 */
- (function() {
- 'use strict';
- // auxiliary function for element insertion into dom tree
- function insertAfter(newNode, referenceNode) {
- referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
- }
- let repeatingSpamFunction = null;
- let message = '';
- document.addEventListener("click", createSpamButton);
- document.addEventListener("keyup", editSpamButton);
- function getInput() {
- var input = document.querySelector('.p3_M1 ._13NKt');
- if (!input) {
- console.log("WA Spam: 'input' not found.");
- return false;
- }
- else {
- return input;
- }
- }
- function getSpamButton() {
- let spamButton = document.getElementById('spamButton');
- if (spamButton) {
- return spamButton;
- }
- else {
- console.log("#spamButton not found.");
- return false;
- }
- }
- function createSpamButton() {
- if (getSpamButton()) {
- console.log("WA Spam: #spamButton already present.");
- return;
- }
- let composeBar = document.querySelector('._1SEwr');
- if (!composeBar) {
- console.log("WA Spam: composeBar not found.");
- return;
- }
- let spamButton = document.createElement('button');
- spamButton.setAttribute("id", "spamButton");
- spamButton.innerHTML = 'SPAM';
- spamButton.style.fontSize = '100%';
- spamButton.style.padding = '10px 0';
- spamButton.style.margin = '0px 3px 5px 3px';
- //insertAfter(spamButton, composeBar.lastChild.previousSibling);
- insertAfter(spamButton, composeBar);
- editSpamButton();
- }
- function editSpamButton() {
- let spamButton = getSpamButton();
- let input = getInput();
- if (input.innerText.trim() === '' && message === '') {
- spamButton.style.cursor = 'not-allowed';
- spamButton.style.color = '#D3D3D3';
- spamButton.onclick = void(0);
- } else {
- spamButton.style.cursor = 'pointer';
- spamButton.style.color = '#039be5';
- spamButton.onclick = function() {
- doSpam(this);
- };
- }
- }
- function doSpam(spamButton) {
- let input = getInput();
- if (spamButton.innerHTML === 'SPAM') {
- if (input.innerText === '') {
- window.alert('Please enter a text to be spammed before using the spam button.');
- return;
- }
- let interval = 1000 * parseInt(prompt('Please enter spam-interval in seconds:', '3'));
- if (!interval) {
- spamButton.innerHTML = 'SPAM';
- console.log('WA Spam: Interval input cancelled.');
- return;
- }
- message = input.innerHTML;
- spamButton.innerHTML = 'STOP';
- sendMessage(); // start immediately
- console.log("started spamming");
- repeatingSpamFunction = window.setInterval(function(){
- console.log("started repeated spamming");
- sendMessage();
- }, interval);
- } else {
- window.clearInterval(repeatingSpamFunction);
- message= '';
- spamButton.innerHTML = 'SPAM';
- }
- editSpamButton();
- }
- function sendMessage() {
- let input = getInput();
- let evt = new Event('input', {
- bubbles: true
- });
- input.innerHTML = message;
- input.dispatchEvent(evt);
- document.getElementsByClassName('_4sWnG')[0].click(); // click send button
- }
- })();