我正在制造一个不和谐的机器人,我正在尝试创建一个计时器,使其每秒将消息编辑为时间+ 1秒,就像真实时钟一样(例如0:00)。我是这个菜鸟。这是我的脚本:
const Discord = require("discord.js");
exports.run = async(bot, message, args) => {
let timerMessage = await message.channel.send('0');
for (i = 0, 10000000000) {
setTimeout(function() {
timerMessage.edit(timerMessage + 1);
}, 1000);
}
}
module.exports.help = {
name: "timer"
}
我遇到一个错误,它说:“解析错误:意外令牌” 如果您能解决我的问题,我将非常感激,谢谢!
(顺便说一句,我正在Google Chrome的Glitch中使用它)
答案 0 :(得分:0)
在setTimeout函数之后,您似乎缺少右括号。我对您的工作并不完全熟悉,但是我会尝试这样的事情:
const Discord = require("discord.js");
exports.run = async (bot, message, args) => {
let timerMessage = await message.channel.send('0');
for (i = 0, 10000000000) {
setTimeout(function()) {
timerMessage.edit(timerMessage + 1);
}, 1000);
}
}
module.exports.help = {
name: "timer";
}
尽管这应该(也许)代替代码中缺少的括号,但似乎还有许多其他问题。例如,您的for循环没有多大意义。通常,for循环看起来像这样(在Java中重复一定次数):
for (int i = 0; i < 10; i++) {
System.out.println(i);
} // will print numbers 0-9, repeat 10 times
带有setTimeout位的整个代码块似乎都被弄乱了。。。这将有助于更多地了解您要执行的操作/在代码中添加一些注释。
如果您想学习编码,我建议您提供一些更基础的知识或一些教程。 CodingTrain在youtube上有很棒的编码视频,无论您使用哪种语言,您都会学到很多东西。希望这对您有帮助...
答案 1 :(得分:0)
它表示存在意外令牌)
,因为您这样编写循环:
for (i = 0, 10000000000) {...}
您忘记添加第三个参数(通常为i++
)。另外,如果您希望它运行10000000000次,则应编写一个比较:
for (let i = 0; i < 10000000000; i++) {...}
我看到了您要实现的目标,但是我会使用setInterval()
而不是setTimeout()
,以一种更简单的方式来实现。
setInterval(() => {
timerMessage.edit(timerMessage + 1);
}, 1000);