gpt4 book ai didi

node.js - Discord.js 音乐机器人 : TypeError: this. inputMedia.pipe 不是函数

转载 作者:行者123 更新时间:2023-12-04 23:13:53 25 4
gpt4 key购买 nike

我正在使用 Discord.js 编写音乐 Discord 机器人。该机器人使用 ytdl-core、node-opus,并且我在我的操作系统(Ubuntu 19.04)上安装了 ffmpeg。当我尝试让机器人加入语音 channel 并开始播放 YouTube URL 时,它会引发以下错误:

TypeError: this.inputMedia.pipe is not a function
at FfmpegProcess.connectStream (/home/ivan/.../node_modules/discord.js/node_modules/prism-media/src/transcoders/ffmpeg/FfmpegProcess.js:73:21)
at new FfmpegProcess (/home/ivan/.../node_modules/discord.js/node_modules/prism-media/src/transcoders/ffmpeg/FfmpegProcess.js:28:14)
at FfmpegTranscoder.transcode (/home/ivan/.../node_modules/discord.js/node_modules/prism-media/src/transcoders/ffmpeg/Ffmpeg.js:34:18)
at MediaTranscoder.transcode (/home/ivan/.../node_modules/discord.js/node_modules/prism-media/src/transcoders/MediaTranscoder.js:27:31)
at Prism.transcode (/home/ivan/.../node_modules/discord.js/node_modules/prism-media/src/Prism.js:13:28)
at AudioPlayer.playUnknownStream (/home/ivan/.../node_modules/discord.js/src/client/voice/player/AudioPlayer.js:97:35)
at VoiceConnection.playStream (/home/ivan/.../node_modules/discord.js/src/client/voice/VoiceConnection.js:478:24)
at voiceChannel.join.then.connection (/home/ivan/.../commands/play.js:32:47)
at process._tickCallback (internal/process/next_tick.js:68:7)

这是我的代码:
const ytdl = require("ytdl-core");

exports.run = (client, message, args, config) => {
return new Promise((resolve, reject) => {
if (args.length !== 1) {
message.channel.send("Play command takes 1 YouTube link.");
reject("Wrong number of arguments");
return;
}
const voiceChannel = message.member.voiceChannel;
if(!voiceChannel) {
message.channel.send("You need to connect to a voice channel first");
reject("Not connected to voice channel");
return;
}
const perms = voiceChannel.permissionsFor(message.client.user);
if (!perms.has("CONNECT")) {
message.channel.send("You need to add the 'connect' permission for this bot");
reject("NO CONNECT PERMISSION");
return;
}
if (!perms.has("SPEAK")) {
message.channel.send("You need to add the 'speak' permission for this bot");
reject("NO SPEAK PERMISSION");
return;
}
const streamOptions = { seek: 0, volume: 1, passes: 2 };
voiceChannel.join()
.then(connection => {
const stream = ytdl(args[0], {filter: 'audioonly'});
const dispatcher = connection.playStream(ytdl, streamOptions);
dispatcher.on("end", reason => {
console.log("reason: " + reason);
voiceChannel.leave();
})
dispatcher.on("error", err => {
console.log(err);
})
})
.catch(err => console.log(err));
});
}

我尝试重新安装 ffmpeg、node 和 npm、discord.js 和 node-opus。我安装了最新版本的 Discord.js,以及 ffmpeg 版本 4.1.3-0ubuntu1。有人有什么建议吗?

谢谢。

最佳答案

发现了问题,它在这些行中:

const stream = ytdl(args[0], {filter: 'audioonly'});
const dispatcher = connection.playStream(ytdl, streamOptions);

正确的代码是
const stream = ytdl(args[0], {filter: 'audioonly'});
const dispatcher = connection.playStream(stream, streamOptions);

编辑:纠正 Steam 流

关于node.js - Discord.js 音乐机器人 : TypeError: this. inputMedia.pipe 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56494100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com