Как добавить отключение звука по времени в discord.js

#javascript #discord #bots

#javascript #Discord #боты

Вопрос:

Я создаю бота discord и хочу добавить функцию отключения звука по времени, как в других ботах модерации, где вы можете указать, кого вы хотите отключить и на какой срок. Я вообще отключил звук, но теперь мне нужно отключить звук по времени, поэтому, пожалуйста, помогите мне. Я тоже не очень хорошо разбираюсь в Javascript, поэтому, пожалуйста, скажите мне, где я реализую код, если вы дадите мне немного. Файл отключения звука:

 module.exports = {
  name: "mute",
  description: "mutes the mentioned user",

  execute(message, args) {
    const mutedRole = message.guild.roles.cache.find(
      (role) => role.name === "muted"
    );

    const target = message.mentions.members.first();

    if (!mutedRole) {
      message.channel.send("Cannot find mute role.");
    } else {
      target.roles.add(mutedRole);
      message.channel.send("Muted "   target   " ✅");
    }
  },
};
  

я хочу, чтобы это было -отключение звука {пользователя} {время}
примером может служить: -отключение звука @ani 10s

если вам нужен основной файл, вот и все:

 const Discord = require("discord.js");

const client = new Discord.Client();

const prefix = "!";

const fs = require("fs");

client.commands = new Discord.Collection();

const commandFiles = fs
  .readdirSync("./commands/")
  .filter((file) => file.endsWith(".js"));

for (const file of commandFiles) {
  const command = require(`./commands/${file}`);
  client.commands.set(command.name, command);
}

client.once("ready", () => {
  console.log("Ani Bot is online!");
  client.user.setActivity("with depression");
});

client.on("message", (message) => {
  if (message.content.startsWith(prefix) || message.author.bot) return;

  const args = message.content.slice(prefix.length).split(/  /);
  const command = args.shift().toLowerCase();

  if (command === "test") {
    client.commands.get("test").execute(message, args);
  } else if (command === "mute") {
    client.commands.get("mute").execute(message, args);
  } else if (command === "unmute") {
    client.commands.get("unmute").execute(message, args);
  } else if (command === "join") {
    client.commands.get("join").execute(message, args);
  } else if (command === "leave") {
    client.commands.get("leave").execute(message, args);
  }
});
  

Ответ №1:

Вы можете использовать эту функцию setTimeout() сразу после отключения звука пользователем.

 //you call the function unmuteUser after 10000 milliseconds
setTimeout(unmuteUser(user), 10000);

function unmuteUser(user){
   //code that unmute
   ...
}
  

Комментарии:

1. но как мне заставить его работать, исходя из времени, которое я ему уделяю? например, как заставить его работать в течение 1 часа, если я скажу 1 час

2. Вы должны получить время из сообщения, преобразовать его в миллисекунды и заменить его вместо 10000 мс.