当前位置: 首页 > 知识库问答 >
问题:

不和谐音乐机器人不工作

闽经纬
2023-03-14

当我在discord内部运行以下脚本(“cmd中的node musicbot.js”)和“!play ytlink”时,bot加入语音通道,并在控制台中记录命令和链接。然而,音乐并没有开始播放。我安装了ffmpeg、ytdl核心和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个答案

司马腾
2023-03-14

好的,我有两个解决方案。第一个是我使用过的一段代码,我可以说它是根据经验编写的。

它需要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[命令]:显示此插件命令的帮助文本,或特定命令的帮助。
  • play|:从YouTube播放音频。
  • skip[number]:跳过一首歌曲或多首歌曲,并跳过[某个数字],
  • 队列:显示当前队列。
  • 暂停:暂停音乐播放。
  • 恢复:恢复音乐播放。
  • 音量:在1到200之间调整播放音量。
  • 离开:清除歌曲队列并离开频道。
  • Clear队列:清除歌曲队列。
  • 所有者:各种所有者命令/操作。(W. I. P)

安装和开始很容易,这里是节点页面,包含有关安装等的所有信息。

 类似资料:
  • 我已经在不和谐机器人上工作了几天。 起初只是简单的命令等,但慢慢地,我也致力于音乐机器人的主题。 我也使用YouTube数据API来实现这一点,到目前为止一切都正常。不过,我现在想合并一个Youtube搜索命令或将其构建到另一个(Play命令)中。我已经有半个搜索命令了。 到目前为止你可以做$play(歌名) 将选择找到的第一个轨迹。 然而,我希望能够看到前10个搜索结果,然后在它们之间进行选择。

  • 我正在努力让我的机器人进入语音频道,我已经阅读了这里的很多帖子,但没有一篇能够解决我的问题,我正在尝试让我的机器人复制yt视频的声音,但它甚至没有加入,我不知道该怎么办,下面是代码:

  • 我希望我的不和谐机器人加入语音频道。但是我遇到了一个问题,每当我想让它加入风投时,什么都不会发生——甚至没有错误。我尝试过SO/Git的其他解决方案,但没有一个适合我(下面有一个)。 编辑:解决了!问题是:没有不和。已安装py[语音]模块。解决方案:

  • 我正在开发一个名为Amadeus的discord机器人。Amadeus在收到命令时播放音乐。。。好他将。现在,当我还在为他工作时,他只演奏一首歌。当他连接到语音频道并完美地播放歌曲时,他不会在歌曲结束后离开语音频道。不知为什么,我想它从来没有检测到这首歌的结束?感谢您的帮助

  • 我已经创建了一个bot,它现在在我的discord服务器中,使用下面的代码。 我的问题是,一旦我在与bot不和谐的聊天中,我如何调用命令让bot运行代码,为用户列表收集csv?我不确定如何调用机器人,一旦它在聊天/服务器中获得列表。

  • 我使用repl。它让我的不和机器人。我使用Python并遵循本教程: https://www.youtube.com/watch?v=SPTfmiYiuok 这是我的代码: