diff options
| author | 2024-09-19 14:44:33 +0800 | |
|---|---|---|
| committer | 2024-09-19 14:44:33 +0800 | |
| commit | e9a780496f7ce067e0d8d51ce1d62e48c9f2a8d9 (patch) | |
| tree | a3e31e07fd001baa1cfce9ceebcdfed58b50bcda /hrc/service/console | |
| parent | 9e18d7ebf7a17bb7d7d169da3a3cefde0956a9f9 (diff) | |
| download | HydroRollCore-e9a780496f7ce067e0d8d51ce1d62e48c9f2a8d9.tar.gz HydroRollCore-e9a780496f7ce067e0d8d51ce1d62e48c9f2a8d9.zip | |
feat(core): Implement Service class and related functionalities
Co-authored-by: yuzhe <YUZHEthefool@users.noreply.github.com>
Diffstat (limited to 'hrc/service/console')
| -rw-r--r-- | hrc/service/console/__init__.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/hrc/service/console/__init__.py b/hrc/service/console/__init__.py new file mode 100644 index 0000000..e11768e --- /dev/null +++ b/hrc/service/console/__init__.py @@ -0,0 +1,41 @@ +import asyncio +import sys +from typing_extensions import override + +from hrc.event import MessageEvent +from hrc.service import Service + +class ConsoleServiceEvent(MessageEvent["ConsoleService"]): + message: str + + @override + def get_sender_id(self) -> None: + return None + + @override + def get_plain_text(self) -> str: + return self.message + + @override + async def reply(self, message: str) -> None: + return await self.service.send(message) + + async def is_same_sender(self) -> bool: + return True + +class ConsoleService(Service[ConsoleServiceEvent, None]): + name: str = "console" + + @override + async def run(self) -> None: + while not self.core.should_exit.is_set(): + print("Please input message: ") # noqa: T201 + message = await asyncio.get_event_loop().run_in_executor( + None, sys.stdin.readline + ) + await self.handle_event( + ConsoleServiceEvent(service=self, type="message", message=message, rule="") + ) + + async def send(self, message: str) -> None: + print(f"Send a message: {message}") # noqa: T201
\ No newline at end of file |
