Formatting, README and other friends
Backend / Lint i formatowanie (pull_request) Successful in 3s
Backend / Testy i kontrakt API (pull_request) Failing after 2m19s
Backend / Testowy build obrazu (pull_request) Skipped

This commit is contained in:
mmacierzanka committed 2026-08-21 13:41:38 +02:00
1 parent b9152c41be
commit d3a5058fde
12 files changed
+66 -41

No files matched your search

+2 -2
View File
@@ -12,8 +12,6 @@ from fastapi.staticfiles import StaticFiles
from zyrarbot.audio.media_probe import MediaProbe
from zyrarbot.audio.track_factory import TrackFactory
from zyrarbot.ui.bot.client import MusicBot
from zyrarbot.ui.bot.guild_resolver import GuildResolver
from zyrarbot.music.music_player import MusicPlayer
from zyrarbot.music.notification_channel_resolver import NotificationChannelResolver
from zyrarbot.music.track_embed_factory import TrackEmbedFactory
@@ -23,6 +21,8 @@ from zyrarbot.storage.history_repository import HistoryRepository
from zyrarbot.storage.json_file_store import JsonFileStore
from zyrarbot.storage.uploads_repository import UploadsRepository
from zyrarbot.ui.api.factory import mount_api
from zyrarbot.ui.bot.client import MusicBot
from zyrarbot.ui.bot.guild_resolver import GuildResolver
logger = logging.getLogger(__name__)
+1 -1
View File
@@ -1 +1 @@
"""Komunikacja użytkownika z odtwarzaczem"""
"""Komunikacja użytkownika z odtwarzaczem"""
+1 -1
View File
@@ -4,7 +4,6 @@ import discord
from fastapi import HTTPException, Request, WebSocket
from zyrarbot.audio.track_factory import TrackFactory
from zyrarbot.ui.bot.guild_resolver import GuildResolver
from zyrarbot.music.music_player import MusicPlayer
from zyrarbot.settings import Settings
from zyrarbot.storage.guild_config_repository import GuildConfigRepository
@@ -12,6 +11,7 @@ from zyrarbot.storage.uploads_repository import UploadsRepository
from zyrarbot.ui.api.connection_manager import ConnectionManager
from zyrarbot.ui.api.status_broadcaster import StatusBroadcaster
from zyrarbot.ui.api.status_service import StatusService
from zyrarbot.ui.bot.guild_resolver import GuildResolver
NO_GUILD_DETAIL = "Bot has no active server context"
+1 -1
View File
@@ -6,7 +6,6 @@ from typing import Any
import discord
from fastapi import APIRouter, Depends, HTTPException
from zyrarbot.ui.bot.guild_resolver import GuildResolver
from zyrarbot.music.music_player import MusicPlayer
from zyrarbot.settings import Settings
from zyrarbot.storage.guild_config_repository import GuildConfigRepository
@@ -20,6 +19,7 @@ from zyrarbot.ui.api.dependencies import (
from zyrarbot.ui.api.requests.default_plays_request import DefaultPlaysRequest
from zyrarbot.ui.api.requests.text_channel_request import TextChannelRequest
from zyrarbot.ui.api.status_broadcaster import StatusBroadcaster
from zyrarbot.ui.bot.guild_resolver import GuildResolver
logger = logging.getLogger(__name__)
+1 -1
View File
@@ -3,7 +3,6 @@ from __future__ import annotations
import discord
from fastapi import APIRouter, Depends, HTTPException
from zyrarbot.ui.bot.guild_resolver import GuildResolver
from zyrarbot.music.music_player import MusicPlayer
from zyrarbot.music.notification_channel_resolver import NotificationChannelResolver
from zyrarbot.ui.api.dependencies import (
@@ -14,6 +13,7 @@ from zyrarbot.ui.api.dependencies import (
)
from zyrarbot.ui.api.requests.connect_request import ConnectRequest
from zyrarbot.ui.api.status_broadcaster import StatusBroadcaster
from zyrarbot.ui.bot.guild_resolver import GuildResolver
router = APIRouter(prefix="/api", tags=["voice"])
+1 -1
View File
@@ -5,9 +5,9 @@ from typing import Any
import discord
from zyrarbot.audio.ytdl_source import YTDLSource
from zyrarbot.ui.bot.guild_resolver import GuildResolver
from zyrarbot.music.music_player import MusicPlayer
from zyrarbot.music.notification_channel_resolver import NotificationChannelResolver
from zyrarbot.ui.bot.guild_resolver import GuildResolver
HISTORY_PAYLOAD_LIMIT = 20
+1 -3
View File
@@ -33,9 +33,7 @@ class MusicCogBase(commands.Cog):
async def _enqueue_and_reply(
self, interaction: discord.Interaction, track, *, prefix: str = ""
) -> None:
result = await self.player.enqueue(
interaction.guild.id, track, channel=interaction.channel
)
result = await self.player.enqueue(interaction.guild.id, track, channel=interaction.channel)
title = discord.utils.escape_markdown(track.title or "Nieznany tytuł")
action = "Dodano do kolejki" if result["status"] == "queued" else "Teraz odtwarzane"
await interaction.followup.send(f"{action}{prefix}: {title}")
+13 -6
View File
@@ -1,10 +1,9 @@
from __future__ import annotations
from discord import app_commands
import discord
from discord import app_commands
from zyrarbot.music.loop_mode import LoopMode
from zyrarbot.music.music_player import MusicPlayer
from zyrarbot.ui.bot.cogs.common import MusicCogBase
@@ -38,7 +37,9 @@ class ControlCog(MusicCogBase, name="Control"):
async def resume(self, interaction: discord.Interaction) -> None:
voice_client = interaction.guild.voice_client
if not voice_client or not voice_client.is_paused():
await interaction.response.send_message("Odtwarzanie nie jest wstrzymane.", ephemeral=True)
await interaction.response.send_message(
"Odtwarzanie nie jest wstrzymane.", ephemeral=True
)
return
voice_client.resume()
await self.player.trigger_state_change()
@@ -58,10 +59,14 @@ class ControlCog(MusicCogBase, name="Control"):
@app_commands.describe(volume="Poziom głośności (1-100)")
async def volume(self, interaction: discord.Interaction, volume: int) -> None:
if interaction.guild.voice_client is None:
await interaction.response.send_message("Nie połączono z kanałem głosowym.", ephemeral=True)
await interaction.response.send_message(
"Nie połączono z kanałem głosowym.", ephemeral=True
)
return
if not 0 < volume <= 100:
await interaction.response.send_message("Wprowadź wartość z przedziału od 1 do 100.", ephemeral=True)
await interaction.response.send_message(
"Wprowadź wartość z przedziału od 1 do 100.", ephemeral=True
)
return
self.player.set_volume(interaction.guild.id, volume / 100)
await self.player.trigger_state_change()
@@ -71,7 +76,9 @@ class ControlCog(MusicCogBase, name="Control"):
async def now_playing(self, interaction: discord.Interaction) -> None:
current = self.player.state(interaction.guild.id).current
if not current:
await interaction.response.send_message("Nic nie jest obecnie odtwarzane.", ephemeral=True)
await interaction.response.send_message(
"Nic nie jest obecnie odtwarzane.", ephemeral=True
)
return
title = discord.utils.escape_markdown(current.title or "")
await interaction.response.send_message(f"Teraz odtwarzane: {title}")
+6 -2
View File
@@ -54,7 +54,9 @@ class QueueCog(MusicCogBase, name="Queue"):
for entry in matches[:AUTOCOMPLETE_LIMIT]
]
@app_commands.command(name="history", description="Pokaż historię ostatnio odtwarzanych utworów")
@app_commands.command(
name="history", description="Pokaż historię ostatnio odtwarzanych utworów"
)
async def show_history(self, interaction: discord.Interaction) -> None:
entries = self.player.history(interaction.guild.id)
if not entries:
@@ -70,7 +72,9 @@ class QueueCog(MusicCogBase, name="Queue"):
f"📜 Historia odtwarzania (ostatnie {HISTORY_PREVIEW_LIMIT}):\n{listing}"
)
@app_commands.command(name="trackplays", description="Zmień liczbę odtworzeń dla utworu w kolejce")
@app_commands.command(
name="trackplays", description="Zmień liczbę odtworzeń dla utworu w kolejce"
)
@app_commands.describe(index="Pozycja w kolejce (od 1)", count="Nowa liczba odtworzeń (1-999)")
async def track_plays_command(
self, interaction: discord.Interaction, index: int, count: int
+14 -7
View File
@@ -17,30 +17,37 @@ class SettingsCog(MusicCogBase, name="Settings"):
super().__init__(bot, player)
self._settings = settings
@app_commands.command(name="loop", description="Zmień tryb zapętlania (Wyłączone -> Cała kolejka -> Jeden utwór)")
@app_commands.command(
name="loop", description="Zmień tryb zapętlania (Wyłączone -> Cała kolejka -> Jeden utwór)"
)
async def loop_command(self, interaction: discord.Interaction) -> None:
mode = self.player.cycle_loop_mode(interaction.guild.id)
await self.player.trigger_state_change()
await interaction.response.send_message(mode.label)
@app_commands.command(name="loopplaylist", description="Włącz/wyłącz zapętlanie całej kolejki (tryb playlisty)")
@app_commands.command(
name="loopplaylist", description="Włącz/wyłącz zapętlanie całej kolejki (tryb playlisty)"
)
async def loopplaylist_command(self, interaction: discord.Interaction) -> None:
guild_id = interaction.guild.id
enabled = not self.player.state(guild_id).loop_mode.loops_queue
self.player.set_loop_mode(guild_id, LoopMode.QUEUE if enabled else LoopMode.OFF)
await self.player.trigger_state_change()
description = (
"włączone (utwory po zakończeniu wracają na koniec kolejki)"
if enabled
else "wyłączone"
"włączone (utwory po zakończeniu wracają na koniec kolejki)" if enabled else "wyłączone"
)
await interaction.response.send_message(f"🔁 Zapętlanie całej kolejki: **{description}**.")
@app_commands.command(name="defaultplays", description="Ustaw domyślną liczbę odtworzeń dla nowych utworów w kolejce")
@app_commands.command(
name="defaultplays",
description="Ustaw domyślną liczbę odtworzeń dla nowych utworów w kolejce",
)
@app_commands.describe(count="Domyślna liczba odtworzeń (1-999)")
async def default_plays_command(self, interaction: discord.Interaction, count: int) -> None:
if not self._settings.is_valid_plays(count):
await interaction.response.send_message("❌ Liczba odtworzeń musi być z przedziału 1-999.", ephemeral=True)
await interaction.response.send_message(
"❌ Liczba odtworzeń musi być z przedziału 1-999.", ephemeral=True
)
return
self.player.set_default_plays(count)
await self.player.trigger_state_change()
+3 -1
View File
@@ -29,7 +29,9 @@ class VoiceCog(MusicCogBase, name="Voice"):
@discord.app_commands.command(name="leave", description="Odłącz bota od kanału głosowego")
async def leave(self, interaction: discord.Interaction) -> None:
if interaction.guild.voice_client is None:
await interaction.response.send_message("Nie jestem na kanale głosowym.", ephemeral=True)
await interaction.response.send_message(
"Nie jestem na kanale głosowym.", ephemeral=True
)
return
await interaction.guild.voice_client.disconnect()
self.player.clear(interaction.guild.id)