discord.js 不播放音频文件
Posted
技术标签:
【中文标题】discord.js 不播放音频文件【英文标题】:discord.js not playing audio file 【发布时间】:2020-02-11 03:30:36 【问题描述】:我正在尝试播放音频文件,但由于某种原因它没有播放任何内容,它在机器人连接到语音通道后立即触发 end
事件而不是 start
事件。
client.on('message', message =>
if(message.content.startsWith('!play'))
if(!message.member.voiceChannel) return message.channel.send('connect to voice channel first');
message.member.voiceChannel.join()
.then(connection =>
console.log("Joined voice channel!");
const dispatcher = connection.playFile(require("path").join(__dirname, './myfile.mp3'));
dispatcher.on('start', () => //not working
dispatcher.setVolume(0.70);
console.log("Playing");
);
dispatcher.on('error', (err) => console.log(err)); //no errors
dispatcher.on('end', end => //working fine
console.log("Finished");
console.log("End: " + end);
message.member.voiceChannel.leave()
);
);
);
【问题讨论】:
【参考方案1】:只想提一下,neoney 的回答对我来说有效,但它在 connection.playFile 上抛出了一个错误,最终对我有用的是:
const dispatcher = connection.play(require("path").join(__dirname, './myfile.mp3'));
请注意,您还可以在括号中使用 (__dirname, '../myFolderName/myfile.mp3') 以跳出当前文件夹并从另一个命名文件夹中向上一个目录播放.
有关完整设置的更多详细信息,CodeLyon 提供了一个不错的视频/频道: https://www.youtube.com/watch?v=q0lsD7U0JSI&t=917s
【讨论】:
【参考方案2】:我从node-modules
中删除了ffmpeg-binaries
,并使用sudo apt
安装了ffmpeg
,现在它工作正常。问题是,我安装了这两个库。
【讨论】:
【参考方案3】:如文档中所述:https://discord.js.org/#/docs/main/stable/class/VoiceConnection?scrollTo=playFile 文件的路径必须是绝对路径。
解决这个问题:
可以使用模块path
(无需下载)和全局__dirname获取绝对路径。
const dispatcher = connection.playFile(require("path").join(__dirname, './myfile.mp3'));
【讨论】:
仍然无法正常工作,顺便说一句,我也尝试使用来自 github 的 discord-bot 但这也不起作用。 你安装了ffmpeg和node-opus或opusscript吗? 我猜你可以去 Discord.js 官方 discord 寻求帮助。以上是关于discord.js 不播放音频文件的主要内容,如果未能解决你的问题,请参考以下文章