Discord Bot 更新:如何播放音频?
Posted
技术标签:
【中文标题】Discord Bot 更新:如何播放音频?【英文标题】:Discord Bot Update: How to play audio? 【发布时间】:2021-10-29 09:52:07 【问题描述】:所以最近新版本的不和谐机器人 API 与交互和所有这些一起出现在 Node 上。而且,他们还改变了一些其他的东西,不知道为什么。但他们做到了。
当我遇到无法正常工作的问题时,我正试图尝试音频播放代码以了解其工作原理,并可能更新我的一些旧机器人。我一直在关注https://discordjs.guide/voice/voice-connections.html#life-cycle 和https://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 上找不到太多关于此主题的信息。
【问题讨论】:
能否提供控制台日志? 另外,你是require
AudioPlayerStatus
吗?例如:const VoiceConnectionStatus, AudioPlayerStatus = require('@discordjs/voice');
我确实需要它,是的。你想要什么日志?我会着手处理所有内容
我不是指 json,我指的是您在运行机器人时收到的控制台输出。需要明确的是:您从console.log("currently playing")
获得输出的位置。
还有,请尝试avoid using pastebin 获取这么少的代码
【参考方案1】:
通过查看您的代码可以看出,您不需要来自@discordjs/voice
的正确json,您至少需要AudioPlayerStatus
和createAudioPlayer
。另外,通过您的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 AudioPlayer 和creation of an AudioPlayer。此外,请确保正确创建您的resource
、here,如果您需要它,您会找到AudioResource
文档。
【讨论】:
以上是关于Discord Bot 更新:如何播放音频?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Discord.py Cogs 使 Discord Bot 加入语音频道并在成员加入频道时播放音频文件
Discord Bot 不播放音频 discord.js v13
使用 python Discord bot 播放 Youtube 音频