【问题标题】:(discord.js) How to set a time limit on a command?(discord.js) 如何设置命令的时间限制?
【发布时间】:2021-01-12 05:47:34
【问题描述】:

我正在尝试为我的服务器创建一个法官机器人,它将赋予使用命令的人“原告”角色,并赋予他们提到的人“被告”角色。除了可以同时开始多个试验之外,一切都按预期完美运行。就像如果有人使用该命令,它使他们成为原告,第二人成为被告,如果第三人对第四人使用该命令,他们也将成为被告和原告。我想做到这一点,当命令的事件正在播放时,服务器中的其他任何人都无法使用该命令,直到第一次试用结束。我试图为整个服务器赋予“陪审团”角色并使它成为这样,如果有人拥有“陪审团”角色,他们就无法使用该命令,但我永远无法让它发挥作用。我还尝试为命令设置时间限制,但这也根本不起作用。我不知道如何让这个工作,任何建议表示赞赏!谢谢!!!

client.on("message", message => {
   
    const args = message.content.slice(prefix.length).trim().split(/ +/g);
    const command = args.shift().toLowerCase();

    if (command === "sue") {
       let member1 = message.mentions.members.first();
       message.member.roles.add("797738368737345536")
       member1.roles.add("797738235715256331");
       message.guild.members.cache.forEach(member => member.roles.add("797743010346565672"))
       message.channel.send("Court is now in session.")
       client.channels.cache.find(channel => channel.name === 'courtroom').send( + " **All rise.**"); 
       client.channels.cache.find(channel => channel.name === 'courtroom').send("Plaintiff, you have 2 minutes to state your case.");  
       setTimeout(function(){ 
        client.channels.cache.find(channel => channel.name === 'courtroom').send("Thank you Plaintiff. Defendant, you now have 2 minutes to defend yourself."); 
    }, 120000);
       setTimeout(function(){  
        client.channels.cache.find(channel => channel.name === 'courtroom').send("Thank you. The court may be seated as we turn to the jury for their verdict.");   
    }, 240000);

    const Responses = [
        "The Jury hereby finds you.... **GUILTY!** You will be sentanced to 10 minutes in jail.",
        "The Jury hereby finds you.... **NOT GUILTY!** You are free to go. The Jury is dismissed."
    ];

    const Response = Responses[Math.floor(Math.random() * Responses.length)];

    setTimeout(function(){
    client.channels.cache.find(channel => channel.name === 'courtroom').send(Response)
   
    if (Response === "The Jury hereby finds you.... **NOT GUILTY!** You are free to go. The Jury is dismissed." ) {
        message.member.roles.remove("797738368737345536")
        member1.roles.remove("797738235715256331");
        message.guild.members.cache.forEach(member => member.roles.remove("797743010346565672"))
    }

    if (Response === "The Jury hereby finds you.... **GUILTY!** You will be sentanced to 10 minutes in jail.") {
        message.member.roles.remove("797738368737345536")
        member1.roles.add("797738617338069002")
        member1.roles.remove("797738235715256331");
        message.guild.members.cache.forEach(member => member.roles.remove("797743010346565672"))
    }
    }, 250000);

    setTimeout(function(){
        member1.roles.remove("797738617338069002");
    }, 850000);

    }  
    
}); 

【问题讨论】:

    标签: discord discord.js bots


    【解决方案1】:

    您可以创建一个文件,这样当文件存在时,任何人都无法使用该命令。

    const fs = require("fs");
    
    if (command_gets_executed) { // If the command gets executed
    
     if (fs.existsSync("./commandAlreadyUsed")) { // Checking if the file exists
    
      // YOUR CODE - When the command should not be usable
    
     } else {
    
      fs.writeFileSync("./commandAlreadyUsed"); // Creating the file
    
      // YOUR CODE - When nobody else used the command before
    
     }
     
    
    }
    

    如果您希望该命令再次可用,只需使用fs.unlinkSync("./commandAlreadyUsed")

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 2020-07-28
      • 1970-01-01
      • 2020-10-18
      • 2021-06-17
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多