/[sudobot]/trunk/src/queues/CustomQueue.ts
ViewVC logotype

Annotation of /trunk/src/queues/CustomQueue.ts

Parent Directory Parent Directory | Revision Log Revision Log


Revision 431 - (hide annotations)
Mon Jul 29 17:30:12 2024 UTC (8 months, 1 week ago) by rakin
File MIME type: application/typescript
File size: 2740 byte(s)
style: add license comments
1 rakin 431 /**
2     * This file is part of SudoBot.
3     *
4     * Copyright (C) 2021-2022 OSN Inc.
5     *
6     * SudoBot is free software; you can redistribute it and/or modify it
7     * under the terms of the GNU Affero General Public License as published by
8     * the Free Software Foundation, either version 3 of the License, or
9     * (at your option) any later version.
10     *
11     * SudoBot is distributed in the hope that it will be useful, but
12     * WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU Affero General Public License for more details.
15     *
16     * You should have received a copy of the GNU Affero General Public License
17     * along with SudoBot. If not, see <https://www.gnu.org/licenses/>.
18     */
19    
20 rakin 430 import { TextChannel } from "discord.js";
21     import CommandOptions from "../types/CommandOptions";
22     import { fetchEmoji } from "../utils/Emoji";
23     import Queue from "../utils/structures/Queue";
24    
25     export default class CustomQueue extends Queue {
26     async execute({ channelID, guildID, messageID, cmd }: { [key: string]: string }): Promise<any> {
27     const guild = this.client.guilds.cache.get(guildID);
28    
29     if (!guild) {
30     return;
31     }
32    
33     const channel = guild.channels.cache.get(channelID) as TextChannel;
34    
35     if (!channel || !['GUILD_TEXT', 'GUILD_NEWS', 'GUILD_NEWS_THREAD', 'GUILD_PUBLIC_THREAD', 'GUILD_PRIVATE_THREAD'].includes(channel.type)) {
36     return;
37     }
38    
39     try {
40     const message = await channel.messages.fetch(messageID);
41    
42     if (message) {
43     const [commandName, ...args] = cmd;
44     const command = this.client.commands.get(commandName);
45    
46     if (!command) {
47     return message.reply(":x: Command not found");
48     }
49    
50     if (!command.supportsLegacy) {
51     return message.reply(":x: This command does not support legacy message handler.");
52     }
53    
54     const allowed = await this.client.auth.verify(message.member!, command);
55    
56     if (!allowed) {
57     return message.reply(":x: Operation not permitted. You don't have enough permissions.");
58     }
59    
60     const options = {
61     cmdName: commandName,
62     args,
63     argv: [commandName, ...args],
64     normalArgs: args.filter(a => a[0] !== '-'),
65     options: args.filter(a => a[0] === '-'),
66     isInteraction: false
67     } as CommandOptions;
68    
69     await command.execute(this.client, message, options);
70     }
71     }
72     catch (e) {
73     console.log(e);
74     }
75     }
76     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26