Session
==========

WeRoBot 0.4.0 中增加了功能强大的 Session 系统，你可以通过 Session 轻松实现用户状态的记录，享受如同 Web 开发般的便捷。

一个简单的使用 Session 的 Demo ::

    robot = werobot.WeRoBot(token=werobot.utils.generate_token(),
                            enable_session=True)

    @robot.text
    def first(message, session):
        if 'last' in session:
            return
        session['last'] = message.content
        return message.content

    robot.run()

开启 Session
----------------

想要开启 Session ，在实例化 :class:`WeRoBot` 的时候需要传入 ``enable_session`` 和 ``session_storage`` 两个参数：

+ ``enable_session`` ： 必须为 True （打开 Session ）
+ ``session_storage`` ： 可选，一个 Session Storage 实例。默认是 :class:`werobot.session.filestorage.FileStorage` 。

修改 Handler 以使用 Session
--------------------------------

没有打开 Session 的时候，一个标准的 WeRoBot Handler 应该是这样的 ::

    @robot.text
    def hello(message):
        return "Hello!"

而在打开 Session 之后， 这个 Handler 需要修改为接受第二个参数： ``session`` ::

    @robot.text
    def hello(message, session):
        count = session.get("count", 0) + 1
        session["count"] = count
        return "Hello! You have sent %s messages to me" % count

传入的 ``session`` 参数是一个标准的 Python 字典。

在修改完 Handler 之后， 你的微信机器人就拥有 Session 系统了 :)

可用的 Session Storage
-----------------------

.. module:: werobot.session.filestorage

.. autoclass:: FileStorage

.. module:: werobot.session.mongodbstorage

.. autoclass:: MongoDBStorage

.. module:: werobot.session.redisstorage

.. autoclass:: RedisStorage

.. module:: werobot.session.saekvstorage

.. autoclass:: SaeKVDBStorage