diff options
| author | salmonik <raisersoft@proton.me> | 2026-04-29 14:43:08 +0200 |
|---|---|---|
| committer | salmonik <raisersoft@proton.me> | 2026-04-29 14:43:08 +0200 |
| commit | 0e4c707b2b11b4ec70a000e7a9d3108030fc0c61 (patch) | |
| tree | 3146eebd42df35193fc9a22fbfd17c2b5d17baf5 /cogs/music/audio_playback.py | |
| parent | Refactor database connections and add integration tests (diff) | |
| download | senator-sperma-0e4c707b2b11b4ec70a000e7a9d3108030fc0c61.tar.gz senator-sperma-0e4c707b2b11b4ec70a000e7a9d3108030fc0c61.zip | |
damn short files
Signed-off-by: salmonik <raisersoft@proton.me>
Diffstat (limited to '')
| -rw-r--r-- | cogs/music/audio_playback.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/cogs/music/audio_playback.py b/cogs/music/audio_playback.py index 1c715de..1313d01 100644 --- a/cogs/music/audio_playback.py +++ b/cogs/music/audio_playback.py | |||
| @@ -192,13 +192,14 @@ class AudioPlaybackManager: | |||
| 192 | source, is_url, display_name | 192 | source, is_url, display_name |
| 193 | ) | 193 | ) |
| 194 | 194 | ||
| 195 | # Track if playback failed | 195 | # Track playback state |
| 196 | playback_failed = {"error": None} | 196 | playback_state = {"error": None, "finished": False} |
| 197 | 197 | ||
| 198 | def after_playing(error): | 198 | def after_playing(error): |
| 199 | if error: | 199 | if error: |
| 200 | playback_failed["error"] = str(error) | 200 | playback_state["error"] = str(error) |
| 201 | logger.error(f"Playback error: {error}") | 201 | logger.error(f"Playback error: {error}") |
| 202 | playback_state["finished"] = True | ||
| 202 | 203 | ||
| 203 | # Play the audio | 204 | # Play the audio |
| 204 | vc.play(audio_source, after=after_playing) | 205 | vc.play(audio_source, after=after_playing) |
| @@ -208,14 +209,19 @@ class AudioPlaybackManager: | |||
| 208 | # Wait for FFmpeg to attempt connection - errors usually happen within 5 seconds | 209 | # Wait for FFmpeg to attempt connection - errors usually happen within 5 seconds |
| 209 | await asyncio.sleep(5) | 210 | await asyncio.sleep(5) |
| 210 | 211 | ||
| 211 | # Check if playback actually started | 212 | # Check if playback failed to start (not just finished quickly) |
| 212 | if playback_failed["error"]: | 213 | if playback_state["error"]: |
| 213 | logger.error(f"Playback failed: {playback_failed['error']}") | 214 | logger.error(f"Playback failed: {playback_state['error']}") |
| 214 | await ctx.followup.send( | 215 | await ctx.followup.send( |
| 215 | "eror: Timeout - nie udało się połączyć ze streamem", ephemeral=True | 216 | "eror: Timeout - nie udało się połączyć ze streamem", ephemeral=True |
| 216 | ) | 217 | ) |
| 217 | return False | 218 | return False |
| 218 | 219 | ||
| 220 | # If playback finished within 5s, it was a short file - not an error | ||
| 221 | if playback_state["finished"]: | ||
| 222 | logger.info(f"Playback completed quickly: {final_display_name}") | ||
| 223 | return True | ||
| 224 | |||
| 219 | if not vc.is_playing(): | 225 | if not vc.is_playing(): |
| 220 | logger.error(f"Stream failed - not playing after 5s: {source}") | 226 | logger.error(f"Stream failed - not playing after 5s: {source}") |
| 221 | await ctx.followup.send( | 227 | await ctx.followup.send( |
