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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26