async def handler(agent, chat, message, follower, **scope): follower_state = await scope["db_client"].get_follower_state( follower_id=follower.id) if follower_state is None: follower_state = await scope["db_client"].create_follower_state( follower=follower) data = json.loads(follower_state.data) dialog = Dialog(state=follower_state.state) dialog.handle(text=message.text, data=data) await scope["db_client"].update_follower_state( follower_state=follower_state, state=dialog.state, data=dialog.data, ) keyboard = None if dialog.ANSWERS[dialog.state]: keyboard = TelegramKeyboard( buttons=([answer] for answer in dialog.ANSWERS[dialog.state]), resize=True, one_time=True, ) await agent.a_send_message(chat=chat, text=dialog.answer, keyboard=keyboard)
def test_dialog(state, data, text, expected): dialog = Dialog(state=state) dialog.handle(text=text, data=data) assert dialog.state is expected