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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/commands/addqueue.js revision 49 by rakin, Mon Jul 29 17:28:21 2024 UTC trunk/src/commands/automation/AddQueueCommand.ts revision 430 by rakin, Mon Jul 29 17:30:12 2024 UTC
# Line 1  Line 1 
1  const { MessageEmbed } = require("discord.js");  /**
2  const ms = require("ms");  * This file is part of SudoBot.
3  const { clearTimeoutv2, getTimeout, setTimeoutv2 } = require("../src/setTimeout");  *
4  const { timeSince } = require("../src/util");  * Copyright (C) 2021-2022 OSN Inc.
5    *
6  module.exports = {  * SudoBot is free software; you can redistribute it and/or modify it
7      async handle(msg, cm) {  * under the terms of the GNU Affero General Public License as published by
8          if (cm.args[1] === undefined) {  * 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    import { Message } from 'discord.js';
21    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    import CustomQueue from '../../queues/CustomQueue';
29    
30    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              await msg.reply({              await msg.reply({
38                  embeds: [                  embeds: [
39                      new MessageEmbed()                      new MessageEmbed()
# Line 17  module.exports = { Line 45  module.exports = {
45              return;              return;
46          }          }
47    
48          const time = await ms(cm.args[0]);          const time = await ms(options.args[0]);
49            let cmd: string[];
50    
51          if (!time) {          if (!time) {
52              await msg.reply({              await msg.reply({
# Line 31  module.exports = { Line 60  module.exports = {
60              return;              return;
61          }          }
62    
63          const args = [...cm.args];          cmd = [...options.args];
64          args.shift();          cmd.shift();
65    
66          if (typeof cm.commands[args[0]] === 'undefined') {          const cmdObj = client.commands.get(cmd[0]);
67    
68            if (!cmdObj) {
69              await msg.reply({              await msg.reply({
70                  embeds: [                  embeds: [
71                      new MessageEmbed()                      new MessageEmbed()
# Line 46  module.exports = { Line 77  module.exports = {
77              return;              return;
78          }          }
79    
80          const command = await args.join(' ');          if (!cmdObj.supportsLegacy) {
81                await msg.reply({
82                    embeds: [
83                        new MessageEmbed()
84                        .setColor('#f14a60')
85                        .setDescription(`This command conflicts with queued jobs. (Non-legacy handler)`)
86                    ]
87                });
88    
89                return;
90            }
91    
92          const queue = await setTimeoutv2('queue.js', time, msg.guild.id, command, command, msg.id, msg.channel.id, msg.guild.id);          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    
103                return;
104            }
105    
106            // 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          await msg.reply({          await msg.reply({
122              embeds: [              embeds: [
123                  new MessageEmbed()                  new MessageEmbed()
124                  .setColor('#007bff')                  .setColor('#007bff')
125                  .setDescription(`The queue has been added.`)                  .setDescription(`The queue has been added. Don't delete the command message - it will be used by the queue later.`)
126                  .setFields([                  .setFields([
127                      {                      {
128                          name: "ID",                          name: "ID",
129                          value: queue.row.id + '',                          value: queue.id + '',
130                      },                      },
131                      {                      {
132                          name: "Command",                          name: "Command",
133                          value: `\`${command}\``                          value: `\`${cmd.join(' ')}\``
134                      },                      },
135                      {                      {
136                          name: "Time",                          name: "Time",
# Line 72  module.exports = { Line 140  module.exports = {
140              ]              ]
141          });          });
142      }      }
 };  
143    }

Legend:
Removed from v.49  
changed lines
  Added in v.430

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26