Discord音乐机器人无法正常工作

时间:2018-03-15 18:37:09

标签: bots discord discord.js

当我运行以下脚本("节点musicbot.js"在cmd中)和"!播放ytlink"在discord本身内,bot加入语音通道并在控制台中记录命令和链接。然而,音乐并没有开始播放。我已经安装了ffmpeg,ytdl-core和discord.js。

有人可以帮帮我吗?我不知道哪一部分搞砸了。

const Discord = require("discord.js");
const ytdl = require("ytdl-core");
const config = require("./config.json");
const bot = new Discord.Client();

let queue = [];

function play(connection, message) {
    let audio = ytdl(queue[0], {filter: "audioonly"});
    let dispatcher = connection.playStream(audio);
    dispatcher.on("end", function() {
        queue.shift();
        if (queue[0]) play(connection, message);
        else {
        connection.disconnect();
        message.channel.send("The queue has ended");
        }
    });
}

bot.on("message", function(message) {
    if (message.channel.type === "dm") return;
    if (!message.content.startsWith(config.prefix) || message.author.bot) 
return;

    let arguments = message.content.split(" ");
    let command = arguments[0].toLowerCase();
    arguments.shift();
    console.log(command);
    console.log(arguments);

    if (command == "!play") {
        if (!arguments[0]) {
            message.channel.send("Please provide a YouTube link!");
            message.delete();
            return;
        }
        if (!message.member.voiceChannel) {
            message.channel.send("Please join a Voice Channel first!");
            message.delete();
            return;
        }
        queue.push(arguments[0]);
        message.member.voiceChannel.join()
        .then(connection => {
            play(connection, message);
        });
    }
});

bot.on("ready", function() {
    console.log("Ready");
});

bot.login(config.token); 

1 个答案:

答案 0 :(得分:0)

好的,我有两个解决方案。第一个是我使用的代码块,我可以说它是根据经验工作的。

需要ffmpegopusscriptytdl

function play(connection, message){
    var server = servers[message.guild.id];

    server.dispatcher = connection.playStream(ytdl(server.queue[0], {filter: 
"audioonly"}));

server.queue.shift();

server.dispatcher.on("end", function() {
    if(server.queue[0]) play(connection, message);
    else connection.disconnect();
});
}

我强烈推荐的第二个选项是节点模块,它具有许多难以实现的高级功能,例如:

  • musichelp [command]:显示此插件的命令帮助文本或特定命令的帮助。
  • 播放|:播放来自YouTube的音频。
  • 跳过[编号]:跳过一首歌曲或多首歌曲,跳过[某个数字],
  • queue:显示当前队列。
  • 暂停:暂停播放音乐。
  • resume:恢复音乐播放。
  • 音量:将播放音量调节在1到200之间。
  • 离开:清除歌曲队列并离开频道。
  • clearqueue:清除歌曲队列。
  • 所有者:各种所有者命令/操作。 (W.I.P)

易于安装和使用,here is the node page包含有关安装等的所有信息。