我正在用jTable1.getSelectionModel().setSelectionInterval(i, i);
jTable1.scrollRectToVisible(new Rectangle(jTable1.getCellRect(i, 0, true)));
做一个机器人,想知道如何添加静音功能。我希望该机器人在一段时间内为您提供预定义的静音角色,然后将其删除。
答案 0 :(得分:1)
要做一个好的mute
命令需要做一些事情:
在执行命令时,还应考虑许多其他功能,例如权限限制,确认消息等。但是,这些只是基本知识。
首先,您需要获得Muted
角色。
// get the role by id:
const mutedRole = message.guild.roles.cache.get('<Muted Role ID>');
// or, if you can't get the id:
const mutedRole = message.guild.roles.cache.find(
(role) => role.name === 'Muted'
);
// if there is no `Muted` role, send an error
if (!mutedRole)
return message.channel.send('There is no Muted role on this server');
然后,您必须获取要静音的用户的GuildMember
对象。
// assuming you want the command to mention the target, for example: `!mute @user`
const target = message.mentions.members.first();
现在,您可以为该用户提供Muted
角色。
target.roles.add(mutedRole);
要在一段时间后取消该角色,您需要一个延迟功能。最好的功能是setTimeout
。在target.roles.add()
行之后:
setTimeout(() => {
target.roles.remove(mutedRole); // remove the role
}, <time>)
获得指定的时间量将很棘手。 setTimeout()
仅接受毫秒作为延迟值。您可以:
ms
时间参数来触发命令ms
的时间值(例如秒,小时等)触发命令。然后,将给定时间解析为脚本中的ms
ms
的方便的npm
软件包。您将可以使用10s
,12h
,2d
等值。如果选择第一个选项,则命令已基本完成!只需将上面代码段中的<time>
替换为args[1]
,一切都会正常。
如果您选择了第二个选项,则需要做更多的事情。如果您选择以秒为单位静音,请将<time>
替换为args[1] * 1000
。如果您选择小时,则将其替换为args[1] * 60000
等。
如果选择了第三个选项,则可以使用ms
包来解析时间,只需将<time>
替换为ms(args[1])