forked from KableKo/silent-type
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
72 lines (65 loc) · 1.77 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/* eslint-disable no-empty-function */
const {
webpack: { getModule },
entities: { Plugin },
} = require("powercord");
const typing = getModule(["startTyping"], false);
const oldStartTyping = typing.startTyping;
module.exports = class SilentType extends (
Plugin
) {
startPlugin() {
powercord.api.commands.registerCommand({
command: "silent-type",
description: "Keep your typing to yourself!",
usage: `{c} <set <on|off>|toggle|status>`,
executor: (args) => {
const handle = this.handler(args);
typing.stopTyping(window.location.href.split("/")[5]);
return {
send: false,
result: handle,
};
},
});
this.replaceStartTyping();
}
statusString = () => {
return this.settings.get("on") ? "**on**" : "**off**";
};
handler(args) {
args = args.map((a) => a.toLowerCase());
switch (args[0]) {
case "set":
this.settings.set("on", args[1] === "off" ? false : true);
return `Silent Type is now ${this.statusString()}.`;
case "toggle":
this.settings.set("on");
return `Silent Type is now ${this.statusString()}.`;
case "status":
return `Silent Type is currently ${this.statusString()}.`;
default:
return `${
args.length > 0
? `Incorrect arguments \`${args.join("| ")}\` given!\n`
: `No arguements given!`
}\nPlease run \`${
powercord.api.commands.prefix
}help silent-type\` for command usage.`;
}
}
replaceStartTyping() {
try {
typing.startTyping = (channel) => {
const on = this.settings.get("on");
if (!on) {
oldStartTyping(channel);
}
};
} catch (e) {}
}
pluginWillUnload() {
typing.startTyping = oldStartTyping;
powercord.api.commands.unregisterCommand("silent-type");
}
};