first commit
This commit is contained in:
92
commands/misc/pinguser.js
Normal file
92
commands/misc/pinguser.js
Normal file
@ -0,0 +1,92 @@
|
||||
const { Client, Interaction, SlashCommandBuilder } = require("discord.js");
|
||||
|
||||
const cooldowns = new Map();
|
||||
var isDisabled = false;
|
||||
|
||||
/**
|
||||
* Handles the ping user command.
|
||||
* @param {Interaction} interaction - The interaction object.
|
||||
*/
|
||||
async function handlePingCommand(interaction) {
|
||||
const user = interaction.options.getUser("user"); // Get the user from the interaction
|
||||
const times = interaction.options.getInteger("times") || 1; // Default to 1 if not provided
|
||||
|
||||
try {
|
||||
// Ensure the user exists in the guild
|
||||
const userPing = await interaction.guild.members.fetch(user.id);
|
||||
if (!userPing) {
|
||||
await interaction.reply("That user doesn't exist in this server.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Prevent the bot from pinging itself
|
||||
if (userPing.id === interaction.guild.members.me.id) {
|
||||
await interaction.reply("I can't ping myself.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Cooldown logic
|
||||
const coolDown = 24 * 60 * 60 * 1000; // 24 hours in milliseconds
|
||||
const now = Date.now();
|
||||
const lastExec = cooldowns.get(interaction.user.id);
|
||||
|
||||
if (lastExec && now - lastExec < coolDown) {
|
||||
const timeLeft = coolDown - (now - lastExec);
|
||||
|
||||
const days = Math.floor(timeLeft / (1000 * 60 * 60 * 24));
|
||||
const hours = Math.floor((timeLeft % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
||||
const minutes = Math.floor((timeLeft % (1000 * 60 * 60)) / (1000 * 60));
|
||||
const seconds = Math.floor((timeLeft % (1000 * 60)) / 1000);
|
||||
|
||||
await interaction.reply(
|
||||
`You need to wait ${days} days, ${hours} hours, ${minutes} minutes, and ${seconds} seconds before using this command again.`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// Send the pings
|
||||
await interaction.reply({ content: "Ok, sending pings.", ephemeral: false });
|
||||
|
||||
for (let i = 0; i < times; i++) {
|
||||
await interaction.channel.send(`Pinging ${userPing}`);
|
||||
await new Promise((resolve) => setTimeout(resolve, 300)); // Wait 300ms between pings
|
||||
}
|
||||
|
||||
// Update the cooldown
|
||||
cooldowns.set(interaction.user.id, now);
|
||||
} catch (error) {
|
||||
console.error("There was an error in pinguser: ", error);
|
||||
await interaction.reply({
|
||||
content: "An error occurred while executing the command.",
|
||||
ephemeral: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName("pinguser")
|
||||
.setDescription("Ping the mentioned user")
|
||||
.addUserOption((option) =>
|
||||
option.setName("user").setDescription("The user to ping").setRequired(true),
|
||||
)
|
||||
.addIntegerOption((option) =>
|
||||
option
|
||||
.setName("times")
|
||||
.setDescription("Number of times to ping the user")
|
||||
.setRequired(false),
|
||||
),
|
||||
async execute(interaction) {
|
||||
try {
|
||||
if (isDisabled) {
|
||||
return interaction.reply({
|
||||
content: "The command is disabled... Try again later.",
|
||||
ephemeral: true,
|
||||
});
|
||||
}
|
||||
await handlePingCommand(interaction); // Ensure we await this function
|
||||
} catch (error) {
|
||||
console.error("There was an error executing the command: ", error);
|
||||
}
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user