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.
Files changed (2) hide show
  1. package/Bot.js +47 -13
  2. 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
- if (typeof EventEmitter !== "undefined") {} else {
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
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "catto.js",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "description": "Universal module for everything.",
5
5
  "main": "index.js",
6
6
  "scripts": {