Отключение температуры в discord.js версия 12

#javascript #node.js #discord #bots #discord.js

#javascript #node.js #Discord #боты #discord.js

Вопрос:

Я хотел бы знать, как создать временную команду отключения звука, я имею в виду, что когда я набираю t-mute (пользователь) (время), роль применяется в соответствии с установленным мной временем. Правда в том, что я понятия не имею, как это сделать : (

Ответ №1:

Чтобы установить тайм-аут перед выполнением чего-либо, вы можете использовать функцию setTimeout() JavaScript.

 setTimeout(() => {
//do something
}, afterMs)
  

Я собираюсь предположить, что у вас уже установлены параметры user и time, а продолжительность должна быть указана в минутах.

 let user = args[value];
let duration = parseInt(args[value]);
setTimeout(() => {
//do something
}, duration * 60 * 1000)
  

Замените value значением параметра в сообщении, в зависимости от того, на что похож ваш обработчик аргументов.
parseInt() преобразует аргумент (строку) в число. Например, указанная длительность равна «5», после этого она станет равной 5 parseInt() .
Допустим, длительность, указанная в сообщении, равна 5 (минутам), поскольку значение длительности setTimeout() указывается в миллисекундах, мы используем duration * 60 * 1000 для преобразования его в миллисекунды.

Ответ №2:

Вы должны использовать setTimeout() функцию.


 // function example

setTimeout(() => {
  console.log('This will be logged after a 5 second delay')
}, 5000) // 5000 is 5 seconds in ms (milliseconds)  


В вашей ситуации вы можете использовать его для добавления Muted роли, а затем удалить ее через указанное количество времени. Предполагая, что вы используете функциональный обработчик команд, вот как вы можете создать tempmute команду:

 // Usage: !tempmute @user [time (in milliseconds)]

// get user from mention
const target = message.guild.member(message.mentions.users.first())

// give user 'Muted' role
target.roles.cache.add('<ID of role you want to give>')

setTimeout(() => {

  // remove 'Muted' role
  target.roles.cache.remove('<ID of role that was given>')

}, args[1]) // trigger function after specified time
  

Конечно, это очень простой шаблон, вам нужно было бы добавить намного больше, чтобы сделать его хорошей командой.

Другим предложением было бы использовать пакет npm ms . ms это анализатор, который может преобразовывать различные форматы времени в миллисекунды.


Пример:

 // Before:

// !tempmute @person 600000

setTimeout(() => {
  // code...
}, args[1]) 
  
 // After:

// !tempmute @person 1h

setTimeout(() => {
  // code...
}, ms(args[1]))
  

Надеюсь, это каким-то образом полезно.