Discord.js 语音在 10 个连续文件后停止播放音频

时间:2021-02-22 19:30:53

标签: node.js ffmpeg discord.js opus

我正在尝试执行在运行命令时播放单个 MP3 文件的简单任务。该文件存储在本地,并且我的计算机上安装了 FFmpeg。下面的代码是我的命令文件的一部分:

const Discord = require("discord.js");
const fs = require('fs');
const { Client, RichEmbed } = require('discord.js');
const config = require("../config.json");

let playing = undefined;
let connection = undefined;

module.exports.run = async (client, message, args, config) => {


  if (playing) playing.end()
  if (connection == undefined) await message.member.voice.channel.join().then((c) => {
    connection = c;
  })
  playing = connection.play('./sounds/sound.mp3')

}

(请注意,此代码被严格缩小以找出问题)

当我运行该命令前 9 次时,它运行良好 - 文件已播放,如果文件已在播放,则切断。我还想指出,该文件大约有 2 分钟长。但是,一旦我播放文件恰好第 10 次,机器人就会完全停止播放音频 - 只要所有 10 次都重叠(意味着我不会让音频结束)。

更令人困惑的是,如果在机器人停止播放音频后传递错误,它会以与标准 Discord.js 错误完全不同的格式出现。例如,这段代码不会测试用户是否在语音通道中,所以如果我故意在不处于语音通道的情况下通过启动命令来使机器人崩溃(运行命令 10 次后),错误看起来像这样:

abort(RangeError: offset is out of bounds). Build with -s ASSERTIONS=1 for more info.
(Use `electron --trace-uncaught ...` to show where the exception was thrown)

(前面是一堆未格式化的代码)然而,这并不一致。它似乎只有在让文件完全运行后才会出现。

该问题仅在整个机器人重新启动时自行解决。我们将不胜感激。

0 个答案:

没有答案
相关问题