import discord from ptvp35 import Db, KVJson from v6d2ctx.context import Explicit from v6d3music.config import myroot from v6d3music.core.queueaudio import QueueAudio from v6d3music.utils.assert_admin import assert_admin volume_db = Db(myroot / 'volume.db', kvrequest_type=KVJson) class MainAudio(discord.PCMVolumeTransformer): def __init__(self, queue: QueueAudio, volume: float): self.queue = queue super().__init__(self.queue, volume=volume) async def set(self, volume: float, member: discord.Member): assert_admin(member) if volume < 0.01: raise Explicit('volume too small') if volume > 1: raise Explicit('volume too big') self.volume = volume await volume_db.set(member.guild.id, volume) @classmethod async def create(cls, guild: discord.Guild) -> 'MainAudio': return cls(await QueueAudio.create(guild), volume=volume_db.get(guild.id, 0.2))