您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Здоровается с преподавателем на лекции, как только это сделал кто-то другой
- // ==UserScript==
- // @name Moodle AutoHello
- // @namespace https://t.me/johannmosin
- // @version 0.1.0
- // @description Здоровается с преподавателем на лекции, как только это сделал кто-то другой
- // @author Johann Mosin
- // @license MIT
- // @match https://*.edu.vsu.ru/html5client/*
- // ==/UserScript==
- (function () {
- 'use strict';
- let messageSent = false; // Prevent sending multiple messages
- function findReactProps(dom) {
- for (const key in dom) {
- if (key.startsWith('__reactInternalInstance$') || key.startsWith('__reactFiber$')) {
- return dom[key].return ? dom[key].return.stateNode.props : dom[key]._currentElement._owner._instance.props;
- }
- }
- return null;
- }
- function autoGreet() {
- if (messageSent) return; // Stop if message already sent
- // Check for greetings in the page text
- const greetings = ["здравствуйте", "здравстуйте", "Здравствуйте", "Здраствуйте"];
- const pageText = document.body.innerText;
- if (greetings.some(greet => pageText.includes(greet))) {
- console.log("Greeting detected!");
- // Find the input and send button
- const messageInput = document.querySelector('#message-input');
- const sendButton = document.querySelector('button[aria-label="Отправить сообщение"]');
- if (messageInput && sendButton) {
- // Access React props
- const props = findReactProps(messageInput);
- if (props && props.onChange) {
- // Create a synthetic event to update React state
- const syntheticEvent = {
- target: { value: "Здравствуйте" },
- currentTarget: { value: "Здравствуйте" },
- };
- props.onChange(syntheticEvent);
- // Now click the send button
- sendButton.click();
- console.log("Greeting message sent via React props!");
- messageSent = true; // Mark as sent to prevent multiple sends
- // Stop the interval to save memory
- clearInterval(greetingInterval);
- console.log("Interval cleared to save memory.");
- } else {
- console.log("React props not found or onChange handler missing.");
- }
- } else {
- console.log("Message input or send button not found!");
- }
- }
- }
- // Run the function periodically to detect greetings
- const greetingInterval = setInterval(autoGreet, 2000);
- })();