1 |
import BaseEvent from '../../utils/structures/BaseEvent'; |
2 |
import { FileOptions, Message } from 'discord.js'; |
3 |
import DiscordClient from '../../client/Client'; |
4 |
import CommandOptions from '../../types/CommandOptions'; |
5 |
import path from 'path'; |
6 |
import MessageEmbed from '../../client/MessageEmbed'; |
7 |
|
8 |
export default class MessageCreateEvent extends BaseEvent { |
9 |
constructor() { |
10 |
super('messageCreate'); |
11 |
} |
12 |
|
13 |
async run(client: DiscordClient, message: Message) { |
14 |
if (message.author.bot || !message.guild || message.channel.type === 'DM') |
15 |
return; |
16 |
|
17 |
await client.setMessage(message); |
18 |
|
19 |
await client.spamFilter.start(message); |
20 |
await client.messageFilter.start(message); |
21 |
|
22 |
if (message.content.startsWith(client.config.get('prefix'))) { |
23 |
const [cmdName, ...args] = await message.content |
24 |
.slice(client.config.get('prefix').length) |
25 |
.trim() |
26 |
.split(/ +/); |
27 |
|
28 |
const command = await client.commands.get(cmdName); |
29 |
const allowed = await client.auth.verify(message.member!, cmdName); |
30 |
|
31 |
if (command && command.supportsLegacy) { |
32 |
if (allowed) { |
33 |
await command.run(client, message, { |
34 |
cmdName, |
35 |
args, |
36 |
argv: [cmdName, ...args], |
37 |
normalArgs: args.filter(a => a[0] !== '-'), |
38 |
options: args.filter(a => a[0] === '-'), |
39 |
isInteraction: false |
40 |
} as CommandOptions); |
41 |
} |
42 |
else { |
43 |
await message.reply({ |
44 |
embeds: [ |
45 |
new MessageEmbed() |
46 |
.setColor('#f14a60') |
47 |
.setDescription(":x: You don't have permission to run this command.") |
48 |
] |
49 |
}); |
50 |
} |
51 |
|
52 |
return; |
53 |
} |
54 |
|
55 |
const snippet = await client.snippetManager.get(message.guild!.id, cmdName); |
56 |
|
57 |
if (snippet) { |
58 |
await message.channel.send({ |
59 |
content: snippet.content, |
60 |
files: snippet.files.map(name => { |
61 |
return { |
62 |
name, |
63 |
attachment: path.resolve(__dirname, '../../../storage', name) |
64 |
} as FileOptions |
65 |
}), |
66 |
}); |
67 |
|
68 |
return; |
69 |
} |
70 |
} |
71 |
|
72 |
await client.afkEngine.start(message); |
73 |
} |
74 |
} |