TypeError:this.inputMedia.pipe 不是函数
Posted
技术标签:
【中文标题】TypeError:this.inputMedia.pipe 不是函数【英文标题】:TypeError: this.inputMedia.pipe is not a function 【发布时间】:2019-08-07 18:32:58 【问题描述】:我有一个 Discord 机器人。我想要这样,当我说出几个短语中的一个时,它会加入发送消息语音通道的用户,播放随机声音,然后离开。它使用 discord.js 和 pick-random npm 库。这是代码。请注意,在另一个文件 server.js 中,它需要此文件并执行 client.on('message', randomSound);
const pickRandom = require('pick-random');
const playUrl = require('./play-url');
exports.randomSound = function(message)
const content = message.content;
if (content.toLowerCase() === "phrase 2" ||
content.toLowerCase() === "phrase 1")
var soundUrl = pickRandom(
['sound url 1',
'sound url 2',
'sound url 3',
'sound url 4'
]);
playUrl(message.member.voiceChannel, soundUrl);
然后,在 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)
【问题讨论】:
你的 discord.js 版本是什么。您可以通过console.log(require('discord.js').version)
获得最简单的
在我的package.json
中,它是^11.4.2
,在你上面的版本中,它也输出11.4.2
。
我想最好的解决办法是升级到 d.js master(它有一个完整的语音重写,修复了很多问题),包括重大更改
【参考方案1】:
我意识到了这个问题; pickRandom()
函数输出一个包含所选对象的数组,而不仅仅是对象本身。一种奇怪的方式来做到这一点,但我通过改变来解决它
playUrl(message.member.voiceChannel, soundUrl);
到
playUrl(message.member.voiceChannel, soundUrl[0]);
【讨论】:
以上是关于TypeError:this.inputMedia.pipe 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: 'float' 类型的对象没有 len() & TypeError: 'float' 对象不可迭代
TypeError:“TypeError:函数名称不是 HTMLButtonElement.onclick (/:2:54) 处的函数”
反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map
Django TypeError - TypeError: issubclass() arg 1 必须是一个类
pyspark:TypeError:'float'对象不可迭代
Python 3.8 TypeError: can't concat str to bytes - TypeError: a bytes-like object is required, not 's