如何解决Discord.js v12中的TempMute
我想知道如何创建一个临时的静音命令,这意味着当我键入t-mute(用户)(时间)时,将根据我建立的时间来应用角色。事实是我不知道该怎么做:(
解决方法
要在执行操作之前设置超时,可以使用JavaScript的setTimeout()函数。
setTimeout(() => {
//do something
},afterMs)
我将假设您已经设置了用户和时间参数,并且持续时间将以分钟为单位。
let user = args[value];
let duration = parseInt(args[value]);
setTimeout(() => {
//do something
},duration * 60 * 1000)
根据消息处理程序的类型,用消息中的参数值替换value
。
parseInt()
将参数(字符串)转换为数字。例如,指定的持续时间为“ 5”,它将在parseInt()
之后变为5。
假设消息中指定的持续时间为5(分钟),因为setTimeout()
以毫秒为单位的持续时间值,因此我们使用duration * 60 * 1000
将其转换为毫秒。
您应该使用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]))
希望这在某种程度上很有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。