예제 #1
0
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)
예제 #2
0
def test_dialog(state, data, text, expected):
    dialog = Dialog(state=state)
    dialog.handle(text=text, data=data)
    assert dialog.state is expected