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:
52
bot/routes/bot_actions.py
Normal file
52
bot/routes/bot_actions.py
Normal file
@@ -0,0 +1,52 @@
|
||||
"""Core bot action routes: conversation reset, sleep, wake, bedtime."""
|
||||
|
||||
from fastapi import APIRouter
|
||||
import globals
|
||||
from commands.actions import (
|
||||
force_sleep,
|
||||
wake_up,
|
||||
reset_conversation,
|
||||
)
|
||||
from routes.models import ConversationResetRequest
|
||||
from utils.logger import get_logger
|
||||
|
||||
logger = get_logger('api')
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.post("/conversation/reset")
|
||||
def reset_convo(data: ConversationResetRequest):
|
||||
reset_conversation(data.user_id)
|
||||
return {"status": "ok", "message": "Conversation reset"}
|
||||
|
||||
|
||||
@router.post("/sleep")
|
||||
async def force_sleep_endpoint():
|
||||
await force_sleep()
|
||||
return {"status": "ok", "message": "Miku is now sleeping"}
|
||||
|
||||
|
||||
@router.post("/wake")
|
||||
async def wake_up_endpoint():
|
||||
await wake_up()
|
||||
return {"status": "ok", "message": "Miku is now awake"}
|
||||
|
||||
|
||||
@router.post("/bedtime")
|
||||
async def bedtime_endpoint(guild_id: int = None):
|
||||
# If guild_id is provided, send bedtime reminder only to that server
|
||||
# If no guild_id, send to all servers (legacy behavior)
|
||||
if globals.client and globals.client.loop and globals.client.loop.is_running():
|
||||
if guild_id is not None:
|
||||
# Send to specific server only
|
||||
from utils.scheduled import send_bedtime_reminder_for_server
|
||||
globals.client.loop.create_task(send_bedtime_reminder_for_server(guild_id, globals.client))
|
||||
return {"status": "ok", "message": f"Bedtime reminder queued for server {guild_id}"}
|
||||
else:
|
||||
# Send to all servers (legacy behavior)
|
||||
from utils.scheduled import send_bedtime_now
|
||||
globals.client.loop.create_task(send_bedtime_now())
|
||||
return {"status": "ok", "message": "Bedtime reminder queued for all servers"}
|
||||
else:
|
||||
return {"status": "error", "message": "Bot not ready"}
|
||||
Reference in New Issue
Block a user