Discord JS 在特定时间加入语音频道

时间:2021-07-02 17:49:58

标签: javascript node.js discord script

我知道我的代码看起来像 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;
 }
}

1 个答案:

答案 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

针对调度任务进行了优化。