29 lines
956 B
Python
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))
|