Description
Library Version
5.11.0
Describe the Bug
When playing an AudioVolume
object the volume on the actual object will always get overridden with the volume on the ActiveVoiceState
. This means you can't actually control the volume of a specific piece of audio using the AudioVolume
itself.
I found this chunk of code which is doing the overwriting but I'm not sure if I'm missing additional context to this and maybe the volume should be getting pulled through from some other method.
https://github.com/interactions-py/interactions.py/blob/stable/interactions/api/voice/player.py#L97-L99
Steps to Reproduce
- Create an
AudioVolume
object - Set that
AudioVolume
object to have a very loud volume such as4.0
- Play that audio using
context.voice_state.play(audio)
and it will sound as if the volume was never changed
Expected Results
The volume should be much louder than the default volume of 0.5
.
Minimal Reproducible Code
Python
from interactions import Client, slash_command
from interactions.api.voice.audio import AudioVolume
bot = Client()
@slash_command(name="play")
async def play(ctx):
if not context.voice_state:
await context.author.voice.channel.connect()
audio = AudioVolume("music.mp3")
audio.volume = 4.0
await context.voice_state.play(audio)
bot.start("token")
Traceback
No response
Checklist
- I have searched the open issues for duplicates.
- I have shown the entire traceback, if possible.
- I have removed my token from display, if visible.
- I have attempted to debug this myself, and I believe this issue is with the library
Additional Information
I'm happy to put up a PR to fix this but I'm not sure what the exact intended behavior is. Should the AudioVolume.volume
always override the ActiveVoiceState._volume
, should there be a multiplicative effect, maybe a max
or min
call, or just taking the average of the two?