首页 > 解决方案 > 如何使一个人的命令最大使用 discord.js

问题描述

我想发出一个每人每天最多使用两次的命令

这是我的代码:

module.exports = {
  name: 'pmention',
  description: 'mention private',
  execute(message, args) {
    if(message.member.roles.cache.has('776430878359814194') || message.member.permissions.has('ADMINSTRATOR')){
      message.delete();
      message.channel.send('<@&776941870667792395>')
    }else{
      message.channel.send(':x: **You do not have permission to do that.**')
    }
  }
}

标签: discord.js

解决方案


您可以使用 aSet来执行此操作,但是如果机器人崩溃或您将其关闭,它不会将用户保留在集合中,因为您可能需要将它们放入数据库或更永久的东西中。

这是一个例子:

let cooldown = new Set();

if(cooldown.has(message.author.id)) {
    message.channel.send("You can only use this command twice a day.");
} else {
    // Your code here

    cooldown.add(message.author.id);
    setTimeout(() => {
        talkedRecently.delete(msg.author.id);
    }, 43200000);
}

43200000是以毫秒为单位的 12 小时。一天两次相当于每十二小时一次,但是如果您希望用户能够每天两次调用它,但一个接一个(相隔几秒钟),那么您可能应该考虑使用数据库,例如 SQLite或 MongoDB,然后设置一个作业以每天一次清除他们的条目。


推荐阅读