Дискорд бот не работает как надо
Создаю простого бота, который должен по команде !play заходить в голосовой канал и проигрывать случайный трек из директории "music". Но есть проблема в строке vc = await voice_channel.connect(), как мне кажется. Потому что на команду он реагирует и заходит в голосовой канал, но дальше программа не идет вообще никак. Т.е. принт не принтит, музыка не играет и так далее. Вот сам код:
import discord
from discord.ext import commands
intents = discord.Intents().all()
bot = commands.Bot(command_prefix='!', intents=intents)
# Проверка на готовность бота
@bot.event
async def on_ready():
print(f'Logged in as {bot.user.name}')
# Команда для проигрывания музыки
@bot.command(name='play')
async def play(ctx):
voice_channel = ctx.author.voice.channel
vc = await voice_channel.connect()
print('Connected')
# Выбор случайного файла из директории
music_files = os.listdir('music')
random_song = os.path.join('music', random.choice(music_files))
# Проигрывание аудиофайла
vc.play(discord.FFmpegPCMAudio(random_song), after=lambda e: print('Error:', e) if e else None)
await ctx.send(f'Now playing: {random_song}')
# Ожидание окончания трека\n
while vc.is_playing():
await asyncio.sleep(1)
# Отключение от голосового канала
await vc.disconnect()
await ctx.send(f'Finished playing: {random_song}')
bot.run('token')