[英]show time left on cooldown
我希望顯示冷卻時間剩余的時間,但我不確定是否可以使用我目前擁有的格式來完成。 是否可以? 或者有更好的方法來使用冷卻時間嗎? 我刪掉了圍繞這個的大部分代碼,因為它不相關。
let cooldown = new Set();
if(msgObject.content.startsWith("-eat")) {
let amount = Math.floor(Math.random() * 2500) + 1;
let Channel = msgObject.channel.id
if(Channel != `623195917083738136` && Channel != `623195981919289344` ){//bot test
msgObject.channel.send('Cannot use command here, ' + msgObject.author)
.then(msg => {
(msg as Discord.Message).delete(20000)
.catch(console.error);
})
return;
}
if(cooldown.has(msgObject.author.id)){
msgObject.channel.send(`You have to wait 3 hours to use this command again!`)
.then(msg => {
(msg as Discord.Message).delete(20000)
.catch(console.error);
})
return;
}
if(msgObject.content.startsWith("-eat")){
cooldown.add(msgObject.author.id)
}
setTimeout(() => {
cooldown.delete(msgObject.author.id)
}, cdseconds * 1000);
{let embed = new Discord.RichEmbed()
.setAuthor(`${msgObject.author.tag}`, msgObject.author.displayAvatarURL)
.setDescription(`${msgObject.author}, ${(eat[index1])}${amount} DinoBucks`)
.setColor("RANDOM");
msgObject.channel.send(embed)
.then(msg => {
(msg as Discord.Message).delete(20000)
.catch(console.error);
})
}
}
}
這對於您當前的設置是不可能的。 但是,您可以使用類似於Discord.js 指南中的內容:
// a collection of user ids to when (the timestamp) they used the command
const timestamps = new Discord.Collection<string, number>();
if (msgObject.content.startsWith("-eat")) {
const now = Date.now();
const cooldownAmount = cdseconds * 1000;
if (timestamps.has(msgObject.author.id)) {
const expirationTime = timestamps.get(msgObject.author.id) + cooldownAmount;
if (now < expirationTime) {
const timeLeft = (expirationTime - now) / 1000;
return msgObject.reply(`You have to wait ${timeLeft.toFixed(1)} seconds to use this command again!`)
}
}
// for v11:
// const embed = new Discord.RichEmbed()
const embed = new Discord.MessageEmbed()
.setAuthor(`${msgObject.author.tag}`, msgObject.author.displayAvatarURL)
// rest of command...
timestamps.set(msgObject.author.id, now);
setTimeout(() => timestamps.delete(msgObject.author.id), cooldownAmount);
}
針對 Discord.js v13 更新。
使用您的冷卻定義格式,這是不可能的。 我建議您為此使用discord.colletion
,有一個很好的示例實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.