v6d3music/v6d3music/core/mainaudio.py
2022-06-20 00:35:12 +03:00

29 lines
956 B
Python

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))