返回首頁 

Greasy Fork is available in English.

WhatsApp Web - Chat Bot

A chat bot for WhatsApp Web, with some basic commands. Check console for log.


安装此脚本?
// ==UserScript==// @name         WhatsApp Web - Chat Bot// @namespace    WACB// @version      0.1// @description  A chat bot for WhatsApp Web, with some basic commands. Check console for log.// @author       Royalgamer06// @match        https://web.whatsapp.com/// @grant        GM_xmlhttpRequest// @grant        unsafeWindow// @run-at       document-idle// ==/UserScript==var jq = document.createElement('script');jq.onload = function() {jQuery.noConflict();console.log('jQuery loaded');setTimeout(Main, 3500);};jq.src = "//ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js";document.getElementsByTagName('head')[0].appendChild(jq);function Main() {console.log("[WACB] Waiting for chat to load");jQuery("#pane-side").on("click", function() {setTimeout(listenToChat, 350);});}function listenToChat() {console.log("[WACB] Listening to chat");/*jQuery(".message-list").bind("DOMSubtreeModified", function() {var new_msg = jQuery(".selectable-text").last().text();console.log("[WACB] New chat message: \n" + new_msg);if (new_msg.indexOf("!") === 0) {var cmd_line = new_msg.substring(1);var cmd = cmd_line.split(" ")[0];var args = cmd_line.split(" ").shift();if (cmd == "about") {sendMsg("I am a chat bot, made by Roy van Dijk.");}}});*/unsafeWindow.sendMsg = function(msg) {console.log("[WACB] Sending message: \n" + msg);var target = document.getElementsByClassName("input")[1];var eventType = "textInput";var evt = document.createEvent("TextEvent");evt.initTextEvent(eventType, true, true, unsafeWindow, msg, 0, "en-US");target.focus();target.dispatchEvent(evt);jQuery(".send-container").click();};var last_msg = jQuery(".selectable-text").last().text();setInterval(function() {var new_msg = jQuery(".selectable-text").last().text();if (new_msg !== last_msg) {console.log("[WACB] New chat message: \n" + new_msg);last_msg = new_msg;if (new_msg.indexOf("!") === 0) {var cmd_line = new_msg.substring(1);var cmd = cmd_line.split(" ")[0];var args = cmd_line.split(" ").slice(1);if (cmd == "help") {sendMsg("I can do the following commands:");sendMsg("*!about*: Returns who I am.");sendMsg("*!joke*: Returns a random joke (about Chuck Norris).");sendMsg("*!weather*: Returns the current weather in Eindhoven.");sendMsg("*!weather <LOCATION>*: Returns the current weather in <LOCATION>.");sendMsg("*!gewis*: Returns the agenda of GEWIS.");sendMsg("(Work in progress)");}if (cmd == "about") {sendMsg("I am a chat bot.");}if (cmd == "joke") {GM_xmlhttpRequest({method: "GET",url: "http://api.icndb.com/jokes/random?escape=javascript",onload: function(response) {var json = JSON.parse(response.responseText);sendMsg(json.value.joke);}});}if (cmd == "weather") {var url = "http://api.apixu.com/v1/current.json?key=d0c5d252848043d6af4210418162706&q=Eindhoven";if (args.length > 0) {url = "http://api.apixu.com/v1/current.json?key=d0c5d252848043d6af4210418162706&q=" + args[0];}GM_xmlhttpRequest({method: "GET",url: url,onload: function(response) {var json = JSON.parse(response.responseText);if (args.length > 0) {if (json.error) {sendMsg("ERROR: Couldn't find location.");} else {sendMsg("It is currently " + json.current.temp_c + "°C in " + args[0]);}} else {sendMsg("It is currently " + json.current.temp_c + "°C in Eindhoven.");}}});}if (cmd == "gewis") {GM_xmlhttpRequest({method: "GET",url: "https://www.gewis.nl/activity",onload: function(response) {var acts = jQuery(".agenda-item-body", response.responseText);for (var i = 0; i < acts.length; i++) {sendMsg(jQuery("h4 > a", acts[i]).text().trim() + " - " + jQuery("div.col-md-4 > dl > dd:nth-child(2)", acts[i]).text().trim() + " @ " + jQuery("div.col-md-4 > dl > dd:nth-child(6)", acts[i]).text().trim());}}});}}}}, 100);}