diff --git a/v6d3music/api.py b/v6d3music/api.py index 1b4b8ed..7696c44 100644 --- a/v6d3music/api.py +++ b/v6d3music/api.py @@ -71,7 +71,7 @@ class UserApi: member = guild.get_member(self.user_id) or await guild.fetch_member(self.user_id) if member is None: raise UserApi.UnknownMember('unknown member of a guild') - return GuildApi(self.pi, self.request, member) + return GuildApi(self, member) async def _operator_api(self) -> 'OperatorApi': if not self.pi.is_operator(self.user_id): @@ -120,8 +120,8 @@ class GuildApi(UserApi): class VoiceNotConnected(Api.MisusedApi): pass - def __init__(self, api: Api, request: dict, member: discord.Member) -> None: - super().__init__(api, request, member.id) + def __init__(self, api: UserApi, member: discord.Member) -> None: + super().__init__(api.pi, api.request, member.id) self.member = member self.guild = member.guild @@ -136,10 +136,10 @@ class GuildApi(UserApi): raise GuildApi.VoiceNotConnected('bot client user not initialised') if self.client.user.id not in channel.voice_states: raise GuildApi.VoiceNotConnected('bot not connected') - return VoiceApi(self.pi, self.request, self.member, channel) + return VoiceApi(self, channel) def sub(self, request: dict) -> 'GuildApi': - return GuildApi(self.pi, request, self.member) + return GuildApi(super().sub(request), self.member) async def _api(self) -> ResponseType: match self.request: @@ -156,18 +156,18 @@ class GuildApi(UserApi): class VoiceApi(GuildApi): def __init__( - self, api: Api, request: dict, member: discord.Member, channel: discord.VoiceChannel | discord.StageChannel + self, api: GuildApi, channel: discord.VoiceChannel | discord.StageChannel ) -> None: - super().__init__(api, request, member) + super().__init__(api, api.member) self.channel = channel async def _main_api(self) -> 'MainApi': vc = await raw_vc_for_member(self.member) main = await main_for_raw_vc(vc, create=False, force_play=False) - return MainApi(self.pi, self.request, self.member, self.channel, vc, main) + return MainApi(self, vc, main) def sub(self, request: dict) -> 'VoiceApi': - return VoiceApi(self.pi, request, self.member, self.channel) + return VoiceApi(super().sub(request), self.channel) async def _api(self) -> ResponseType: match self.request: @@ -184,15 +184,14 @@ class VoiceApi(GuildApi): class MainApi(VoiceApi): def __init__( - self, api: Api, request: dict, member: discord.Member, channel: discord.VoiceChannel | discord.StageChannel, - vc: discord.VoiceClient, main: MainAudio + self, api: VoiceApi, vc: discord.VoiceClient, main: MainAudio ) -> None: - super().__init__(api, request, member, channel) + super().__init__(api, api.channel) self.vc = vc self.main = main def sub(self, request: dict) -> 'MainApi': - return MainApi(self.pi, request, self.member, self.channel, self.vc, self.main) + return MainApi(super().sub(request), self.vc, self.main) async def _api(self) -> ResponseType: match self.request: