// @flow const commandsSym = Symbol("__commands"); function init(obj: Object) { const { after } = window.demon.require("patcher") const { findByProps } = window.demon.require("webpack") window.demonCommands = {} window.demonCommands[commandsSym] = {}; after( "sendMessage", findByProps("sendMessage"), (args, otherRes) => { let res; for (const key of Reflect.ownKeys(window.demonCommands[commandsSym])) { let command = window.demonCommands[commandsSym][key]; if (args[1].content.split(" ")[0] === ">" + command.name) { res = command.callback(args); break; } } if (res !== undefined) args[1].content = res; return args; } ); } // command = { // name: "name", // callback: (args)=>"Hello, world!" // } function add(command: { name: string, callback: (args: Array) => string }): () => void { let sym = Symbol(command.name); window.demonCommands[commandsSym][sym] = command; return () => { delete window.demonCommands[commandsSym][sym]; }; } export default { add: add, init: init };