我为!corona命令设置了一个等待时间,它可以正常工作,但是当用户错误地输入国家缩写时,我想删除一个等待时间。我所有的代码如下。
简而言之,当输入错误的国家/地区命令时,例如“!corona US”应查询一个新的命令而无需等待时间。
实际上这很好,但是两个人可以同时启动此命令。输入命令后,我希望每个人都有一个等待时间。这只会给使用它的成员一个等待时间
const Discord = require("discord.js");
const fetch = require("node-fetch");
const hereTimeOut = new Set();
exports.run = async (bot, message, args) => {
if (hereTimeOut.has(message.author.id)) {
const waitsetTimeOut = new Discord.RichEmbed()
waitsetTimeOut.setColor(0x00AE86)
waitsetTimeOut.setTimestamp()
waitsetTimeOut.setAuthor(message.author.username, message.author.avatarURL)
waitsetTimeOut.setTitle("[wait a while]")
waitsetTimeOut.setDescription('please wait 1 minute')
return message.channel.sendEmbed(waitsetTimeOut);
}else {
let country = args.slice(0).join(' ');
if(!country){
fetch("https://covid19.mathdro.id/api/").then(res => res.json()).then(json => {
const embed = new Discord.RichEmbed();
embed.addField("**= Total Number of Cases =**",`**`+ json.confirmed['value'] +` person**`)
embed.addField("**= Number of Healing Cases =**",`**`+ json.recovered['value'] +` person**`)
embed.addField("**= Number of Cases Losing Life =**",`**`+ json.deaths['value'] +` person**`)
embed.setColor(15962634)
embed.setTitle('Worldwide COVID-19 Statistics')
message.channel.send({embed: embed});
});
}else{
fetch(`https://covid19.mathdro.id/api/countries/${country}`).then(res => res.json()).then(json => {
const embed = new Discord.RichEmbed();
embed.addField("**= Total Number of Cases =**",`**`+ json.confirmed['value'] +` person**`)
embed.addField("**= Number of Healing Cases =**",`**`+ json.recovered['value'] +` person**`)
embed.addField("**= Number of Cases Losing Life =**",`**`+ json.deaths['value'] +` person**`)
embed.setColor(15962634)
embed.setTitle(`COVID-19 Statistics (${country})`)
message.channel.send({embed: embed});
}).catch(() => {
message.reply("I couldn't find the country you are looking for, be careful not to use Turkish letters when writing the country. You can also write country abbreviations (ex: TR, USA, AZ)");
});
}
hereTimeOut.add(message.author.id);
setTimeout(() => {
// Removes the user from the set after a minute
hereTimeOut.delete(message.author.id);
}, 60000);
}
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: ['corona'],
permLevel: 0
};
exports.help = {
name: "corona",
description: "covid19",
usage: "coronavirus"
};
使用错误的国家/地区命令时收到的部分错误;
.catch(() => {
message.reply("I couldn't find the country you are looking for, be careful not to use Turkish letters when writing the country. You can also write country abbreviations (ex: TR, USA, AZ)");
});
答案 0 :(得分:1)
您可以使用变量来存储命令是否可用,然后可以像这样编辑它:
// Setup
let isAvailable = true,
cooldownMS = 5000; // in ms, this is 5 seconds
// When you're running the command:
if (isAvailable) {
isAvailable = false
setTimeout(() => {
isAvailable = true
}, cooldownMS)
// Run your command ...
} else {
// The command is still cooling down, send a message to the user to let them know
}