1 |
rakin |
51 |
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 |
|
|
|
30 |
|
|
if (command && command.supportsLegacy) { |
31 |
rakin |
58 |
const allowed = await client.auth.verify(message.member!, command); |
32 |
|
|
|
33 |
rakin |
51 |
if (allowed) { |
34 |
rakin |
54 |
const options = { |
35 |
rakin |
51 |
cmdName, |
36 |
|
|
args, |
37 |
|
|
argv: [cmdName, ...args], |
38 |
|
|
normalArgs: args.filter(a => a[0] !== '-'), |
39 |
|
|
options: args.filter(a => a[0] === '-'), |
40 |
|
|
isInteraction: false |
41 |
rakin |
54 |
} as CommandOptions; |
42 |
|
|
|
43 |
|
|
if (!await client.cooldown.start(message, options)) |
44 |
|
|
return; |
45 |
|
|
|
46 |
rakin |
207 |
await command.execute(client, message, options); |
47 |
rakin |
51 |
} |
48 |
|
|
else { |
49 |
|
|
await message.reply({ |
50 |
|
|
embeds: [ |
51 |
|
|
new MessageEmbed() |
52 |
|
|
.setColor('#f14a60') |
53 |
|
|
.setDescription(":x: You don't have permission to run this command.") |
54 |
|
|
] |
55 |
|
|
}); |
56 |
|
|
} |
57 |
|
|
|
58 |
|
|
return; |
59 |
|
|
} |
60 |
|
|
|
61 |
rakin |
255 |
const snippet = await client.snippetManager.getParsed(message.guild!.id, cmdName); |
62 |
rakin |
51 |
|
63 |
|
|
if (snippet) { |
64 |
|
|
await message.channel.send({ |
65 |
rakin |
255 |
content: snippet.content.trim() === '' ? undefined : snippet.content, |
66 |
rakin |
51 |
files: snippet.files.map(name => { |
67 |
|
|
return { |
68 |
|
|
name, |
69 |
|
|
attachment: path.resolve(__dirname, '../../../storage', name) |
70 |
|
|
} as FileOptions |
71 |
|
|
}), |
72 |
rakin |
255 |
embeds: snippet.embeds |
73 |
rakin |
51 |
}); |
74 |
|
|
|
75 |
|
|
return; |
76 |
|
|
} |
77 |
|
|
} |
78 |
|
|
|
79 |
|
|
await client.afkEngine.start(message); |
80 |
|
|
} |
81 |
|
|
} |