different api constructors

This commit is contained in:
AF 2022-12-13 20:27:30 +00:00
parent de088611e3
commit 39cf4f1691

View File

@ -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: