diff --git a/botbotbot/voice.py b/botbotbot/voice.py index 2ebffb8..10fc3f3 100644 --- a/botbotbot/voice.py +++ b/botbotbot/voice.py @@ -42,6 +42,14 @@ class VoiceBot: guild_ids=self.guild_ids, ) ) + self.bot.add_application_command( + discord.SlashCommand( + self.unjoin_voice, + name="unjoin", + description="Déconnecter du channel vocal", + guild_ids=self.guild_ids, + ) + ) async def random_connect(self) -> None: while True: @@ -131,11 +139,16 @@ class VoiceBot: await self.disconnect_voice(channel.guild) if vo is None or vo.channel != channel: vo = await channel.connect() - self.vo[channel.guild.id] = vo + self.vo[channel.guild.id] = vo return vo async def disconnect_voice(self, guild: discord.Guild) -> None: if vo := self.vo.pop(guild.id, None): + if self.cambai is not None: + source = await discord.FFmpegOpusAudio.from_probe( + self.cambai.tts("À plus les jeunes !") + ) + await vo.play(source, wait_finish=True) await vo.disconnect() async def join_voice(self, ctx: discord.ApplicationContext) -> None: @@ -153,6 +166,21 @@ class VoiceBot: delete_after=30, ) + async def unjoin_voice(self, ctx: discord.ApplicationContext) -> None: + if ctx.user.voice: + await ctx.respond( + f"Disconnecting from voice channel {ctx.user.voice.channel}.", + ephemeral=True, + delete_after=30, + ) + await self.disconnect_voice(ctx.user.voice.channel.guild) + else: + await ctx.respond( + "You are not connected to a voice channel.", + ephemeral=True, + delete_after=30, + ) + async def on_voice_state_update( self, member: discord.Member,