Javascript TypeError:this.inputMedia.pipe不是函数
我有一个不和谐的机器人。我希望这样,当我说几个短语中的一个时,它将加入发送消息的用户的语音频道,播放随机声音,然后离开。它使用和npm库。这是代码。请注意,在另一个文件server.js中,它需要这个文件,并且不需要Javascript TypeError:this.inputMedia.pipe不是函数,javascript,typeerror,discord,discord.js,Javascript,Typeerror,Discord,Discord.js,我有一个不和谐的机器人。我希望这样,当我说几个短语中的一个时,它将加入发送消息的用户的语音频道,播放随机声音,然后离开。它使用和npm库。这是代码。请注意,在另一个文件server.js中,它需要这个文件,并且不需要client.on('message',randomSound) 然后,在play-url.js中: exports.playUrl = function(voiceChannel, soundUrl, options) { // If messange sender is
client.on('message',randomSound)代码>
然后,在play-url.js中:
exports.playUrl = function(voiceChannel, soundUrl, options) {
// If messange sender is in a voice channel
if (voiceChannel) {
voiceChannel
// Join it
.join()
.then(connection => {
// Play the sound
const sound = connection.playArbitraryInput(soundUrl, options);
sound.on('end', () => {
voiceChannel.leave();
console.log('Done playing');
});
})
.catch(console.error);
}
}
由于某种原因,我得到了这个错误
TypeError: this.inputMedia.pipe is not a function
at FfmpegProcess.connectStream (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism-media/0.0.3/node_modules/prism-media/src/transcoders/ffmpeg/FfmpegProcess.js:73:21)
at new FfmpegProcess (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism-media/0.0.3/node_modules/prism-media/src/transcoders/ffmpeg/FfmpegProcess.js:28:14)
at FfmpegTranscoder.transcode (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism-media/0.0.3/node_modules/prism-media/src/transcoders/ffmpeg/Ffmpeg.js:34:18)
at MediaTranscoder.transcode (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism-media/0.0.3/node_modules/prism-media/src/transcoders/MediaTranscoder.js:27:31)
at Prism.transcode (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism-media/0.0.3/node_modules/prism-media/src/Prism.js:13:28)
at AudioPlayer.playUnknownStream (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/discord.js/11.4.2/node_modules/discord.js/src/client/voice/player/AudioPlayer.js:97:35)
at VoiceConnection.playArbitraryInput (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/discord.js/11.4.2/node_modules/discord.js/src/client/voice/VoiceConnection.js:458:24)
at voiceChannel.join.then.connection (/app/play-url.js:10:36)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
TypeError:this.inputMedia.pipe不是函数
在FfmpegProcess.connectStream(/rbd/pnpm volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism media/0.0.3/node_modules/prism media/src/transcoders/ffmpeg/FfmpegProcess.js:73:21)
在新的FfmpegProcess(/rbd/pnpm volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism media/0.0.3/node_modules/prism media/src/transcoders/ffmpeg/FfmpegProcess.js:28:14)
在FfmpegTranscoder.transcode(/rbd/pnpm volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism media/0.0.3/node_modules/prism media/src/transcoders/ffmpeg/ffmpeg.js:34:18)
在MediaTranscoder.transcode(/rbd/pnpm volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism media/0.0.3/node_modules/prism media/src/transcoders/MediaTranscoder.js:27:31)
在Prism.transcode(/rbd/pnpm volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/Prism media/0.0.3/node_modules/Prism media/src/Prism.js:13:28)
在AudioPlayer.playunnownstream(/rbd/pnpm volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/discord.js/11.4.2/node_modules/discord.js/src/client/voice/player/AudioPlayer.js:97:35)
在VoiceConnection.play任意输入(/rbd/pnpm volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/discord.js/11.4.2/node_modules/discord.js/src/client/voice/VoiceConnection.js:458:24)
在voiceChannel.join.then.connection(/app/play url.js:10:36)
在
在进程中。_tick回调(内部/process/next_tick.js:189:7)
我意识到了这个问题;函数的作用是:输出一个包含所选对象的数组,而不仅仅是对象本身。这是一种奇怪的方法,但我通过改变
playUrl(message.member.voiceChannel,soundUrl);
到
playUrl(message.member.voiceChannel,soundUrl[0]);
你的discord.js版本是什么。您可以通过在我的包.json
中执行console.log(require('discord.js').version)
获得最简单的方法,它是^11.4.2
,在上面的版本中,它还输出11.4.2
。我想最好的修复方法是升级到d.js master(它有一个完整的语音重写,可以修复很多问题),这包括打破改变
TypeError: this.inputMedia.pipe is not a function
at FfmpegProcess.connectStream (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism-media/0.0.3/node_modules/prism-media/src/transcoders/ffmpeg/FfmpegProcess.js:73:21)
at new FfmpegProcess (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism-media/0.0.3/node_modules/prism-media/src/transcoders/ffmpeg/FfmpegProcess.js:28:14)
at FfmpegTranscoder.transcode (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism-media/0.0.3/node_modules/prism-media/src/transcoders/ffmpeg/Ffmpeg.js:34:18)
at MediaTranscoder.transcode (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism-media/0.0.3/node_modules/prism-media/src/transcoders/MediaTranscoder.js:27:31)
at Prism.transcode (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/prism-media/0.0.3/node_modules/prism-media/src/Prism.js:13:28)
at AudioPlayer.playUnknownStream (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/discord.js/11.4.2/node_modules/discord.js/src/client/voice/player/AudioPlayer.js:97:35)
at VoiceConnection.playArbitraryInput (/rbd/pnpm-volume/a60d0461-d164-4ade-92da-e09aca748da0/node_modules/.registry.npmjs.org/discord.js/11.4.2/node_modules/discord.js/src/client/voice/VoiceConnection.js:458:24)
at voiceChannel.join.then.connection (/app/play-url.js:10:36)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)