Discord机器人work命令time.minutes/seconds未定义问题修复求助
修复
time.minutes和time.seconds未定义报错 - Discord.js Work命令冷却问题 嘿,我知道你为啥遇到这个报错了——你用的ms()函数根本不会返回带minutes和seconds属性的对象!它默认返回的是格式化好的字符串(比如"10m 0s"),所以直接访问time.minutes肯定会报未定义的错。下面给你两种简单的修复方案:
方案1:直接使用ms返回的字符串(最简洁)
既然ms()已经帮你把时间格式化成了易读的字符串,直接用它就行,不需要手动拆分分钟和秒:
if (work !== null && timeout - (Date.now() - work) > 0) { let time = ms(timeout - (Date.now() - work)); // 直接使用ms生成的格式化字符串 message.channel.send(`You already worked, try again in **${time}**!`) }
这样会直接输出类似You already worked, try again in **10m 0s**!的消息,完全符合你的需求。
方案2:手动计算分钟和秒(自定义格式)
如果你一定要手动拆分出分钟和秒,可以自己计算剩余时间,不依赖ms的对象(因为它本来就没这个功能):
if (work !== null && timeout - (Date.now() - work) > 0) { let timeLeft = timeout - (Date.now() - work); // 计算分钟数:1分钟=60000毫秒 let minutes = Math.floor(timeLeft / 60000); // 计算剩余秒数:取模后除以1000转成秒 let seconds = Math.floor((timeLeft % 60000) / 1000); message.channel.send(`You already worked, try again in **${minutes}m ${seconds}s**!`) }
这种方法完全自己控制时间计算,不会有依赖库的问题。
修复后的完整代码(用方案1的版本)
const Discord = require("discord.js"); const db = require('quick.db') const ms = require("ms"); module.exports = class economy { constructor(){ this.name = 'work', this.alias = ['work'], this.usage = 's!work', this.description = 'Work to get paid', this.runnable = 'true' } async run(bot, message, args) { let timeout = 600000 let amount = Math.floor(Math.random() * 25) + 15; var jobs = ["Miner", "Bartender", "Cashier", "Cleaner", "Drugdealer", "Assistant", "Nurse", "Cleaner", "Teacher", "Accountants", "Security Guard", "Sheriff", "Lawyer", "Dishwasher", "Electrician", "Singer", "Dancer"]; let work = await db.fetch(`work_${message.author.id}`); if (work !== null && timeout - (Date.now() - work) > 0) { let time = ms(timeout - (Date.now() - work)); message.channel.send(`You already worked, try again in **${time}**!`) } else { var job = jobs[Math.floor(Math.random() * jobs.length)]; message.channel.send(`You worked as a ${job} and earned ${amount} <:shart:646075915293687810>`) db.add(`money_${message.author.id}`, amount) db.set(`work_${message.author.id}`, Date.now()) } } }
内容的提问来源于stack exchange,提问作者Kieran Julien
相关产品推荐
相关产品推荐

