您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Alerts when new messages arrive in Discord chat
- // ==UserScript==
- // @name Discord New Message Alert
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @description Alerts when new messages arrive in Discord chat
- // @author r!PsAw
- // @match https://discord.com/channels/*
- // @match https://diep.io/*
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant unsafeWindow
- // @run-at document-start
- // @license balls
- // ==/UserScript==
- const win = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window;
- //detect if we're on discord or diep.io
- function where_are_we_rn(){
- switch(win.location.origin){
- case "https://discord.com":
- return "discord";
- case "https://diep.io":
- return "diepio";
- default:
- return "unknown";
- }
- }
- const origin = where_are_we_rn();
- //logic for discord
- let scrollerInner;
- let old = new Set();
- function find_scrollerInner(){
- if(document.querySelector('[class^="scrollerInner__"]')){
- scrollerInner = document.querySelector('[class^="scrollerInner__"]')
- return;
- }
- setTimeout(find_scrollerInner, 200);
- }
- find_scrollerInner();
- function check_classes(element, goal){
- for(let _class of element.classList){
- if(_class.includes(goal)) return true;
- }
- return false;
- }
- function check_id(element, goal) {
- return element.id && element.id.includes(goal);
- }
- function is_message(element){
- return (element.innerText.length > 0 && element.nodeName === 'SPAN');
- }
- function read_messages(){
- if(!scrollerInner || origin != 'discord') return;
- for(let msg of scrollerInner.children){
- if(check_id(msg, 'chat-messages-')){
- let children = msg.children;
- for(let child of children){
- if(check_classes(child, 'message__')){
- let children1 = child.children;
- for(let child1 of children1){
- if(check_classes(child1, 'contents_')){
- let children2 = child1.children;
- for(let child2 of children2){
- if(check_id(child2, 'message-content-')){
- let children3 = child2.children;
- for(let child3 of children3){
- if(is_message(child3)){
- //console.log(child3.innerText);
- if(!old.has(child3.innerText)){
- old.add(child3.innerText);
- GM_setValue("Last Message", child3.innerText);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- setInterval(read_messages, 1000);
- //logic for diep.io
- let last_message = '';
- function display_new_message(){
- if(!GM_getValue("Last Message") || origin != 'diepio') return;
- const stored_message = GM_getValue("Last Message");
- if(win.input && win.input.doesHaveTank() && stored_message !== last_message){
- console.log(stored_message, last_message, stored_message !== last_message);
- last_message = stored_message;
- win.input.inGameNotification(`[Discord -> Diep.io] ${stored_message}`);
- }
- }
- setInterval(display_new_message, 1000);