如何让我的 discord.py 机器人在语音频道中播放 mp3? [英] How do I make my discord.py bot play mp3 in voice channel?

查看:105
本文介绍了如何让我的 discord.py 机器人在语音频道中播放 mp3?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 Python 的初学者,最近开始为我和一些朋友制作一个不和谐的机器人.我的想法是输入 !startq 并让机器人加入频道,播放本地存储在bot.py 也在同一个文件夹中.

I'm a beginner in Python and I have recently started making a discord bot for some friends and I. The idea is to type !startq and have the bot join the channel, play an mp3 file that is locally stored in the same folder that the bot.py is in also.

import discord, chalk
from discord.ext import commands
import time
import asyncio

bot = commands.Bot(command_prefix = "!")

@bot.event
async def on_ready():
    print("Bot is ready!")

@bot.command()
async def q5(ctx):
    await ctx.send("@here QUEUE STARTING IN 5 MINUTES")

@bot.command()
async def q3(ctx):
    await ctx.send("@here QUEUE STARTING IN 3 MINUTES")

@bot.command()
async def q1(ctx):
    await ctx.send("@here QUEUE STARTING IN 1 MINUTES")

@bot.command()
async def ping(ctx):
    ping_ = bot.latency
    ping =  round(ping_ * 1000)
    await ctx.send(f"my ping is {ping}ms")

@bot.command()
async def startq(ctx):
    voicechannel = discord.utils.get(ctx.guild.channels, name='queue')
    vc = await voicechannel.connect()
    vc.play(discord.FFmpegPCMAudio("countdown.mp3"), after=lambda e: print('done', e))
    bot.run('TOKEN')

到目前为止,我的机器人可以正常加入频道,但它实际上并没有播放 mp3.我在Unofficial Discord API Discord"和其他一些编程 Discords 中问过无数人,但我还没有得到答案.

So far my bot joins the channel fine, but it doesn't actually play the mp3. I've asked countless people in the "Unofficial Discord API Discord" and a few other programming Discords, but I haven't gotten an answer yet.

推荐答案

我用我的不和谐机器人做了类似的事情,这里有一些示例代码你可以参考.如果您正在播放 mp3 文件,请确保安装 ffmpeg,我在设置机器人时按照此处的说明进行操作 https://github.com/adaptlearning/adapt_authoring/wiki/Installing-FFmpeg

I did something similar with my discord bot, here's some example code you can reference. If you're playing mp3 files make sure to install ffmpeg, I followed the instructions here when I was setting up my bot https://github.com/adaptlearning/adapt_authoring/wiki/Installing-FFmpeg

@client.command(
    name='vuvuzela',
    description='Plays an awful vuvuzela in the voice channel',
    pass_context=True,
)
async def vuvuzela(context):
    # grab the user who sent the command
    user=context.message.author
    voice_channel=user.voice.voice_channel
    channel=None
    # only play music if user is in a voice channel
    if voice_channel!= None:
        # grab user's voice channel
        channel=voice_channel.name
        await client.say('User is in channel: '+ channel)
        # create StreamPlayer
        vc= await client.join_voice_channel(voice_channel)
        player = vc.create_ffmpeg_player('vuvuzela.mp3', after=lambda: print('done'))
        player.start()
        while not player.is_done():
            await asyncio.sleep(1)
        # disconnect after the player has finished
        player.stop()
        await vc.disconnect()
    else:
        await client.say('User is not in a channel.')

这篇关于如何让我的 discord.py 机器人在语音频道中播放 mp3?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆