【问题标题】:Discord Bot Update: How to play audio?Discord Bot 更新:如何播放音频?
【发布时间】:2021-10-29 09:52:07
【问题描述】:

所以最近新版本的不和谐机器人 API 与交互和所有这些一起出现在 Node 上。而且,他们还改变了一些其他的东西,不知道为什么。但他们做到了。

当我遇到无法正常工作的问题时,我正试图尝试音频播放代码以了解其工作原理,并可能更新我的一些旧机器人。我一直在关注https://discordjs.guide/voice/voice-connections.html#life-cyclehttps://discordjs.guide/voice/audio-player.html#life-cycle 上的文档,但它们真的不起作用。

只是测试代码如下所示:

const Discord = require('discord.js');
const {token} = require("./config.json");
const { join } = require("path");
const {joinVoiceChannel, createAudioPlayer, createAudioResource, AudioPlayerStatus, VoiceConnectionStatus, SubscriptionStatus, StreamType  } = require("@discordjs/voice");
 
 
client.on("ready", async () => {
    const connection = joinVoiceChannel({
        channelId: channel.id,
        guildId: channel.guild.id,
        adapterCreator: channel.guild.voiceAdapterCreator,
    });
  

    const audioPlayer = createAudioPlayer();

    const resource = createAudioResource(createReadStream(join(__dirname, "plswork.mp3")));
    
    
    const subscription = connection.subscribe(audioPlayer);
    
    audioPlayer.play(resource);

    audioPlayer.on(AudioPlayerStatus.Playing, () => {
        console.log("currently playing");
        console.log("resource started:", resource.started);
    });
    
    audioPlayer.on('error', error => {
        console.error(`Error: ${error.message} with resource ${error.resource.metadata.title}`);
    });

    audioPlayer.on(AudioPlayerStatus.AutoPaused, () => {
        console.log("done?");
        
    });


我创建了一个连接、audioPlayer 和资源,但在订阅到 audioPlayer 的连接并播放资源后,没有播放音频,也没有引发错误(在 AudioPlayer.on("error"...) 中)并且立即调用 AutoPaused 状态。

通过记录资源,我看到 resource.playbackDuration 为 0,但我不知道如何解决这个问题,因为我在 Internet 上找不到太多关于此主题的信息。

【问题讨论】:

  • 能否提供控制台日志?
  • 另外,你是requireAudioPlayerStatus吗?例如:const { VoiceConnectionStatus, AudioPlayerStatus } = require('@discordjs/voice');
  • 我确实需要它,是的。你想要什么日志?我会着手处理所有内容
  • 我不是指 json,我指的是您在运行机器人时收到的控制台输出。需要明确的是:您从console.log("currently playing") 获得输出的位置。
  • 还有,请尝试avoid using pastebin 获取这么少的代码

标签: node.js discord discord.js


【解决方案1】:

通过查看您的代码可以看出,您不需要来自@discordjs/voice 的正确json,您至少需要AudioPlayerStatuscreateAudioPlayer。另外,通过您的resource,我认为您正在尝试创建AudioResource,因此您也需要它。你需要类似的东西:

const { AudioPlayerStatus, createAudioPlayer, AudioResource, StreamType } = require('@discordjs/voice');
/* */
const audioPlayer = createAudioPlayer();
/* */
audioPlayer.play(resource);

audioPlayer.on(AudioPlayerStatus.Playing, () => {
        // Do whatever you need to do when playing
});
/* */

最后,我建议您查找life cycle of an AudioPlayercreation of an AudioPlayer。此外,请确保正确创建您的resourcehere,如果您需要它,您会找到AudioResource 文档。

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 2018-05-17
    • 2017-03-05
    • 1970-01-01
    • 2020-11-29
    • 2021-11-07
    • 2020-11-26
    • 2019-09-06
    • 2020-06-25
    相关资源
    最近更新 更多