/[sudobot]/trunk/src/commands/automation/AddQueueCommand.ts
ViewVC logotype

Annotation of /trunk/src/commands/automation/AddQueueCommand.ts

Parent Directory Parent Directory | Revision Log Revision Log


Revision 430 - (hide annotations)
Mon Jul 29 17:30:12 2024 UTC (8 months, 2 weeks ago) by rakin
File MIME type: application/typescript
File size: 4524 byte(s)
refactor: use new queue handler
1 rakin 393 /**
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 344 import { Message } from 'discord.js';
21 rakin 51 import BaseCommand from '../../utils/structures/BaseCommand';
22     import DiscordClient from '../../client/Client';
23     import CommandOptions from '../../types/CommandOptions';
24     import MessageEmbed from '../../client/MessageEmbed';
25     import ms from 'ms';
26     import { timeSince } from '../../utils/util';
27     import { setTimeoutv2 } from '../../utils/setTimeout';
28 rakin 430 import CustomQueue from '../../queues/CustomQueue';
29 rakin 46
30 rakin 51 export default class AddQueueCommand extends BaseCommand {
31     constructor() {
32     super('addqueue', 'automation', []);
33     }
34    
35     async run(client: DiscordClient, msg: Message, options: CommandOptions) {
36     if (options.args[1] === undefined) {
37 rakin 46 await msg.reply({
38     embeds: [
39     new MessageEmbed()
40     .setColor('#f14a60')
41     .setDescription(`This command requires at least two arguments.`)
42     ]
43     });
44    
45     return;
46     }
47    
48 rakin 51 const time = await ms(options.args[0]);
49     let cmd: string[];
50 rakin 46
51     if (!time) {
52     await msg.reply({
53     embeds: [
54     new MessageEmbed()
55     .setColor('#f14a60')
56     .setDescription(`Invalid time interval given.`)
57     ]
58     });
59    
60     return;
61     }
62    
63 rakin 51 cmd = [...options.args];
64     cmd.shift();
65 rakin 46
66 rakin 51 const cmdObj = client.commands.get(cmd[0]);
67    
68     if (!cmdObj) {
69 rakin 46 await msg.reply({
70     embeds: [
71     new MessageEmbed()
72     .setColor('#f14a60')
73     .setDescription(`Invalid command given.`)
74     ]
75     });
76    
77     return;
78     }
79    
80 rakin 51 if (!cmdObj.supportsLegacy) {
81     await msg.reply({
82     embeds: [
83     new MessageEmbed()
84     .setColor('#f14a60')
85 rakin 430 .setDescription(`This command conflicts with queued jobs. (Non-legacy handler)`)
86 rakin 51 ]
87     });
88 rakin 46
89 rakin 51 return;
90     }
91 rakin 46
92 rakin 430 const allowed = await client.auth.verify(msg.member!, cmdObj);
93    
94     if (!allowed) {
95     await msg.reply({
96     embeds: [
97     new MessageEmbed()
98     .setColor('#f14a60')
99     .setDescription(`Operation not permitted. You don't have enough permissions to run this command.`)
100     ]
101     });
102 rakin 51
103 rakin 430 return;
104     }
105 rakin 51
106 rakin 430 // const command = await cmd.join(' ');
107    
108     // const queue = await setTimeoutv2('queue', time, msg.guild!.id, command, command, msg.id, msg.channel!.id, msg.guild!.id);
109    
110     const queue = await client.queueManager.addQueue(CustomQueue, {
111     data: {
112     channelID: msg.channel.id,
113     guildID: msg.guild!.id,
114     messageID: msg.id,
115     cmd,
116     },
117     runAt: new Date(Date.now() + time),
118     guild: msg.guild!.id
119     });
120    
121 rakin 46 await msg.reply({
122     embeds: [
123     new MessageEmbed()
124     .setColor('#007bff')
125 rakin 430 .setDescription(`The queue has been added. Don't delete the command message - it will be used by the queue later.`)
126 rakin 46 .setFields([
127     {
128     name: "ID",
129 rakin 430 value: queue.id + '',
130 rakin 46 },
131     {
132     name: "Command",
133 rakin 430 value: `\`${cmd.join(' ')}\``
134 rakin 46 },
135     {
136     name: "Time",
137     value: "After " + timeSince(Date.now() - time).replace(' ago', '')
138     }
139     ])
140     ]
141     });
142     }
143 rakin 51 }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26