1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2025-02-17 10:53:57 +00:00
royalnet/keipack/utils/conversation.py

46 lines
1.4 KiB
Python
Raw Normal View History

2019-12-10 00:39:33 +01:00
from royalnet.commands import CommandInterface
2019-12-09 02:22:29 +01:00
from .emotion import Emotion
2019-12-10 00:39:33 +01:00
2019-12-09 02:22:29 +01:00
class Conversation:
2019-12-10 00:39:33 +01:00
def __init__(self, interface: CommandInterface):
2019-12-09 02:22:29 +01:00
self.generator = self._generator()
2019-12-10 00:39:33 +01:00
self.interface: CommandInterface = interface
self._person = None
self._session = None
self._message = None
2019-12-10 02:24:58 +01:00
self._previous = None
2019-12-09 02:22:29 +01:00
async def _generator(self):
yield
raise NotImplementedError()
@classmethod
2019-12-10 00:39:33 +01:00
async def create(cls, interface: CommandInterface):
conv = cls(interface=interface)
2019-12-09 02:22:29 +01:00
await conv.generator.asend(None)
return conv
2019-12-10 02:24:58 +01:00
async def next(self, session, person, message, previous):
2019-12-10 00:39:33 +01:00
self._session = session
self._person = person
self._message = message
2019-12-10 02:24:58 +01:00
self._previous = previous
2019-12-10 00:39:33 +01:00
reply = await self.generator.asend(None)
2019-12-09 02:22:29 +01:00
return reply
# noinspection PyTupleAssignmentBalance
class ExampleConversation(Conversation):
async def _generator(self):
2019-12-10 00:39:33 +01:00
yield
yield Emotion.HAPPY, "Ciao!"
response = await self.interface.call_herald_event("discord", "discord_cv")
yield Emotion.SURPRISED, f"Ci sono {len(response['guild']['members'])} persone in RYG."
yield Emotion.NEUTRAL, "Questa è una conversazione di prova."
yield await ExampleConversation.create(self.interface)
yield Emotion.WORRIED, "Questo non dovrebbe mai venire fuori."