catto.js 0.3.6 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Bot.js +47 -13
- package/package.json +1 -1
package/Bot.js
CHANGED
|
@@ -3,7 +3,8 @@ var events = require("events");
|
|
|
3
3
|
var Discord = require("discord.js");
|
|
4
4
|
var User = require("./User");
|
|
5
5
|
var MessageBuilder = require("./MessageBuilder");
|
|
6
|
-
|
|
6
|
+
var Base64 = require("./Base64");
|
|
7
|
+
if (typeof EventEmitter === "undefined") {
|
|
7
8
|
var { EventEmitter } = events;
|
|
8
9
|
}
|
|
9
10
|
module.exports = class extends EventEmitter {
|
|
@@ -14,7 +15,8 @@ module.exports = class extends EventEmitter {
|
|
|
14
15
|
"intents": 98045,
|
|
15
16
|
"apiv": 10,
|
|
16
17
|
"slashListener": !0,
|
|
17
|
-
"publicKey": ""
|
|
18
|
+
"publicKey": "",
|
|
19
|
+
"debug": !1
|
|
18
20
|
}, options || {});
|
|
19
21
|
if (client) {
|
|
20
22
|
this.client = client;
|
|
@@ -34,6 +36,9 @@ module.exports = class extends EventEmitter {
|
|
|
34
36
|
this.buttons = new Map();
|
|
35
37
|
this.commands = new Map();
|
|
36
38
|
this.slashCommands = new Map();
|
|
39
|
+
if (this.options.debug) {
|
|
40
|
+
this.client.on("debug", console.log);
|
|
41
|
+
}
|
|
37
42
|
this.client.on("ready", () => {
|
|
38
43
|
var cmds = [];
|
|
39
44
|
for (var cmd of this.slashCommands.values()) {
|
|
@@ -126,7 +131,7 @@ module.exports = class extends EventEmitter {
|
|
|
126
131
|
if (this.options.slashListener) {
|
|
127
132
|
this.client.application.commands.set(cmds);
|
|
128
133
|
}
|
|
129
|
-
this.emit("running");
|
|
134
|
+
this.emit("running", { Discord, MessageBuilder });
|
|
130
135
|
});
|
|
131
136
|
this.client.on("interactionCreate", this.handleInteractionCreate.bind(this));
|
|
132
137
|
this.client.on("messageCreate", message => {
|
|
@@ -154,6 +159,33 @@ module.exports = class extends EventEmitter {
|
|
|
154
159
|
}
|
|
155
160
|
this.emit("message", message);
|
|
156
161
|
});
|
|
162
|
+
this.deleteKey = "e30=";
|
|
163
|
+
this.client.on("messageDelete", message => {
|
|
164
|
+
message.author = new User(message.author, this);
|
|
165
|
+
if (message.member) {
|
|
166
|
+
message.member.user = new User(message.member.user, this);
|
|
167
|
+
}
|
|
168
|
+
var deleteCache = JSON.parse(Base64.decode(this.deleteKey));
|
|
169
|
+
setTimeout(async() => {
|
|
170
|
+
var log = await message.guild.fetchAuditLogs({
|
|
171
|
+
"type": 72,
|
|
172
|
+
"limit": 50
|
|
173
|
+
});
|
|
174
|
+
var now = log.entries.filter(l => l.targetId == message.author.id).first();
|
|
175
|
+
if (deleteCache[message.author.id] && now.id == deleteCache[message.author.id].id) {
|
|
176
|
+
if (now.extra.count > deleteCache[message.author.id].extra.count) {
|
|
177
|
+
message.deletedBy = new User(now.executor, this);
|
|
178
|
+
} else {
|
|
179
|
+
message.deletedBy = message.author;
|
|
180
|
+
}
|
|
181
|
+
} else {
|
|
182
|
+
message.deletedBy = new User(now.executor, this);
|
|
183
|
+
}
|
|
184
|
+
deleteCache[message.author.id] = now;
|
|
185
|
+
this.deleteKey = Base64.encode(JSON.stringify(deleteCache));
|
|
186
|
+
this.emit("messageDeleted", message);
|
|
187
|
+
}, 1e3);
|
|
188
|
+
});
|
|
157
189
|
this.client.on("guildCreate", guild => {
|
|
158
190
|
this.emit("botAdd", guild);
|
|
159
191
|
});
|
|
@@ -161,6 +193,11 @@ module.exports = class extends EventEmitter {
|
|
|
161
193
|
this.emit("botDelete", guild);
|
|
162
194
|
});
|
|
163
195
|
}
|
|
196
|
+
get servers() {
|
|
197
|
+
var r = Array.from(this.client.guilds.values());
|
|
198
|
+
r.count = r.length;
|
|
199
|
+
return r;
|
|
200
|
+
}
|
|
164
201
|
slashCommand(basic, options, executor) {
|
|
165
202
|
if (!basic.name.startsWith("/")) {
|
|
166
203
|
throw new Error("Slash command starts with /.");
|
|
@@ -221,11 +258,11 @@ module.exports = class extends EventEmitter {
|
|
|
221
258
|
}
|
|
222
259
|
}
|
|
223
260
|
handleInteractionCreate(interaction) {
|
|
261
|
+
interaction.user = new User(interaction.user, this);
|
|
262
|
+
if (interaction.member) {
|
|
263
|
+
interaction.member.user = new User(interaction.member.user, this);
|
|
264
|
+
}
|
|
224
265
|
if (interaction.isChatInputCommand()) {
|
|
225
|
-
interaction.user = new User(interaction.user, this);
|
|
226
|
-
if (interaction.member) {
|
|
227
|
-
interaction.member.user = new User(interaction.member.user, this);
|
|
228
|
-
}
|
|
229
266
|
var command = this.slashCommands.get(interaction.commandName);
|
|
230
267
|
if (command) {
|
|
231
268
|
try {
|
|
@@ -243,12 +280,7 @@ module.exports = class extends EventEmitter {
|
|
|
243
280
|
} else {
|
|
244
281
|
interaction.reply({}).catch(() => {});
|
|
245
282
|
}
|
|
246
|
-
}
|
|
247
|
-
if (interaction.isButton()) {
|
|
248
|
-
interaction.user = new User(interaction.user, this);
|
|
249
|
-
if (interaction.member) {
|
|
250
|
-
interaction.member.user = new User(interaction.member.user, this);
|
|
251
|
-
}
|
|
283
|
+
} else if (interaction.isButton()) {
|
|
252
284
|
var button = this.buttons.get(interaction.customId);
|
|
253
285
|
if (button) {
|
|
254
286
|
try {
|
|
@@ -267,6 +299,8 @@ module.exports = class extends EventEmitter {
|
|
|
267
299
|
} else {
|
|
268
300
|
interaction.reply({}).catch(() => {});
|
|
269
301
|
}
|
|
302
|
+
} else {
|
|
303
|
+
this.emit("interaction", interaction);
|
|
270
304
|
}
|
|
271
305
|
}
|
|
272
306
|
};
|