javascript - 当我尝试播放 Music Discord Bot 时,它不播放音乐
问题描述
当我尝试播放我的 Music Discord Bot 时,它不播放音乐。它使用 ytdl-core 和 ffmpeg 我的代码是:
const Discord = require('discord.js');
const bot = new Discord.Client
const ytdl = require("ytdl-core")
const token = 'API TOKEN'
const PREFIX = '?';
var version = '1.2';
var servers = {};
bot.on('ready', () =>{
console.log('This bot is online!' + version);
})
bot.on('message', message => {
let args = message.content.substring(PREFIX.length).split(" ");
switch(args[0]){
case 'play':
function play(connection, message){
var server = servers[message.guild.id];
server.dispatcher = connection.play(ytdl(server.queue[0], {filter: "audioonly"}))
server.queue.shift();
server.dispatcher.on("end", function(){
if(server.queue[0]){
play(connection, message);
}else {
connection.disconnect();
}
});
}
if(!args[1]){
message.channel.send("You need to provide a link!")
return;
}
if(!message.member.voice.channel){
message.channel.send("You must be in a Voice Channel to play the bot!")
return;
}
if(!servers[message.guild.id]) servers[message.guild.id] = {
queue: []
}
var server = servers[message.guild.id];
server.queue.push(args[1]);
if(!message.guild.voice) message.member.voice.channel.join().then(function(connection){
play(connection, message);
})
break;
}
});
bot.login(token);
每当我尝试播放歌曲时,都会发生此错误:
(节点:5180)UnhandledPromiseRejectionWarning:错误:未找到 FFmpeg/avconv!在 Function.getInfo (C:\Users\picar\Desktop\DiscordMusicBot\node_modules\prism-media\src\core\FFmpeg.js:130:11) 在 Function.create (C:\Users\picar\Desktop\DiscordMusicBot\ node_modules\prism-media\src\core\FFmpeg.js:143:38) 在新的 FFmpeg (C:\Users\picar\Desktop\DiscordMusicBot\node_modules\prism-media\src\core\FFmpeg.js:44:27 ) 在 AudioPlayer.playUnknown (C:\Users\picar\Desktop\DiscordMusicBot\node_modules\discord.js\src\client\voice\player\BasePlayer.js:47:20) 在 VoiceConnection.play (C:\Users\picar \Desktop\DiscordMusicBot\node_modules\discord.js\src\client\voice\util\PlayInterface.js:71:28)在播放(C:\Users\picar\Desktop\DiscordMusicBot\index.js:29:48)在C:\Users\picar\Desktop\DiscordMusicBot\index.js:66:17 在 processTicksAndRejections (internal/process/task_queues.js: 97:5) (node:5180) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志
--unhandled-rejections=strict
(见https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 ID:1)(节点:5180)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程
请帮忙。
解决方案
你安装了 FFmpeg 吗?还是 ffmpeg-static ?
尝试这样做npm i ffmpeg ffmpeg-static
,它应该更新所有内容,如果它改变任何内容,请告诉我们!
也尝试安装npm i @discordjs/opus
,因为它需要在 Discord 中播放音频:)
推荐阅读
- python - 如何用python绘制一个平行于x轴和z轴的平面?
- python - 根据列表过滤文件夹中的特定文件
- mysql - 根据条件获取总数
- angular - 未调用 spyOn 函数
- junit - Hamcrest:转储当前类型和值
- .htaccess - 使用 htaccess 和 GeoIP 阻止特殊地址或 URL 的国家/地区
- delphi - mORMot 响应端口 80 而不是 IIS 上的 HTTP 请求
- django - 在 post_save django 之后将用户实例保存到另一个模型
- node.js - 使用 node.js 和 npm ftp 将文件上传到 ftp(来自 GoDaddy 的 ftp)
- javascript - Why isn't the element not interactable when the option's value is existing on the select?