VTuberAI / src /utils /prompter /message.py
Saidie000's picture
Upload 90 files
1905805 verified
import datetime
from .context import ContextMetadata
class Message:
def to_line():
raise NotImplementedError
def to_dict():
raise NotImplementedError
class RawMessage(Message):
def __init__(self, message: str,):
assert message is not None and len(message) > 0
self.message = message.replace("\n", "")
def to_line(self):
return self.message
def to_dict(self):
return {
"type": "raw",
"message": self.message
}
class RequestMessage(Message):
def __init__(self, message: str, time: datetime.datetime):
assert message is not None and len(message) > 0
self.message = message.replace("\n", "")
self.time = time
def to_line(self):
return f"[REQUEST]: {self.message}"
def to_dict(self):
return {
"type": "request",
"time": self.time.timestamp(),
"message": self.message
}
class ChatMessage(Message):
def __init__(self, user: str, message: str, time: datetime.datetime):
assert user is not None
assert message is not None and len(message) > 0
self.user = user
self.message = message.replace("\n", "")
self.time = time
def to_line(self):
return f"[{self.user}]: {self.message}"
def to_dict(self):
return {
"type": "chat",
"user": self.user,
"time": self.time.timestamp(),
"message": self.message
}
class MCPMessage(Message):
def __init__(self, tool_name: str, result: str, time: datetime.datetime):
assert tool_name is not None
assert result is not None and len(result) > 0
self.tool_name = tool_name
self.result = result.replace("\n", "")
self.time = time
def to_line(self):
return f"[MCP#{self.tool_name}]: {self.result}"
def to_dict(self):
return {
"type": "tool",
"tool": self.tool_name,
"time": self.time.timestamp(),
"message": self.message
}
class CustomMessage(Message):
def __init__(self, context_metadata: ContextMetadata, message: str, time: datetime.datetime):
assert context_metadata is not None
assert message is not None and len(message) > 0
self.context_metadata = context_metadata
self.message = message.replace("\n", "")
self.time = time
def to_line(self):
return f"[CONTEXT#{self.context_metadata.name}]: {self.message}"
def to_dict(self):
return {
"type": "custom",
"id": self.context_metadata.id,
"time": self.time.timestamp(),
"message": self.message
}