Tested Phase 1, fixed text channel blocking while in voice and implemented joining and leaving VC from Phase 2

This commit is contained in:
2026-01-16 20:39:23 +02:00
parent 911f11ee9f
commit b0066f3525
7 changed files with 1175 additions and 4 deletions

View File

@@ -59,6 +59,8 @@ COMPONENTS = {
'sentiment': 'Sentiment analysis',
'core': 'Core utilities and helpers',
'apscheduler': 'Job scheduler logs (APScheduler)',
'voice_manager': 'Voice channel session management',
'voice_commands': 'Voice channel commands',
}
# Global configuration

View File

@@ -94,9 +94,18 @@ class VoiceSessionManager:
# 9. Pause figurine notifier
await self._pause_figurine_notifier()
# 10. Create and connect voice session
# 10. Create voice session
self.active_session = VoiceSession(guild_id, voice_channel, text_channel)
# Note: Actual voice connection will be implemented in Phase 2
# 11. Connect to Discord voice channel
try:
voice_client = await voice_channel.connect()
self.active_session.voice_client = voice_client
self.active_session.active = True
logger.info(f"✓ Connected to voice channel: {voice_channel.name}")
except Exception as e:
logger.error(f"Failed to connect to voice channel: {e}", exc_info=True)
raise
logger.info(f"✓ Voice session started successfully")
@@ -118,8 +127,13 @@ class VoiceSessionManager:
logger.info("Ending voice session...")
try:
# 1. Disconnect from voice (Phase 2 implementation)
# await self.active_session.disconnect()
# 1. Disconnect from voice channel
if self.active_session.voice_client:
try:
await self.active_session.voice_client.disconnect()
logger.info("✓ Disconnected from voice channel")
except Exception as e:
logger.error(f"Error disconnecting from voice: {e}")
# 2. Resume text channel inference
await self._resume_text_channels()
@@ -324,6 +338,13 @@ class VoiceSessionManager:
"""Cleanup resources if session start fails"""
logger.warning("Cleaning up after failed session start...")
try:
# Disconnect from voice if connected
if self.active_session and self.active_session.voice_client:
try:
await self.active_session.voice_client.disconnect()
except:
pass
await self._unblock_vision_model()
await self._enable_image_generation()
await self._resume_text_channels()
@@ -332,6 +353,9 @@ class VoiceSessionManager:
await self._resume_autonomous_engine()
await self._resume_scheduled_events()
await self._resume_figurine_notifier()
# Clear the session
self.active_session = None
except Exception as e:
logger.error(f"Error during cleanup: {e}")