discord.js v12 中的 TempMute

Posted

技术标签:

【中文标题】discord.js v12 中的 TempMute【英文标题】:TempMute In discord.js v12 【发布时间】:2020-12-03 05:48:42 【问题描述】:

我想知道如何创建一个临时静音命令,我的意思是当我输入 t-mute (user) (time) 时,会根据我建立的时间应用一个角色。事实是我不知道该怎么做:(

【问题讨论】:

【参考方案1】:

要在做某事之前设置超时,你可以使用 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 将其转换为毫秒。

【讨论】:

【参考方案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 包msms 是一个可以将各种时间格式转换为毫秒的解析器。


例子:

// Before:

// !tempmute @person 600000

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

// !tempmute @person 1h

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

希望这在某些方面有用。

【讨论】:

以上是关于discord.js v12 中的 TempMute的主要内容,如果未能解决你的问题,请参考以下文章

消息嵌入中的 Discord.js v12 图像

如何检查 discord.js v12 中的第二个参数是不是为空

如何添加 ID 保存在 JSON 文件 discord.js v12 中的角色?

机器人不响应命令(discord.js v12)

discord.js v12 Discord.EvaluatedPermissions :((

如何定位文件 discord.js v12?