我知道我的代码看起来像 sh*t 但我是新的 im nodejs ? 我不知道为什么我的代码不能正常工作(机器人加入语音频道,理论上正在播放音乐但是几乎没有) 代码:
while (true)
{
d = new Date();
currtime = d.getHours() * 100 + d.getMinutes();
console.log(currtime);
if (currtime == 1912 && loop == true)
{
loop = false;
console.log("21:37");
const connection = await client.channels.cache.get(VOICECHANNEL).join();
connection.play(LINK, { volume: VOLUME }); // link = url (mp3)
setTimeout(() => { client.channels.cache.get(VOICECHANNEL).leave();},204000); // 204000 = length of the song
}
else
{
sleep(204000);
loop = true;
}
}
答案 0 :(得分:0)
我不完全确定您要完成什么,但我可以看到以下几个问题。
首先,您不会等待 sleep() 函数,因此您的循环将尽可能快地执行一遍又一遍。
其次,在您等待 sleep() 之后,它当前设置为休眠 204 秒,但您正在检查 curtime 是否正好目标时间,而不是大于.您要么需要减少睡眠时间,要么更改 if 语句(或两者都更改)。
我无法调试您的 discord 代码,因为我不知道语法,但这至少应该能让您入门。
const targetTime = 1326;
while (true) {
d = new Date();
currtime = d.getHours() * 100 + d.getMinutes();
console.log(currtime);
if (currtime >= targetTime && currtime < targetTime + 1) {
//const connection = await client.channels.cache.get(VOICECHANNEL).join();
console.log('connected');
//connection.play(LINK, { volume: VOLUME }); // link = url (mp3)
//setTimeout(() => { client.channels.cache.get(VOICECHANNEL).leave(); }, 204000); // 204000 = length of the song
break;
}
else {
console.log('sleep')
await sleep(60000);
loop = true;
}
}
可能也值得研究这样的事情:https://www.npmjs.com/package/node-schedule
针对调度任务进行了优化。