Session

你可以通过 Session 实现用户状态的记录。

一个简单的使用 Session 的 Demo

  1. from werobot importWeRoBot
  2. robot =WeRoBot(token=werobot.utils.generate_token())
  3. @robot.text
  4. def first(message, session):
  5. if'last'in session:
  6. return
  7. session['last']= message.content
  8. return message.content
  9. robot.run()

开启/关闭 Session

Session 在 WeRoBot 中默认开启, 并使用 werobot.session.sqlitestorage.SQLiteStorage 作为存储后端。 如果想要更换存储后端, 可以修改 Config 中的 SESSION_STORAGE

  1. from werobot importWeRoBot
  2. from werobot.session.filestorage importFileStorage
  3. robot =WeRoBot(token="token")
  4. robot.config['SESSION_STORAGE']=FileStorage()

如果想要关闭 Session 功能, 只需把 SESSION_STORAGE 设为 False 即可

  1. from werobot importWeRoBot
  2. robot =WeRoBot(token="token")
  3. robot.config['SESSION_STORAGE']=False

修改 Handler 以使用 Session

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

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

而在打开 Session 之后, 如果你的 handler 不需要使用 Session ,可以保持不变; 如果需要使用 Session ,则这个 Handler 需要修改为接受第二个参数: session

  1. @robot.subscribe_event
  2. def intro(message):
  3. return"Hello!"
  4. @robot.text
  5. def hello(message, session):
  6. count = session.get("count",0)+1
  7. session["count"]= count
  8. return"Hello! You have sent %s messages to me"% count

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

更多可用的 Session Storage 详见 Session 对象