Код: Выделить всё
from discord.ext import commands
from discord import FFmpegPCMAudio
from asyncio import run
FFMPEG_OPTIONS = {'before_options': '-avioflags direct', 'options': '-vn -sn -dn -movflags +faststart -b:a 49k'}
class Play(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.run = False
self.voice = ""
async def play_song(self, ctx ,data=()):
if data != ():
data = "+".join(data)
print(data)
else:
print("Passes Automatically")
await ctx.send("auto pass")
await ctx.send("playing")
source = FFmpegPCMAudio("https://www2.iis.fraunhofer.de/AAC/ChID-BLITS-EBU-Narration.mp4", **FFMPEG_OPTIONS)
await self.voice.play(source, after=lambda x=None: run(self.play_song(ctx)))
@commands.Cog.listener()
async def on_ready(self):
print("Play is working")
@commands.command(pass_context=True)
async def play(self, ctx, *initial_user_input):
if not self.run:
if ctx.author.voice:
channel = ctx.message.author.voice.channel
self.voice = await channel.connect()
self.run = True
await self.play_song(ctx, initial_user_input)
else:
await ctx.send("Channel Not Found")
else:
await self.play_song(ctx, initial_user_input)
async def setup(bot):
await bot.add_cog(Play(bot))
Я пробовал вызвать функцию воспроизведения из лямбда-функции (та же проблема). Я пробовал передать идентификатор канала вместо контекста, но ничего не помогло. Я запустил его без ожидания, и в этот момент он просто говорит, что его никогда не ждали. Я также протестировал его с помощью асинхронного генератора на случай, если это был asyncio.run, но та же проблема. Помощь оценена по достоинству.
Подробнее здесь: https://stackoverflow.com/questions/790 ... d-from-voi