You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Discord.py配置Opus 实现机器人指令播放音频功能

Discord机器人-play指令音频播放功能实现

核心功能逻辑:用户发送-play指令时,机器人自动加入用户所在语音频道,播放指定本地音频文件。

现有代码问题及修正版本

你提供的原始代码存在缩进错误、路径格式错误、播放未完成就直接断开连接的问题,修正后可正常运行的代码如下:

import asyncio
import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='-', intents=discord.Intents.all())

@bot.command(name='play')
async def play(ctx):
    # 校验用户是否在语音频道
    if not ctx.author.voice:
        await ctx.send("请先加入语音频道后再使用播放指令")
        return
    voice_channel = ctx.author.voice.channel
    # 连接到用户所在的语音频道
    vc = await voice_channel.connect()
    # 替换为你自己的音频文件路径,Windows系统路径使用正斜杠避免转义问题
    source = await discord.FFmpegOpusAudio.from_probe("C:/Desktop/Welcome.m4a")
    # 开始播放音频
    vc.play(source)
    # 等待音频播放完成后再断开连接
    while vc.is_playing():
        await asyncio.sleep(1)
    await vc.disconnect()

bot.run("你的机器人Token")

配置前置要求

  • 必须安装FFmpeg工具,并将FFmpeg的bin文件夹路径添加到系统环境变量中,discord.FFmpegOpusAudio依赖FFmpeg实现音频转码为Opus格式
  • 开启机器人的语音相关权限,在Discord开发者后台给机器人勾选Connect、Speak权限
  • 确保你使用的discord.py版本为v2.0及以上,旧版本的音频播放接口存在差异

常见问题排查

  • 机器人加入频道但没有声音:优先检查音频文件路径是否正确,其次确认FFmpeg是否安装配置成功
  • 机器人无法加入频道:检查机器人是否有对应语音频道的连接权限,是否开启了必要的网关Intents

内容的提问来源于stack exchange,提问作者Hatsune Miku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:39:03