您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
8/6/2022, 1:13:53 AM
- // ==UserScript==
- // @name MPP - AdvancedChatLogger
- // @namespace Violentmonkey Scripts
- // @match https://mppclone.com/*
- // @grant none
- // @version 1.3
- // @author Wolfy0615
- // @description 8/6/2022, 1:13:53 AM
- // ==/UserScript==
- function init() {
- let logger = {
- messages: [],
- log: (msg, msgTime) => {
- // msg = `[${msgTime}] ` + msg;
- msg = "[" + msgTime + "] " + msg;
- msg += "\n";
- if (this.messages.includes(msg)) return;
- this.messages.push(msg);
- },
- clear: () => {
- this.messages = [];
- },
- };
- const protocol = {
- chatList: "c",
- chat: "a",
- directMessage: "dm",
- channelUpdate: "ch",
- };
- const client = MPP.client;
- let lastChannel = "";
- client.on(protocol.channelUpdate, (msg) => {
- if (lastChannel === msg.ch.id) return;
- logger.clear();
- console.log("Detected room change. Clearing logs...");
- lastChannel = msg.ch.id;
- });
- client.on(protocol.chatList, (msg) => {
- if (msg.c) {
- msg.c.forEach((cmsg) => {
- if (cmsg.m === "dm") {
- const time = new Date(cmsg.t).toLocaleTimeString();
- const sender = cmsg.sender;
- const senderId = sender.id;
- const senderName = sender.name;
- const recipient = cmsg.recipient;
- const recipientId = recipient.id;
- const recipientName = recipient.name;
- if (senderId === client.getOwnParticipant().id) {
- logger.log(
- `${time} ${senderId} (DM) ${senderName} to ${recipientId} ${recipientName}: ${cmsg.a}`,
- cmsg.t
- );
- } else {
- logger.log(
- `${time} ${recipientId} (DM) ${recipientName} from ${senderId} ${senderName}: ${cmsg.a}`,
- cmsg.t
- );
- }
- } else {
- const time = new Date(cmsg.t).toLocaleTimeString();
- logger.log(
- `${time} ${cmsg.p.id} (--) ${cmsg.p.name}: ${cmsg.a}`,
- cmsg.t
- );
- }
- });
- }
- });
- client.on(protocol.chat, (msg) => {
- const time = new Date(msg.t).toLocaleTimeString();
- logger.log(`${time} ${msg.p.id} (--) ${msg.p.name}: ${msg.a}`, msg.t);
- });
- client.on(protocol.directMessage, (msg) => {
- const time = new Date(msg.t).toLocaleTimeString();
- const sender = msg.sender;
- const senderId = sender.id;
- const senderName = sender.name;
- const recipient = msg.recipient;
- const recipientId = recipient.id;
- const recipientName = recipient.name;
- if (senderId === client.getOwnParticipant().id) {
- logger.log(
- `${time} ${senderId} (DM) ${senderName} to ${recipientId} ${recipientName}: ${msg.a}`,
- msg.t
- );
- } else {
- logger.log(
- `${time} ${recipientId} (DM) ${recipientName} from ${senderId} ${senderName}: ${msg.a}`,
- msg.t
- );
- }
- });
- window.messages = logger.messages;
- const btn = `<div id="chat-download-btn" class="ugly-button">Download Chat</div>`;
- $("#bottom .relative").append(btn);
- $("#chat-download-btn").css({
- position: "absolute",
- left: "1020px",
- top: "32px",
- });
- $("#chat-download-btn").on("click", () => {
- let uri = URL.createObjectURL(
- new Blob(messages, { type: "text/plain" })
- );
- new MPP.Notification({
- id: "chat-download",
- class: "classic",
- title: "Chat Download",
- html: `<a href="${uri}" download="${client.channel.id}">Here</a> is your download.`,
- duration: 7000,
- target: "#piano",
- });
- });
- }
- const initInterval = setInterval(() => {
- if (window.MPP) {
- clearInterval(initInterval);
- init();
- }
- });