[fix]: Fix queues and embed messages

This commit is contained in:
Sweetbread 2023-05-07 01:15:06 +03:00
parent 5c064b78ea
commit ad6e872aa2

View File

@ -32,14 +32,7 @@ class Music(commands.Cog, name="Музыка"):
audio_source = discord.FFmpegPCMAudio(URL, **FFMPEG_OPTIONS) audio_source = discord.FFmpegPCMAudio(URL, **FFMPEG_OPTIONS)
inter.guild.voice_client.play(audio_source, after=lambda error: self.next_(inter, error)) inter.guild.voice_client.play(audio_source, after=lambda error: self.next_(inter, error))
try: asyncio.run_coroutine_threadsafe(self.send_embed_(inter, info, url), self.bot.loop)
asyncio.create_task(self.send_embed_(inter, info, url))
except:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.set_debug(True)
loop.run_until_complete(self.send_embed_(inter, info, url))
loop.stop()
async def send_embed_(self, inter, info, url): async def send_embed_(self, inter, info, url):
embed = discord.Embed ( embed = discord.Embed (
@ -52,18 +45,18 @@ class Music(commands.Cog, name="Музыка"):
url=info["uploader_url"] url=info["uploader_url"]
) )
embed.set_thumbnail( url=info["thumbnail"] ) embed.set_thumbnail( url=info["thumbnail"] )
await inter.response.send_message(embed=embed) try:
await inter.response.send_message(embed=embed)
except:
await inter.channel.send(embed=embed)
async def end_of_query_(self, inter): async def end_of_query_(self, inter):
await inter.response.send_message("В очереди больше не осталось песен") await inter.response.send_message("В очереди больше не осталось песен")
@app_commands.command(description="Plays music from popular platforms") @app_commands.command(description="Plays music from popular platforms")
@app_commands.describe( @app_commands.describe(url="URL from Youtube/RuTube and other platforms")
url="URL from Youtube/RuTube and other platforms", async def play(self, inter, url: str):
query="Add music to query" logger.debug(asyncio.get_running_loop())
)
async def play(self, inter, url: str):
channel = inter.user.voice.channel channel = inter.user.voice.channel
if inter.user.voice is None: if inter.user.voice is None:
@ -84,19 +77,18 @@ class Music(commands.Cog, name="Музыка"):
if str(channel.id) not in self.query.keys(): if str(channel.id) not in self.query.keys():
self.query[str(channel.id)] = { self.query[str(channel.id)] = {
"requester_id": inter.user.id, "requester_id": inter.user.id,
"music_pos": -1, "music_pos": 0,
"query": [], "query": [],
"context": inter "context": inter
} }
self.query[str(channel.id)]["query"].append(url)
if client.is_playing() or client.is_paused(): if client.is_playing() or client.is_paused():
if query: logger.debug("\n".join(self.query[str(channel.id)]['query']))
self.query[str(channel.id)]["query"].append(url) await inter.response.send_message("Добавлена новая песня в очередь")
logger.debug("\n".join(self.query[str(channel.id)]['query'])) return
await inter.response.send_message("Добавлена новая песня в очередь") else:
return inter.guild.voice_client.stop()
else:
inter.guild.voice_client.stop()
self.play_(inter, url) self.play_(inter, url)
@ -125,18 +117,16 @@ class Music(commands.Cog, name="Музыка"):
self.next_(inter) self.next_(inter)
def next_(self, inter, error=None): def next_(self, inter, error=None):
logger.debug("\n....".join(["Query:"]+self.query[str(inter.user.voice.channel.id)]['query']))
inter.guild.voice_client.stop() inter.guild.voice_client.stop()
query = self.query[str(inter.user.voice.channel.id)] query = self.query[str(inter.user.voice.channel.id)]
query["music_pos"] = query["music_pos"] + 1 query["music_pos"] = query["music_pos"] + 1
logger.debug((len(query["query"]), query["music_pos"])) logger.debug((len(query["query"]), query["music_pos"]))
if len(query["query"]) < query["music_pos"]: if len(query["query"]) == query["music_pos"]:
try: asyncio.run_coroutine_threadsafe(self.end_of_query_(inter), self.bot.loop)
asyncio.run(self.end_of_query_(inter))
# asyncio.create_task(self.end_of_query_(inter))
except:
pass
return
logger.debug([query["music_pos"]])
url = query["query"][query["music_pos"]] url = query["query"][query["music_pos"]]
self.play_(inter, url) self.play_(inter, url)