From 31df4334202a583d30c96539489daae645b5b563 Mon Sep 17 00:00:00 2001 From: Felipe M Date: Thu, 17 Sep 2020 16:09:02 +0200 Subject: [PATCH] Added a debug platform for debugging --- butterrobot/platforms/__init__.py | 3 ++- butterrobot/platforms/debug.py | 39 +++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 butterrobot/platforms/debug.py diff --git a/butterrobot/platforms/__init__.py b/butterrobot/platforms/__init__.py index ff08cef..c63b65e 100644 --- a/butterrobot/platforms/__init__.py +++ b/butterrobot/platforms/__init__.py @@ -1,5 +1,6 @@ from butterrobot.platforms.slack import SlackPlatform from butterrobot.platforms.telegram import TelegramPlatform +from butterrobot.platforms.debug import DebugPlatform -PLATFORMS = {platform.ID: platform for platform in (SlackPlatform, TelegramPlatform,)} +PLATFORMS = {platform.ID: platform for platform in (SlackPlatform, TelegramPlatform, DebugPlatform)} diff --git a/butterrobot/platforms/debug.py b/butterrobot/platforms/debug.py new file mode 100644 index 0000000..3d59230 --- /dev/null +++ b/butterrobot/platforms/debug.py @@ -0,0 +1,39 @@ +import uuid +from datetime import datetime + +import structlog + +from butterrobot.platforms.base import Platform, PlatformMethods +from butterrobot.objects import Message + + +logger = structlog.get_logger(__name__) + + +class DebugMethods(PlatformMethods): + @classmethod + async def send_message(self, message: Message): + logger.debug( + "Outgoing message", message=message.__dict__, platform=DebugPlatform.ID + ) + + +class DebugPlatform(Platform): + ID = "debug" + + methods = DebugMethods + + @classmethod + async def parse_incoming_message(cls, request): + request_data = await request.get_json() + logger.debug("Parsing message", data=request_data, platform=cls.ID) + + return Message( + id=str(uuid.uuid4()), + date=datetime.now(), + text=request_data["text"], + from_bot=bool(request_data.get("from_bot", False)), + author=request_data.get("author", "Debug author"), + chat=request_data.get("chat", "Debug chat ID"), + raw={}, + )