diff --git a/events/client/interactionCreate.js b/events/client/interactionCreate.js index 725f1ec..117be13 100644 --- a/events/client/interactionCreate.js +++ b/events/client/interactionCreate.js @@ -1,12 +1,12 @@ import { PermissionFlagsBits, InteractionType } from 'discord.js'; import db from '../../models/index.js'; -const ratelimit = {}; const { ownerId } = process.env; export default { name: 'interactionCreate', async execute(interaction) { + const ratelimit = global.ratelimit; const client = interaction.client; if (interaction.type !== InteractionType.ApplicationCommand) return; @@ -52,26 +52,31 @@ export default { */ try { + if (!ratelimit[userID]) { + ratelimit[userID] = {}; + } + const date = new Date(); - if (ratelimit[userID]) { - if (ratelimit[userID].cooldown) { - if (commandName === ratelimit[userID].command && date > ratelimit[userID].cooldown) { - ratelimit[userID].limit = 0; - ratelimit[userID].cooldown = undefined; + if (ratelimit[userID][commandName]) { + if (ratelimit[userID][commandName].cooldown) { + if (date > ratelimit[userID][commandName].cooldown) { + ratelimit[userID][commandName].limit = 0; + ratelimit[userID][commandName].cooldown = undefined; } } - if (commandName === ratelimit[userID].command && command.ratelimit === ratelimit[userID].limit) { - return await interaction.reply({ content: `You are being rate limited. You can try again in ${Math.floor((ratelimit[userID].cooldown - date) / 1000)} seconds.`, ephemeral: true }); - + if (command.ratelimit === ratelimit[userID][commandName].limit) { + return await interaction.reply({ content: `You are being rate limited. You can try again in ${Math.floor((ratelimit[userID][commandName].cooldown - date) / 1000)} seconds.`, ephemeral: true }); } } + + if (command.ratelimit) { - ratelimit[userID] = { command: commandName, limit: ratelimit[userID] ? ratelimit[userID].limit + 1 : 1 }; - if (command.ratelimit === ratelimit[userID].limit) { + ratelimit[userID][commandName] = { limit: ratelimit[userID][commandName] ? ratelimit[userID][commandName].limit + 1 : 1 }; + if (command.ratelimit === ratelimit[userID][commandName].limit) { date.setSeconds(date.getSeconds() + command.cooldown); - ratelimit[userID] = { command: commandName, limit: ratelimit[userID].limit, cooldown: date }; + ratelimit[userID][commandName] = { limit: ratelimit[userID][commandName].limit, cooldown: date }; } } diff --git a/events/client/messageCreate.js b/events/client/messageCreate.js index b77f24c..a048627 100644 --- a/events/client/messageCreate.js +++ b/events/client/messageCreate.js @@ -5,7 +5,6 @@ import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; import db from '../../models/index.js'; import { rand } from '../../utils/rand.js'; -const ratelimit = {}; const { ownerId, prefix } = process.env; const prefixs = prefix.split(','); @@ -313,26 +312,32 @@ export default { } try { + const ratelimit = global.ratelimit; + if (!ratelimit[userID]) { + ratelimit[userID] = {}; + } + const date = new Date(); - if (ratelimit[userID]) { - if (ratelimit[userID].cooldown) { - if (commandName === ratelimit[userID].command && date > ratelimit[userID].cooldown) { - ratelimit[userID].limit = 0; - ratelimit[userID].cooldown = undefined; + if (ratelimit[userID][commandName]) { + if (ratelimit[userID][commandName].cooldown) { + if (date > ratelimit[userID][commandName].cooldown) { + ratelimit[userID][commandName].limit = 0; + ratelimit[userID][commandName].cooldown = undefined; } } - if (commandName === ratelimit[userID].command && command.ratelimit === ratelimit[userID].limit) { - return await message.reply({ content: `You are being rate limited. You can try again in ${Math.floor((ratelimit[userID].cooldown - date) / 1000)} seconds.`, ephemeral: true }); - + if (command.ratelimit === ratelimit[userID][commandName].limit) { + return await message.reply({ content: `You are being rate limited. You can try again in ${Math.floor((ratelimit[userID][commandName].cooldown - date) / 1000)} seconds.`, ephemeral: true }); } } + + if (command.ratelimit) { - ratelimit[userID] = { command: commandName, limit: ratelimit[userID] ? ratelimit[userID].limit + 1 : 1 }; - if (command.ratelimit === ratelimit[userID].limit) { + ratelimit[userID][commandName] = { limit: ratelimit[userID][commandName] ? ratelimit[userID][commandName].limit + 1 : 1 }; + if (command.ratelimit === ratelimit[userID][commandName].limit) { date.setSeconds(date.getSeconds() + command.cooldown); - ratelimit[userID] = { command: commandName, limit: ratelimit[userID].limit, cooldown: date }; + ratelimit[userID][commandName] = { limit: ratelimit[userID][commandName].limit, cooldown: date }; } } message.user = message.author;