Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在给定时间加入Discord语音聊天_Javascript_Node.js_Discord.js - Fatal编程技术网

Javascript 在给定时间加入Discord语音聊天

Javascript 在给定时间加入Discord语音聊天,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我正在编写一个机器人,它在午夜自动进入语音聊天,然后播放一首歌 我试过用这个: // require the discord.js module const Discord = require('discord.js'); // create a new Discord client const { prefix, token } = require('./config.json'); const client = new Discord.Client(); const fs = requi

我正在编写一个机器人,它在午夜自动进入语音聊天,然后播放一首歌

我试过用这个:

 // require the discord.js module
const Discord = require('discord.js');

// create a new Discord client
const { prefix, token } = require('./config.json');
const client = new Discord.Client();
const fs = require('fs');
const broadcast = client.voice.createBroadcast();
// Checks the date
var date = new Date()


// when the client is ready, run this code
// this event will only trigger one time after logging in

client.once('ready', () => {
    console.log('Ready!');
});

client.login(token);

function timeReached(){
    setInterval(function(){ date = new Date(); }, 30000);
    if (date.getHours() === 14 && date.getMinutes() === 8) 
    {
        return true;
    }
    else
    {
        return false;
    }
    }

client.on("ready", () => {
    const channel = client.channels.cache.get("my chat");
    if (!channel) return console.error("The channel does not exist!");
    while (timeReached != true)
    {
        timeReached();
    }
    const conection = channel.connect();
    const dispatcher = connection.play ("audio.mp3");
    setTimeout(function(){
        connection.disconnect();
    }, 5000)    
});
但运行一段时间后,控制台上会显示以下消息:

<--- Last few GCs --->

[13860:00000136C7E96090]    23337 ms: Scavenge 2028.1 (2035.6) -> 2027.6 (2036.4) MB, 9.1 / 0.0 ms  (average mu = 0.142, current mu = 0.062) allocation failure
[13860:00000136C7E96090]    23346 ms: Scavenge 2028.8 (2036.4) -> 2028.3 (2047.1) MB, 6.6 / 0.0 ms  (average mu = 0.142, current mu = 0.062) allocation failure
[13860:00000136C7E96090]    23485 ms: Scavenge 2035.3 (2047.1) -> 2034.5 (2040.1) MB, 10.3 / 0.0 ms  (average mu = 0.142, current mu = 0.062) allocation failure


<--- JS stacktrace --->

==== JS stack trace =========================================

    0: ExitFrame [pc: 00007FF7E62C77DD]
Security context: 0x0261bc4408d1 <JSObject>
    1: incRefCount(aka incRefCount) [0000021BF3E94141] [internal/timers.js:~289] [pc=0000019AF4857628](this=0x0042117804b1 <undefined>)
    2: /* anonymous */ [0000025542A3FFC9] [C:\Users\R2\Desktop\oleo_de_macaco_bot\index.js:~34] [pc=0000019AF485910C](this=0x03aac97c2429 <EventEmitter map = 00000101FF0CA349>)
    3: emit [000003FAB26E3969] [events.js:327...

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
 1: 00007FF7E56B470F napi_wrap+113583
 2: 00007FF7E565F7D6 v8::base::CPU::has_sse+66646
 3: 00007FF7E56605D6 v8::base::CPU::has_sse+70230
 4: 00007FF7E5E742EE v8::Isolate::ReportExternalAllocationLimitReached+94
 5: 00007FF7E5E5C3C1 v8::SharedArrayBuffer::Externalize+833
 6: 00007FF7E5D2890C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1436
 7: 00007FF7E5D33B40 v8::internal::Heap::ProtectUnprotectedMemoryChunks+1312
 8: 00007FF7E5D30664 v8::internal::Heap::PageFlagsAreConsistent+3204
 9: 00007FF7E5D25E63 v8::internal::Heap::CollectGarbage+1283
10: 00007FF7E5D2C6F4 v8::internal::Heap::GlobalSizeOfObjects+212
11: 00007FF7E5D6251B v8::internal::StackGuard::HandleInterrupts+907
12: 00007FF7E5AAD719 v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator=+7737
13: 00007FF7E62C77DD v8::internal::SetupIsolateDelegate::SetupHeap+546637
14: 0000019AF4857628
似乎我的机器人内存不足。我怎样才能为它分配更多内存或解决这个问题


注:这是我的第一个机器人,我对javascript知之甚少。

在代码的底部,我看到了以下while循环:

当时间到达时!=符合事实的 { 达到的时间; } 我不太确定您在这里要做什么,但TimeReach是一个函数,所以这个条件,TimeReach!=true,始终返回true,这意味着将重复调用timereach,直到程序终止。这就是我假设错误来自的地方

尝试更改代码以查看函数返回的值是否为true请注意括号:

while (timeReached() != true)
{
    timeReached();
}

在代码的底部,我看到了以下while循环:

当时间到达时!=符合事实的 { 达到的时间; } 我不太确定您在这里要做什么,但TimeReach是一个函数,所以这个条件,TimeReach!=true,始终返回true,这意味着将重复调用timereach,直到程序终止。这就是我假设错误来自的地方

尝试更改代码以查看函数返回的值是否为true请注意括号:

while (timeReached() != true)
{
    timeReached();
}

我认为TimeReach函数内部创建的间隔导致了巨大的内存泄漏


由于您总是检查while语句中是否达到了日期,因此我认为您应该在小时检查函数setIntervalfunction{date=new date;},30000;只需const date=新日期

我认为TimeReach函数内部创建的间隔导致了巨大的内存泄漏


由于您总是检查while语句中是否达到了日期,因此我认为您应该在小时检查函数setIntervalfunction{date=new date;},30000;只需const date=新日期

这回答了你的问题吗?这回答了你的问题吗?非常感谢。我已经实施了您的更改,但问题仍然存在。中间的几行稍有改动,但错误信息保持不变。你能告诉我你想用timereach函数实现什么吗?那将帮助我解决这个问题。谢谢!我已经实施了您的更改,但问题仍然存在。中间的几行稍有改动,但错误信息保持不变。你能告诉我你想用timereach函数实现什么吗?这将帮助我解决这个问题。我已经改变了这一点,现在它似乎正在发挥作用。只需要调整房间连接代码。无论如何谢谢你@LucasMoura尝试替换您的channel.connect和channel.join;现在问题在于连接。播放'audio.mp3';一点它没有被重新组织为有效函数。@卢卡斯穆拉您应该切换到。thenconnection=>{在这种情况下,在加入通道后立即回调,并确保将join函数下面的所有代码移到新回调中。then@LucasMoura很高兴我能帮上忙:我已经改变了这一点,现在它似乎正在工作。只需要调整房间加入代码。无论如何,谢谢!@LucasMoura尝试替换你的频道。连接with channel.join;现在问题在于连接。播放'audio.mp3';位。它没有被重新组织为有效的函数。@LucasMoura您应该切换到一个。然后连接=>{在这种情况下,在加入通道后立即回调,并确保将join函数下面的所有代码移到新回调中。then@LucasMoura很高兴我能帮上忙: