#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 мс.