Files
splittermond-backend/chat/response.py

68 lines
1.3 KiB
Python
Raw Normal View History

2019-06-17 18:17:59 +02:00
from abc import ABC
from dataclasses import dataclass
from events import Events
@dataclass
class Response(ABC):
sender: str
event: Events
def to_json(self) -> dict:
d = self.__dict__
d.pop('event')
return d
@dataclass
class NewCharacter(Response):
character: dict
@dataclass
class RemoveActor(Response):
message: str
name: str
@dataclass
class PublicMessage(Response):
message: str
@dataclass
class PrivateMessage(Response):
message: str
recipient: str
@dataclass
class DiceRoll(Response):
message: str
dice: list
result: int
def build_dice_roll(sender, message, dice, result):
return DiceRoll(sender, Events.DICE_ROLL, message, dice, result)
def build_new_character(sender, char_dict):
return NewCharacter(sender, Events.NEW_CHARACTER, char_dict)
def build_remove_actor(sender, message, name):
return RemoveActor(sender, Events.REMOVE_ACTOR, message, name)
def build_private_message(sender, message, recipient):
return PrivateMessage(sender, Events.PRIVATE_CHAT, message, recipient)
def build_public_message(sender, message):
return PublicMessage(sender, Events.PUBLIC_CHAT, message)
def build_system_message(user, message):
return PrivateMessage('System', Events.SYSTEM_MESSAGE, message, user)