67 lines
2.2 KiB
Python
67 lines
2.2 KiB
Python
"""Thin Evennia -> Nexus event normalization helpers."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime, timezone
|
|
|
|
|
|
def _ts(value: str | None = None) -> str:
|
|
return value or datetime.now(timezone.utc).isoformat()
|
|
|
|
|
|
def session_bound(hermes_session_id: str, evennia_account: str = "Timmy", evennia_character: str = "Timmy", timestamp: str | None = None) -> dict:
|
|
return {
|
|
"type": "evennia.session_bound",
|
|
"hermes_session_id": hermes_session_id,
|
|
"evennia_account": evennia_account,
|
|
"evennia_character": evennia_character,
|
|
"timestamp": _ts(timestamp),
|
|
}
|
|
|
|
|
|
def actor_located(actor_id: str, room_key: str, room_name: str | None = None, timestamp: str | None = None) -> dict:
|
|
return {
|
|
"type": "evennia.actor_located",
|
|
"actor_id": actor_id,
|
|
"room_id": room_key,
|
|
"room_key": room_key,
|
|
"room_name": room_name or room_key,
|
|
"timestamp": _ts(timestamp),
|
|
}
|
|
|
|
|
|
def room_snapshot(room_key: str, title: str, desc: str, exits: list[dict] | None = None, objects: list[dict] | None = None, occupants: list[dict] | None = None, timestamp: str | None = None) -> dict:
|
|
return {
|
|
"type": "evennia.room_snapshot",
|
|
"room_id": room_key,
|
|
"room_key": room_key,
|
|
"title": title,
|
|
"desc": desc,
|
|
"exits": exits or [],
|
|
"objects": objects or [],
|
|
"occupants": occupants or [],
|
|
"timestamp": _ts(timestamp),
|
|
}
|
|
|
|
|
|
def command_issued(hermes_session_id: str, actor_id: str, command_text: str, timestamp: str | None = None) -> dict:
|
|
return {
|
|
"type": "evennia.command_issued",
|
|
"hermes_session_id": hermes_session_id,
|
|
"actor_id": actor_id,
|
|
"command_text": command_text,
|
|
"timestamp": _ts(timestamp),
|
|
}
|
|
|
|
|
|
def command_result(hermes_session_id: str, actor_id: str, command_text: str, output_text: str, success: bool = True, timestamp: str | None = None) -> dict:
|
|
return {
|
|
"type": "evennia.command_result",
|
|
"hermes_session_id": hermes_session_id,
|
|
"actor_id": actor_id,
|
|
"command_text": command_text,
|
|
"output_text": output_text,
|
|
"success": success,
|
|
"timestamp": _ts(timestamp),
|
|
}
|