Compare commits

...

2 commits

3 changed files with 52 additions and 2 deletions

22
Dockerfile Normal file
View file

@ -0,0 +1,22 @@
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
WORKDIR /app
ENV UV_COMPILE_BYTECODE=1
ENV UV_LINK_MODE=copy
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=uv.lock,target=uv.lock \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
uv sync --frozen --no-install-project --no-dev
ADD . /app
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --frozen --no-dev
ENV PATH="/app/.venv/bin:$PATH"
ENTRYPOINT []
CMD ["uv", "run", "python", "-m", "botbotbot"]

View file

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

View file

@ -14,7 +14,7 @@ dependencies = [
]
[project.scripts]
hasspy = "botbotbot:main"
botbotbot = "botbotbot:main"
[dependency-groups]
dev = [