Discord · 指南

如何制作 Discord 音乐机器人

更新于 October 10, 2026 2 分钟阅读

本页内容
  1. 首先:Discord 的加密语音(DAVE)
  2. 播放音频的两种方式:Lavalink 或 FFmpeg
  3. 仍在维护的 Lavalink 客户端库
  4. FFmpeg 方式,几行代码搞定
  5. 音乐机器人可以播放什么
  6. 托管音乐机器人
  7. 常见问题

音乐机器人是一种加入语音频道并播放音频的 Discord 机器人。机器人部分——命令、播放队列、“正在播放”消息——就是普通的机器人代码。难点在于音频:获取曲目、对其编码,并流畅无卡顿地推流到语音频道。

本指南介绍处理音频的两种方式、哪些库在 Discord 2026 年语音变更后仍然可用,以及音乐机器人可以播放和不可以播放的内容。如果你从未做过机器人,请先阅读如何制作 Discord 机器人。

首先:Discord 的加密语音(DAVE)

自 2026 年 3 月 1 日起,Discord 只允许通过名为 DAVE 的协议进行端到端加密的语音通话。基于不支持该协议的库构建的机器人将完全无法加入语音频道。这就是许多旧的音乐机器人教程和代码仓库失效的原因。

开始之前,请确认你的技术栈足够新:

库支持 DAVE 的起始版本
discord.py2.7.0,以 discord.py[voice] 安装
@discordjs/voice0.19,需要 Node.js 22.12 或更高版本
Lavalink 服务器4.2.0
discord-player7.2.0

播放音频的两种方式:Lavalink 或 FFmpeg

Lavalink机器人内置 FFmpeg
工作原理由独立的音频服务器推流音乐,机器人向它发送命令机器人自己用 FFmpeg 解码并推流音频
机器人需要一个 Lavalink 客户端库在机器人旁安装 FFmpeg 和 Opus
可扩展到同时服务很多服务器;一个 Lavalink 可供多个机器人使用少数几个服务器,之后机器人的 CPU 就会成为瓶颈
适合任何你预计会发展壮大的机器人学习,或只用于一个服务器的机器人

大多数公开的音乐机器人都使用 Lavalink。FFmpeg 入门更简单,因为只需运行一个程序。

FFmpeg 方式,几行代码搞定

要验证语音功能,请播放一个你拥有版权的文件。在 Python 中,安装语音扩展,并确保系统中有 ffmpeg:

pip install "discord.py[voice]"

然后在斜杠命令中加入调用者所在的频道并播放本地文件:

channel = interaction.user.voice.channel
voice = await channel.connect()
voice.play(discord.FFmpegPCMAudio("song.mp3"))
await interaction.response.send_message("Playing.")

在 JavaScript 中,对应的是 @discordjs/voice 配合 @discordjs/opus 和 FFmpeg。真正的机器人还会加入播放队列、跳过和停止命令,并在频道无人时自动离开。

音乐机器人可以播放什么

这是大多数音乐机器人惹上麻烦的地方,所以在动手之前务必弄清楚:

  • YouTube 的条款不允许未经许可下载或转播其内容,也不允许绕过其保护措施。一些大型音乐机器人正是因此被关停。
  • Discord 的社区准则禁止分享侵犯任何人知识产权的内容,机器人的所有者要对机器人的行为负责。
  • 更安全的来源:你拥有或已获得授权的音乐、免版税和 Creative Commons 曲库、允许转播的网络电台,以及成员上传且有权分享的文件。

Lavalink 及其插件在技术上可以从许多网站播放;你是否被允许这么做是另一个问题,需要由你自己来回答。

托管音乐机器人

音乐机器人需要保持在线,并在推流时维持稳定的连接,而连接 Wi-Fi 的家用电脑很难长期做到这一点。在 HytHost Discord 机器人托管上:

  • 机器人运行在你下单时选择的 Node.js、Python、Java、Go、C# 或 Bun 运行时上。
  • Lavalink 是一个独立的运行时。它作为单独的服务器运行:为机器人订购一个方案,再订购一个使用 Lavalink 运行时的方案;或者在拥有多个机器人槽位的方案上,请我们把其中一个转为 Lavalink。
  • 将机器人的 Lavalink 客户端指向 Lavalink 服务器的地址、端口和密码,这些信息显示在其面板中。

如何让机器人本身保持在线、自动重启并安全存放令牌,请参阅如何 24/7 托管 Discord 机器人。

在 HytHost Discord 机器人托管上运行机器人及其 Lavalink 服务器——支持 Node.js、Python、Java、Lavalink 等,€0.89/月起。

查看机器人托管方案
常见问题

常见问题

很可能是 Discord 的加密语音导致的。自 2026 年 3 月 1 日起,只有支持 DAVE 协议的客户端才能加入语音通话。请升级到 discord.py 2.7、@discordjs/voice 0.19 或 Lavalink 4.2 及更高版本,并使用最新的 Lavalink 客户端。

不需要。小型机器人可以直接用 FFmpeg 推流。当机器人同时在多个服务器播放时,Lavalink 就很值得使用,因为它能把音频处理工作从机器人身上卸下。

技术上有些工具仍然可以,但 YouTube 的条款不允许未经许可下载或转播其内容,而且这些工具经常失效。播放你拥有或已获授权的音乐才是安全的选择。

使用 discord.js 时,选择 lavalink-client 或 Shoukaku 等 Lavalink 客户端;使用 discord.py 时,选择 Wavelink 或 lavalink.py。请挑选在 2026 年有发布版本的库,以确保它支持 Discord 的加密语音。

机器人本身很轻量,耗资源的是音频处理。使用 Lavalink 时,小型机器人可给 Lavalink 服务器大约 1 GB(我们的建议),机器人则按不播放音乐时的需求分配即可。

让你的音乐机器人上线

HytHost Discord 机器人托管可运行你的机器人和 Lavalink 服务器,并提供 MySQL 数据库和备份——€0.89/月起。

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

这篇指南对你有帮助吗?