show how many execution in parallel are currently running in help

This commit is contained in:
Supositware 2023-12-14 00:23:49 +01:00
parent 591652f33f
commit 50e49db47c
4 changed files with 23 additions and 9 deletions

View file

@ -1,5 +1,6 @@
import { SlashCommandBuilder, EmbedBuilder, AttachmentBuilder, PermissionsBitField } from 'discord.js';
import fs from 'node:fs';
import ratelimiter from '../../utils/ratelimiter.js';
const { ownerId, prefix } = process.env;
const prefixs = prefix.split(',');
@ -113,6 +114,13 @@ export default {
embed.addFields({ name: 'Bot permission', value: `\`${perm.join('` `')}\``, inline: true });
}
if (command.parallelLimit) {
const paralellimit = ratelimiter.checkParallel(interaction.user, command.data.name, command);
embed.addFields({ name: 'Current number of executions', value: `\`${paralellimit.current}\``, inline: false });
embed.addFields({ name: 'Maximum number of executions', value: `\`${command.parallelLimit}\``, inline: true });
}
if (fs.existsSync(`./asset/img/command/${command.category}/${command.data.name}.png`)) {
const file = new AttachmentBuilder(`./asset/img/command/${command.category}/${command.data.name}.png`);
embed.setImage(`attachment://${command.data.name}.png`);

View file

@ -71,8 +71,8 @@ export default {
if (command.parallelLimit) {
console.log('Command has a parallel limit');
const doParallelLimit = ratelimiter.checkParallel(interaction.user, commandName, command);
console.log(doParallelLimit);
if (doParallelLimit) {
console.log(doParallelLimit.limited);
if (doParallelLimit.limited) {
return await interaction.reply({ content: doParallelLimit, ephemeral: true });
}

View file

@ -334,8 +334,8 @@ export default {
if (command.parallelLimit) {
console.log('Command has a parallel limit');
const doParallelLimit = ratelimiter.checkParallel(message.author, commandName, command);
console.log(doParallelLimit);
if (doParallelLimit) {
console.log(doParallelLimit.limited);
if (doParallelLimit.limited) {
return await message.reply({ content: doParallelLimit, ephemeral: true });
}
@ -426,7 +426,7 @@ export default {
}
if (!isOptOut && argsLength > 0) {
console.log(`[${timestamp.toISOString()}]\x1b[33m⤷\x1b[0m with args ${JSON.stringify(args)}`);
console.log(`[${timestamp.toISOString()}] \x1b[33m⤷\x1b[0m with args ${JSON.stringify(args)}`);
}
await command.execute(message, args, client)

View file

@ -1,6 +1,6 @@
const ratelimit = {};
const parallelLimit = {};
const { ownerId } = process.env;
const { ownerId, NODE_ENV } = process.env;
import db from '../models/index.js';
@ -85,13 +85,19 @@ function removeParallel(commandName) {
function checkParallel(user, commandName, command) {
// Don't apply the rate limit to bot owner
if (user.id === ownerId) return false;
if (NODE_ENV !== 'development') {
if (user.id === ownerId) {
return false;
}
}
if (!parallelLimit[commandName]) parallelLimit[commandName] = 0;
// console.log(`[CHECK] command limit: ${command.parallelLimit}`);
// console.log(`[CHECK] current parallel executions: ${parallelLimit[commandName]}`);
if (parallelLimit[commandName] >= command.parallelLimit) {
return 'There are currently too many parallel execution of this command, please wait before retrying.';
return { limited: true, current: parallelLimit[commandName], max: command.parallelLimit, msg: `There are currently too many parallel execution of this command, please wait before retrying. (${parallelLimit[commandName]}/${command.parallelLimit})` };
}
return false;
return { limited: false, current: parallelLimit[commandName], max: command.parallelLimit };
}