feat: sanityzacja tytułów w Discordzie oraz linki i embedy dla powiadomień z panelu web
This commit is contained in:
2 files changed
+31
-10
No files matched your search
@@ -141,7 +141,7 @@ class MusicBot(commands.Cog):
|
|||||||
self.get_queue(guild_id).append(player)
|
self.get_queue(guild_id).append(player)
|
||||||
await self.trigger_state_change()
|
await self.trigger_state_change()
|
||||||
await interaction.followup.send(
|
await interaction.followup.send(
|
||||||
f"Dodano do kolejki: {player.title}",
|
f"Dodano do kolejki: {discord.utils.escape_markdown(player.title)}",
|
||||||
ephemeral=False
|
ephemeral=False
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -155,7 +155,7 @@ class MusicBot(commands.Cog):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
await interaction.followup.send(
|
await interaction.followup.send(
|
||||||
f"Teraz odtwarzane: {player.title}",
|
f"Teraz odtwarzane: {discord.utils.escape_markdown(player.title)}",
|
||||||
ephemeral=False
|
ephemeral=False
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -186,7 +186,7 @@ class MusicBot(commands.Cog):
|
|||||||
self.bot.loop
|
self.bot.loop
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
await self.send_to_last_channel(guild_id, f"Teraz odtwarzane (zapętlone): {player.title}")
|
await self.send_to_last_channel(guild_id, f"Teraz odtwarzane (zapętlone): {discord.utils.escape_markdown(player.title)}")
|
||||||
return
|
return
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error repeating song: {e}")
|
print(f"Error repeating song: {e}")
|
||||||
@@ -203,17 +203,17 @@ class MusicBot(commands.Cog):
|
|||||||
self.bot.loop
|
self.bot.loop
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
await self.send_to_last_channel(guild_id, f"Teraz odtwarzane: {next_player.title}")
|
await self.send_to_last_channel(guild_id, f"Teraz odtwarzane: {discord.utils.escape_markdown(next_player.title)}")
|
||||||
else:
|
else:
|
||||||
self.set_current(guild_id, None)
|
self.set_current(guild_id, None)
|
||||||
await self.trigger_state_change()
|
await self.trigger_state_change()
|
||||||
await self.send_to_last_channel(guild_id, "Kolejka jest pusta.")
|
await self.send_to_last_channel(guild_id, "Kolejka jest pusta.")
|
||||||
|
|
||||||
async def send_to_last_channel(self, guild_id: int, text: str):
|
async def send_to_last_channel(self, guild_id: int, text: str = None, embed: discord.Embed = None):
|
||||||
channel = self.get_notification_channel(guild_id)
|
channel = self.get_notification_channel(guild_id)
|
||||||
if channel:
|
if channel:
|
||||||
try:
|
try:
|
||||||
await channel.send(text)
|
await channel.send(content=text if text else None, embed=embed)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Failed to send message: {e}")
|
print(f"Failed to send message: {e}")
|
||||||
|
|
||||||
@@ -229,7 +229,7 @@ class MusicBot(commands.Cog):
|
|||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
queue_list = "\n".join([f"{i + 1}. {item.title}" for i, item in enumerate(queue)])
|
queue_list = "\n".join([f"{i + 1}. {discord.utils.escape_markdown(item.title)}" for i, item in enumerate(queue)])
|
||||||
await interaction.response.send_message(
|
await interaction.response.send_message(
|
||||||
f"Aktualna kolejka:\n{queue_list}",
|
f"Aktualna kolejka:\n{queue_list}",
|
||||||
ephemeral=False
|
ephemeral=False
|
||||||
@@ -331,7 +331,7 @@ class MusicBot(commands.Cog):
|
|||||||
current = self.get_current(guild_id)
|
current = self.get_current(guild_id)
|
||||||
if current:
|
if current:
|
||||||
await interaction.response.send_message(
|
await interaction.response.send_message(
|
||||||
f"Teraz odtwarzane: {current.title}",
|
f"Teraz odtwarzane: {discord.utils.escape_markdown(current.title)}",
|
||||||
ephemeral=False
|
ephemeral=False
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -201,9 +201,23 @@ async def api_play(req: PlayRequest):
|
|||||||
try:
|
try:
|
||||||
player = await YTDLSource.from_url(req.query, loop=bot.loop, stream=True)
|
player = await YTDLSource.from_url(req.query, loop=bot.loop, stream=True)
|
||||||
|
|
||||||
|
url = player.data.get('webpage_url') or player.url
|
||||||
|
title_clean = discord.utils.escape_markdown(player.title or "Nieznany tytuł")
|
||||||
|
is_http = url and str(url).startswith("http")
|
||||||
|
|
||||||
if voice_client.is_playing() or voice_client.is_paused():
|
if voice_client.is_playing() or voice_client.is_paused():
|
||||||
music_cog.get_queue(guild_id).append(player)
|
music_cog.get_queue(guild_id).append(player)
|
||||||
await music_cog.send_to_last_channel(guild_id, f"Dodano do kolejki (Web): {player.title}")
|
embed = discord.Embed(
|
||||||
|
title=f"🎵 {title_clean}",
|
||||||
|
url=url if is_http else None,
|
||||||
|
description=f"[Kliknij tutaj, aby otworzyć link]({url})" if is_http else "Plik lokalny / brak linku",
|
||||||
|
color=discord.Color.blue()
|
||||||
|
)
|
||||||
|
embed.set_author(name="Dodano do kolejki z panelu Web", icon_url="https://cdn-icons-png.flaticon.com/512/3844/3844724.png")
|
||||||
|
if player.duration:
|
||||||
|
mins, secs = divmod(int(player.duration), 60)
|
||||||
|
embed.add_field(name="Czas trwania", value=f"{mins}:{secs:02d}", inline=True)
|
||||||
|
await music_cog.send_to_last_channel(guild_id, embed=embed)
|
||||||
await broadcast_status()
|
await broadcast_status()
|
||||||
return {"status": "queued", "title": player.title}
|
return {"status": "queued", "title": player.title}
|
||||||
else:
|
else:
|
||||||
@@ -215,7 +229,14 @@ async def api_play(req: PlayRequest):
|
|||||||
bot.loop
|
bot.loop
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
await music_cog.send_to_last_channel(guild_id, f"Teraz odtwarzane (Web): {player.title}")
|
embed = discord.Embed(
|
||||||
|
title=f"▶️ {title_clean}",
|
||||||
|
url=url if is_http else None,
|
||||||
|
description=f"[Kliknij tutaj, aby otworzyć link]({url})" if is_http else "Plik lokalny / brak linku",
|
||||||
|
color=discord.Color.green()
|
||||||
|
)
|
||||||
|
embed.set_author(name="Teraz odtwarzane (z panelu Web)", icon_url="https://cdn-icons-png.flaticon.com/512/3844/3844724.png")
|
||||||
|
await music_cog.send_to_last_channel(guild_id, embed=embed)
|
||||||
await broadcast_status()
|
await broadcast_status()
|
||||||
return {"status": "playing", "title": player.title}
|
return {"status": "playing", "title": player.title}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Reference in new issue
Block a user