VoiceClient.play() doesn't pass FFMPEG error to 'after' function.
Reproduction Steps
I know from #5131 that the session invalidation error is not a Discord.py error, however, the VoiceClient's play() function does not seem to be capturing and passing the FFMPEG error into my provided after function. I would like to notify when this error happens, so capturing this error would be very helpful. It also appears that Discord.py wrongly states that FFMPEG exited successfully, even when it exits with code 1, which by definition, is not successful.
Here is my current code and log results:
Code:
def sync_playback_error(error: Exception = None):
async def playback_error(error: Exception = None):
has_error: bool = error != None
if has_error:
print('Sending error to chat...')
await ctx.message.channel.send('A playback error has caused the audio stream to stop.')
else:
print('No error in playback!')
print('Starting async callback...')
asyncio.run_coroutine_threadsafe(playback_error(error), self.bot.loop)
# Attempt to play ffmpeg source
vc.play(ffmpeg_src, after=sync_playback_error)
Logs:
[tls @ 0x5632a384eb80] Error in the pull function.
[matroska,webm @ 0x5632a384a600] Read error
[tls @ 0x5632a384eb80] The specified session has been invalidated for some reason.
Last message repeated 1 times
Starting async callback...
DEBUG:asyncio:Using selector: EpollSelector
No error in playback!
2024-06-15 16:58:28 INFO discord.player ffmpeg process 2801802 successfully terminated with return code of 1.
Minimal Reproducible Code
No response
Expected Results
I expected the FFMPEG error to be passed to the after function
Actual Results
The error was not captured and passed to the after function
Intents
discord.Intents.default()
System Information
Python v3.10.12-final
discord.py v2.3.2-final
aiohttp v3.9.5
system info: Linux 5.15.0-112-generic #122-Ubuntu SMP Thu May 23 07:48:21 UTC 2024
Checklist
[X] I have searched the open issues for duplicates.
[X] I have shown the entire traceback, if possible.
[X] I have removed my token from display, if visible.
Summary
VoiceClient.play() doesn't pass FFMPEG error to 'after' function.
Reproduction Steps
I know from #5131 that the session invalidation error is not a Discord.py error, however, the
VoiceClient
'splay()
function does not seem to be capturing and passing the FFMPEG error into my providedafter
function. I would like to notify when this error happens, so capturing this error would be very helpful. It also appears that Discord.py wrongly states that FFMPEG exited successfully, even when it exits with code 1, which by definition, is not successful.Here is my current code and log results: Code:
Logs:
Minimal Reproducible Code
No response
Expected Results
I expected the FFMPEG error to be passed to the
after
functionActual Results
The error was not captured and passed to the
after
functionIntents
discord.Intents.default()
System Information
Checklist
Additional Context
No response