Initial commit
This commit is contained in:
68
bot/commands/example.py
Normal file
68
bot/commands/example.py
Normal file
@@ -0,0 +1,68 @@
|
||||
"""
|
||||
Example command module - Copy this pattern for your domain.
|
||||
|
||||
This module demonstrates:
|
||||
1. Registering a handler with the command registry
|
||||
2. Using the AI parser with custom prompts
|
||||
3. Making API calls
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from bot.command_registry import register_module
|
||||
import ai.parser as ai_parser
|
||||
|
||||
|
||||
async def handle_example(message, session, parsed):
|
||||
"""
|
||||
Handler for 'example' interaction type.
|
||||
|
||||
Args:
|
||||
message: Discord message object
|
||||
session: {token, user_uuid, username}
|
||||
parsed: Parsed JSON from AI parser
|
||||
"""
|
||||
action = parsed.get("action", "unknown")
|
||||
token = session["token"]
|
||||
user_uuid = session["user_uuid"]
|
||||
|
||||
if action == "check":
|
||||
await message.channel.send(
|
||||
f"Checking example items for {session['username']}..."
|
||||
)
|
||||
elif action == "add":
|
||||
item_name = parsed.get("item_name", "unnamed")
|
||||
await message.channel.send(f"Adding example item: **{item_name}**")
|
||||
else:
|
||||
await message.channel.send(f"Unknown example action: {action}")
|
||||
|
||||
|
||||
def validate_example_json(data):
|
||||
"""Validate parsed JSON for example commands. Return list of errors."""
|
||||
errors = []
|
||||
|
||||
if not isinstance(data, dict):
|
||||
return ["Response must be a JSON object"]
|
||||
|
||||
if "error" in data:
|
||||
return []
|
||||
|
||||
if "action" not in data:
|
||||
errors.append("Missing required field: action")
|
||||
|
||||
action = data.get("action")
|
||||
|
||||
if action == "add" and "item_name" not in data:
|
||||
errors.append("Missing required field for add: item_name")
|
||||
|
||||
return errors
|
||||
|
||||
|
||||
# Register the module
|
||||
register_module("example", handle_example)
|
||||
|
||||
# Register the validator
|
||||
ai_parser.register_validator("example", validate_example_json)
|
||||
Reference in New Issue
Block a user