feat: best voice ever

This commit is contained in:
2025-03-24 21:46:35 +01:00
parent 51d39d849b
commit 05809597b7
11 changed files with 57 additions and 1 deletions

1
.dockerignore Normal file
View File

@@ -0,0 +1 @@
.env

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.mp3 filter=lfs diff=lfs merge=lfs -text

View File

@@ -15,6 +15,8 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@main uses: actions/checkout@main
with:
lfs: true
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.10.0 uses: docker/setup-buildx-action@v3.10.0

3
.gitignore vendored
View File

@@ -18,6 +18,9 @@ ENV/
logs/ logs/
*.log *.log
# App specific
bot-data/
# IDE / Editor settings # IDE / Editor settings
.vscode/ .vscode/
.idea/ .idea/

View File

@@ -1,4 +1,6 @@
FROM python:alpine FROM python:slim-bookworm
RUN apt update && apt install -y ffmpeg
WORKDIR /aw-bot WORKDIR /aw-bot
@@ -7,6 +9,7 @@ RUN pip install --no-cache-dir -r requirements.txt
COPY bot /aw-bot/bot COPY bot /aw-bot/bot
COPY database /aw-bot/database COPY database /aw-bot/database
COPY sounds /aw-bot/sounds
COPY aw.py . COPY aw.py .
ENV BOT_TOKEN="" ENV BOT_TOKEN=""

4
aw.py
View File

@@ -1,3 +1,4 @@
from dotenv import load_dotenv
import os import os
import discord import discord
@@ -13,6 +14,9 @@ OFFTOPIC_CHANNEL = 1112048063448617142
intents = discord.Intents.all() intents = discord.Intents.all()
bot = commands.Bot(command_prefix="!", intents=intents) bot = commands.Bot(command_prefix="!", intents=intents)
# Load environment variables from .env file (if it exists)
load_dotenv(override=True)
initialize_db() initialize_db()

View File

@@ -6,6 +6,7 @@ from bot.events_handlers import (
handle_bulk_message_delete, handle_bulk_message_delete,
handle_message_delete, handle_message_delete,
handle_message, handle_message,
handle_voice_state_update,
) )
@@ -38,4 +39,8 @@ async def setup(bot):
async def on_message_edit(before, after): async def on_message_edit(before, after):
await handle_message_edit(before, after, bot) await handle_message_edit(before, after, bot)
@bot.event
async def on_voice_state_update(member, before, after):
await handle_voice_state_update(member, before, after, bot)
print("Events extension loaded!") print("Events extension loaded!")

View File

@@ -6,3 +6,4 @@ from .message_events import (
handle_message_delete, handle_message_delete,
handle_message, handle_message,
) )
from .voice_events import handle_voice_state_update

View File

@@ -0,0 +1,31 @@
import discord
import asyncio
MP3_PATH = "sounds/hello.mp3"
async def handle_voice_state_update(member, before, after, bot):
# Ignore bot users
if member.bot:
return
# Check if the member joined a new voice channel
if after.channel and (before.channel != after.channel):
voice_channel = after.channel
try:
# Join the voice channel
vc = await voice_channel.connect()
# Play the MP3 file
vc.play(discord.FFmpegPCMAudio(MP3_PATH))
# Wait for playback to finish
while vc.is_playing():
await asyncio.sleep(1)
# Disconnect
await vc.disconnect()
except Exception as e:
print(f"Error: {e}")

View File

@@ -1,3 +1,5 @@
discord.py discord.py
requests requests
audioop-lts audioop-lts
python-dotenv
pynacl

3
sounds/hello.mp3 Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ca2ae9afe287a472266ec3875db378154582a7344e459d205a1bfa5569615dc3
size 23691