入门

Hello World

最简单的Hello World, 会给收到的每一条信息回复 Hello World

  1. import werobot
  2. robot = werobot.WeRoBot(token='tokenhere')
  3. @robot.handler
  4. def hello(message):
  5. return 'Hello World!'
  6. # 让服务器监听在 0.0.0.0:80
  7. robot.config['HOST'] = '0.0.0.0'
  8. robot.config['PORT'] = 80
  9. robot.run()

消息处理

WeRoBot 会解析微信服务器发来的消息, 并将消息转换成成 Message 或者是 EventMessage 表示用户发来的消息,如文本消息、图片消息; Event 则表示用户触发的事件, 如关注事件、扫描二维码事件。 在消息解析、转换完成后, WeRoBot 会将消息转交给 Handler 进行处理,并将 Handler 的返回值返回给微信服务器。

在刚才的 Hello World 中, 我们编写的

  1. @robot.handler
  2. def hello(message):
  3. return 'Hello World!'

就是一个简单的 Handler , @robot.handler 意味着 robot 会将所有接收到的消息( 包括 MessageEvent ) 都转交给这个 Handler 来处理。 当然, 你也可以编写一些只能处理特定消息的 Handler

  1. # @robot.text 修饰的 Handler 只处理文本消息
  2. @robot.text
  3. def echo(message):
  4. return message.content
  5. # @robot.image 修饰的 Handler 只处理图片消息
  6. @robot.image
  7. def img(message):
  8. return message.img

使用 Session 记录用户状态

WeRoBot 提供了 Session 功能, 可以让你方便的记录用户状态。 比如, 这个 Handler 可以判断发消息的用户之前有没有发送过消息

  1. @robot.text
  2. def first(message, session):
  3. if 'first' in session:
  4. return '你之前给我发过消息'
  5. session['first'] = True
  6. return '你之前没给我发过消息'

Session 功能默认开启, 并使用 SQLite 存储 Session 数据。 详情请参考 Session 文档

创建自定义菜单

自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。 werobot.client.Client 封装了微信的部分 API 接口,我们可以使用 werobot.client.Client.create_menu() 来创建自定义菜单。 在使用 Client 之前, 我们需要先提供微信公众平台内的 AppID 和 AppSecret

  1. from werobot import WeRoBot
  2. robot = WeRoBot()
  3. robot.config["APP_ID"] = "你的 AppID"
  4. robot.config["APP_SECRET"] = "你的 AppSecret"
  5. client = robot.client

然后, 我们就可以创建自定义菜单了

  1. client.create_menu({
  2. "button":[{
  3. "type": "click",
  4. "name": "今日歌曲",
  5. "key": "music"
  6. }]
  7. })

注意以上代码只需要运行一次就可以了。在创建完自定义菜单之后, 我们还需要写一个 Handler 来响应菜单的点击操作

  1. @robot.key_click("music")
  2. def music(message):
  3. return '你点击了“今日歌曲”按钮'