您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A Bot that automatically types for you in MonkeyType.
// ==UserScript== // @name MonkeyType AutoTyper Bot // @author ByfronFucker // @description A Bot that automatically types for you in MonkeyType. // @icon https://th.bing.com/th/id/R.c8397fb766c4397fea8a8b499c15a453?rik=aROX42RoH7HhXw&pid=ImgRaw&r=0 // @version 1.0 // @match *://monkeytype.com/* // @run-at document-start // @grant none // @license MIT // @namespace https://greasyfork.org/en/users/1380005-real-aquzr // ==/UserScript== /* jshint esversion:6 */ (function () { "use strict"; const log = console.log; let isTyping = false; function canType() { const typingTest = document.getElementById("typingTest"); const isHidden = typingTest.classList.contains("hidden"); return !isHidden; } function getNextCharacter() { const currentWord = document.querySelector(".word.active"); for (const letter of currentWord.children) { if (letter.className === "") return letter.textContent; } return " "; } function pressKey(key) { const wordsInput = document.getElementById("wordsInput"); wordsInput.value += key; const KeyboardEvent = new KeyboardEvent("keyup", { key: key }); const InputEvent = new InputEvent("input", { data: key }); wordsInput.dispatchEvent(InputEvent); wordsInput.dispatchEvent(KeyboardEvent); } function typeCharacter() { if (!canType() || !isTyping) { return; } const nextChar = getNextCharacter(); pressKey(nextChar); // Automatically type next character immediately setTimeout(typeCharacter, 0); } const gui = document.createElement("div"); gui.style.position = "fixed"; gui.style.bottom = "30%"; gui.style.right = "0"; gui.style.transform = "translateY(50%)"; gui.style.padding = "5px"; gui.style.background = "rgba(0, 0, 0, 0.6)"; gui.style.color = "white"; gui.style.fontFamily = "sans-serif"; gui.style.fontSize = "12px"; gui.style.zIndex = "9999"; gui.innerHTML = ` <div style="display: flex; flex-direction: column;"> <button id="startButton" style="background: green; color: white;">Start Typing</button> <button id="stopButton" style="background: red; color: white; display: none;">Stop Typing</button> </div> `; document.body.appendChild(gui); const startButton = document.getElementById("startButton"); const stopButton = document.getElementById("stopButton"); startButton.addEventListener("click", function () { if (canType()) { isTyping = true; log("STARTED TYPING"); startButton.style.display = "none"; stopButton.style.display = "block"; typeCharacter(); } }); stopButton.addEventListener("click", function () { isTyping = false; log("STOPPED TYPING"); startButton.style.display = "block"; stopButton.style.display = "none"; }); })();