【问题标题】:Discordbot doesn't play music with ytdl-coreDiscordbot 不使用 ytdl-core 播放音乐
【发布时间】:2018-07-27 22:55:49
【问题描述】:

我在 Discord 中输入命令播放音乐,机器人加入,但几秒钟后从语音频道断开连接,没有播放音乐。几天前它工作得很好,但现在它没有,我在代码中找不到错误。我已经安装了 ffmpeg 和 opusscript,所以这不会是错误的。我希望有人可以帮助我:

const Discord = require('discord.js');
const ytdl = require('ytdl-core');
const bot = new Discord.Client();
const prefix = "$";
const token = "";

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();
    });
}

var servers = {};

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

bot.on("message", function(message) {
    if(message.author.equals(bot.user)) return;
    if(!message.content.startsWith(prefix)) return;

    var args = message.content.substring(prefix.length).split(" ");

switch(args[0].toLowerCase()){
    case "play":
        if(!args[1]){
            message.channel.send("Please add a link");
            return;
        }
        if(!message.member.voiceChannel){
            message.channel.send("You have to be in a Voice Channel");
            return;
        }
        if(!servers[message.guild.id]) servers[message.guild.id] = {
            queue: []
        };
        var server = servers[message.guild.id];

        server.queue.push(args[1]);

        if(!message.guild.voiceConnection) message.member.voiceChannel.join().then(function(connection){
            play(connection, message);
        });
        break;
    default:
        message.channel.send("Unknown Command");
        break;
}

});

bot.login(token);

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    Re-watch the video 并确保您正确复制了他的代码,如果您已经进入项目文件夹中的终端,请输入以下内容:

    npm install

    这将安装所有缺少的依赖项。 如果您没有安装节点,请执行此操作(只需快速 google 搜索即可)

    如果它仍然不起作用,我不知道如何修复它,但考虑到你已经在使用别人的代码,here is another option 它远远优于 Aeirety 音乐机器人。它具有以下功能:

    • 播放 |:播放来自 YouTube 的音频。
    • skip [number]:跳过一首或多首带有 skip [some number] 的歌曲,
    • 队列:显示当前队列。
    • 暂停:暂停音乐播放。
    • resume:继续播放音乐。
    • 音量:在 1 到 200 之间调整播放音量。
    • leave:清除歌曲队列并离开频道。
    • clearqueue:清除歌曲队列。

    安装也很简单,看一看再考虑一下。

    【讨论】:

    • 我尝试了 Musicbot 插件,现在 Bot 再次播放音乐。非常感谢您的回复:)
    【解决方案2】:

    我知道这是一个老问题,但是对于将来遇到这种令人不安的不幸的人来说,您所要做的就是使用npm install --save ytdl-core 重新安装 ytdl-core 模块。是的,就是这么简单和愚蠢......

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2021-05-05
      • 2021-12-06
      • 1970-01-01
      相关资源
      最近更新 更多