Музыкальный дискорд бот на пайтоне играет минуту а потом выключается
Играет музыку минуту а потом выключается и выходит, ошибок никаких не выдает.
Вот мой код:
import discord
from discord.ext import commands
from youtube_dl import YoutubeDL
from config import TOKEN, ydl_opts, ffmpeg_opts
from requests import get
import time
client = commands.Bot(command_prefix="=")
music_list = []
CTX = None
@client.event
async def on_ready():
print('bot ready')
print('-----------------------------------------------------------')
@client.command()
async def p(ctx, *, arg: str):
global url, duration, title
global CTX
CTX = ctx
if arg.startswith('https://www.youtube.com/'):
url = arg
with YoutubeDL(ydl_opts) as ydl:
info = ydl.extract_info(url, download=False)
URL = info['formats'][0]['url']
else:
with YoutubeDL(ydl_opts) as ydl:
try:
get(arg)
except:
video = ydl.extract_info(f"ytsearch:{arg}", download=False)['entries'][0]
else:
video = ydl.extract_info(arg, download=False)
title = video['title']
URL = video['url']
duration = video['duration']
user_channel = str(ctx.message.author.voice.channel)
if not user_channel:
return
print('-----------------------------------------------------------')
print(user_channel)
print(ctx.message.author)
print(URL)
print(title)
print(f'Длительность: {duration}сек')
print('-----------------------------------------------------------')
voice_channel = discord.utils.get(ctx.guild.voice_channels, name=user_channel)
voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
if voice and voice != voice_channel:
print('Уже подключен')
else:
await voice_channel.connect()
voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
#await ctx.send(f"**Сейчас играет:** \n>>> ```{title}``` ")
#voice.play(discord.FFmpegPCMAudio(executable="ffmpeg.exe", source=URL, **ffmpeg_opts))
trek = {
'title': title,
'url': URL,
'duration': duration,
}
music_list.append(trek)
@client.command()
async def pl(ctx):
while True:
if music_list:
trek_now = music_list[0]
voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
voice.play(discord.FFmpegPCMAudio(executable="ffmpeg.exe", source=trek_now['url'], **ffmpeg_opts))
await ctx.send(f"**Сейчас играет:** \n>>> ```{trek_now['title']}``` ")
time.sleep(trek_now['duration'])
music_list.pop(0)
if not music_list:
break