首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >discord.js音乐bot dispatcher.on("finish")逻辑多次运行,从队列中删除歌曲,然后断开bot

discord.js音乐bot dispatcher.on("finish")逻辑多次运行,从队列中删除歌曲,然后断开bot
EN

Stack Overflow用户
提问于 2021-09-22 00:17:23
回答 1查看 475关注 0票数 2

我设置了一个不和谐的机器人,用于接收youtube的url并在当前的语音频道播放它们,启动bot命令的用户在其中。bot可以创建一个由多个youtube链接组成的队列,但是当队列中的第一首歌播放完后,下面的代码将给我一个问题,在这个问题上,它运行逻辑的次数与队列中的歌曲一样多。例如,如果队列中有6首歌曲,则server.dispatcher.on(finish)逻辑在一行中执行6次,逐个删除队列中的歌曲,直到队列中没有歌曲,然后bot与语音通道断开连接。

代码语言:javascript
运行
复制
function playF(connectionF, message){
        console.log("starting the play function ");
        var server = servers[message.guild.id];

        if(!playingMusic){
            console.log("not playing music, running this logic ");
            server.dispatcher = connectionF.play(ytdl(server.queue[0], {filter: "audioonly"}));
            server.queue.shift();
            playingMusic = true;
        }

        
        server.dispatcher.on("finish", () => {
            console.log("running the finish logic "); 
            console.log("heres your queue length in finish " + server.queue.length); 
            playingMusic = false;
            if(server.queue[0]){
                playF(connectionF, message);
            } else {
                connectionF.disconnect();
            }
        });
        
    }
    ```
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-22 00:59:45

因此,我发现需要进行一些重构,以便将.on("finish")添加到第8行的server.dispatcher中。

代码语言:javascript
运行
复制
function playF(connectionF, message){
        console.log("starting the play function ");
        var server = servers[message.guild.id];

        if(!playingMusic){
            playingMusic = true;
            console.log("not playing music, running this logic ");
            server.dispatcher = connectionF.play(ytdl(server.queue[0], {filter: "audioonly"})).on("finish", () =>{
                playingMusic = false;
                if(server.queue[0]){
                    playF(connectionF, message);
                } else {
                     connectionF.disconnect();
                }
            });

            server.queue.shift();
            
        }
        
    }
    ```
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69276849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档