将队列和播放与discord.py音乐机器人结合起来,可以通过以下步骤实现:
import discord
from discord.ext import commands
import youtube_dl
import ffmpeg
bot = commands.Bot(command_prefix='!')
queue = []
def play_music(ctx):
if not queue:
return
voice_channel = ctx.author.voice.channel
voice_client = discord.utils.get(bot.voice_clients, guild=ctx.guild)
if voice_client is None:
voice_client = await voice_channel.connect()
else:
await voice_client.move_to(voice_channel)
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
info = ydl.extract_info(queue[0], download=False)
url2 = info['formats'][0]['url']
voice_client.play(discord.FFmpegPCMAudio(url2, **ffmpeg_options), after=lambda e: play_music(ctx))
queue.pop(0)
@bot.command()
async def play(ctx, url):
queue.append(url)
if len(queue) == 1:
play_music(ctx)
bot.run('YOUR_BOT_TOKEN')
通过以上步骤,你可以将队列和播放与discord.py音乐机器人结合起来。当使用!play
命令添加音乐链接时,该链接将被添加到音乐队列中,并开始播放音乐。如果队列中已经有音乐在播放,则新添加的音乐将排队等待播放。
领取专属 10元无门槛券
手把手带您无忧上云