refactor: split api.py monolith into 19 route modules (Phase B)
Split 3,598-line api.py into thin orchestrator (128 lines) + 19 route modules in bot/routes/: core.py (7 routes), mood.py (10), language.py (3), evil_mode.py (6), bipolar_mode.py (9), gpu.py (2), bot_actions.py (4), autonomous.py (13), profile_picture.py (26), manual_send.py (3), servers.py (6), figurines.py (5), dms.py (18), image_generation.py (4), chat.py (1), config.py (7), logging_config.py (9), voice.py (3), memory.py (10) All 146 routes verified present via test_route_split.py (149 tests). 21/21 regression tests (test_config_state.py) pass. Monolith backup: bot/api_monolith_backup.py (revert: cp it to api.py).
This commit is contained in:
74
bot/routes/language.py
Normal file
74
bot/routes/language.py
Normal file
@@ -0,0 +1,74 @@
|
||||
"""Language mode routes."""
|
||||
|
||||
from fastapi import APIRouter
|
||||
import globals
|
||||
from utils.logger import get_logger
|
||||
|
||||
logger = get_logger('api')
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/language")
|
||||
def get_language_mode():
|
||||
"""Get current language mode (english or japanese)"""
|
||||
return {
|
||||
"language_mode": globals.LANGUAGE_MODE,
|
||||
"available_languages": ["english", "japanese"],
|
||||
"current_model": globals.JAPANESE_TEXT_MODEL if globals.LANGUAGE_MODE == "japanese" else globals.TEXT_MODEL
|
||||
}
|
||||
|
||||
|
||||
@router.post("/language/toggle")
|
||||
def toggle_language_mode():
|
||||
"""Toggle between English and Japanese modes"""
|
||||
if globals.LANGUAGE_MODE == "english":
|
||||
globals.LANGUAGE_MODE = "japanese"
|
||||
new_mode = "japanese"
|
||||
model_used = globals.JAPANESE_TEXT_MODEL
|
||||
logger.info("Switched to Japanese mode (using Llama 3.1 Swallow)")
|
||||
else:
|
||||
globals.LANGUAGE_MODE = "english"
|
||||
new_mode = "english"
|
||||
model_used = globals.TEXT_MODEL
|
||||
logger.info("Switched to English mode (using default model)")
|
||||
|
||||
# Persist via config manager
|
||||
try:
|
||||
from config_manager import config_manager
|
||||
config_manager.set("discord.language_mode", new_mode, persist=True)
|
||||
logger.info(f"💾 Language mode persisted to config_runtime.yaml")
|
||||
except Exception as e:
|
||||
logger.warning(f"Failed to persist language mode: {e}")
|
||||
|
||||
return {
|
||||
"status": "ok",
|
||||
"language_mode": new_mode,
|
||||
"model_now_using": model_used,
|
||||
"message": f"Miku is now speaking in {new_mode.upper()}!"
|
||||
}
|
||||
|
||||
|
||||
@router.post("/language/set")
|
||||
def set_language_mode(language: str = "english"):
|
||||
"""Set language mode to either 'english' or 'japanese'"""
|
||||
if language.lower() not in ["english", "japanese"]:
|
||||
return {"error": f"Invalid language mode '{language}'. Use 'english' or 'japanese'."}, 400
|
||||
|
||||
globals.LANGUAGE_MODE = language.lower()
|
||||
model_used = globals.JAPANESE_TEXT_MODEL if language.lower() == "japanese" else globals.TEXT_MODEL
|
||||
logger.info(f"Language mode set to {language.lower()} (using {model_used})")
|
||||
|
||||
# Persist so it survives restarts
|
||||
try:
|
||||
from config_manager import config_manager
|
||||
config_manager.set("discord.language_mode", language.lower(), persist=True)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return {
|
||||
"status": "ok",
|
||||
"language_mode": language.lower(),
|
||||
"model_now_using": model_used,
|
||||
"message": f"Miku is now speaking in {language.upper()}!"
|
||||
}
|
||||
Reference in New Issue
Block a user