微信機器人框架:WeRoBot
WeRoBot是一個微信機器人框架,采用MIT協議發布。
Hello World
最簡單的Hello World, 會給收到的每一條信息回復 Hello World
import werobot
robot = werobot.WeRoBot(token='tokenhere')
@robot.handler
def echo(message):
return 'Hello World!'
robot.run()Handlers
WeRoBot會將合法的請求發送給handlers依次執行。
如果某一個Handler返回了非空值,WeRoBot就會根據這個值創建回復,后面的handlers將不會被執行。
你可以通過兩種方式添加handler
import werobot
robot = werobot.WeRoBot(token='tokenhere')
# 通過修飾符添加handler
@robot.handler
def echo(message):
return 'Hello World!'
# 通過`add_handler`添加handler
def echo(message):
return 'Hello World!'
robot.add_handler(echo)Messages
目前WeRoBot共有三種Message:TextMessage , ImageMessage 和 LocationMessage 。他們都繼承自WeChatMessage。
TextMessage的屬性:
| name | value |
|---|---|
| type | 'text' |
| target | 信息的目標用戶。通常是機器人用戶。 |
| source | 信息的來源用戶。通常是發送信息的用戶。 |
| time | 信息發送的時間,一個UNIX時間戳。 |
| content | 信息的主題內容 |
ImageMessage的屬性:
| name | value |
|---|---|
| type | 'image' |
| target | 信息的目標用戶。通常是機器人用戶。 |
| source | 信息的來源用戶。通常是發送信息的用戶。 |
| time | 信息發送的時間,一個UNIX時間戳。 |
| img | 圖片網址。你可以從這個網址下到圖片 |
LocationMessage的屬性:
| name | value |
|---|---|
| type | 'location' |
| target | 信息的目標用戶。通常是機器人用戶。 |
| source | 信息的來源用戶。通常是發送信息的用戶。 |
| time | 信息發送的時間,一個UNIX時間戳。 |
| location | 一個元組。(緯度, 經度) |
| scale | 地圖縮放大小 |
| label | 地理位置信息 |
Replies
目前WeRoBot共有三種Reply: TextReply , ArticlesReply 。他們都繼承自 WeChatReply 。
TextReply 是簡單的文本消息,構造函數的參數如下:
| name | value |
|---|---|
| content | 信息正文。 |
| target | 信息的目標用戶。通常是機器人用戶。 |
| source | 信息的來源用戶。通常是發送信息的用戶。 |
| time | 信息發送的時間,一個UNIX時間戳。默認情況下會使用當前時間。 |
| flag | 如果是True, WeRoBot會對這條消息進行星標。你可以在公眾平臺后臺看到所有的星標消息。 |
你可以在構建Reply時傳入一個合法的 Message 類來自動生成 source 和 target
reply = TextReply(message=message, content='Hello!')
如果你的handler返回了一個字符串, WeRoBot會自動將其轉化為一個文本消息。
ArticlesReply 是圖文消息,構造函數的參數如下:
| name | value |
|---|---|
| content | 信息正文。可為空。 |
| target | 信息的目標用戶。通常是機器人用戶。 |
| source | 信息的來源用戶。通常是發送信息的用戶。 |
| time | 信息發送的時間,一個UNIX時間戳。默認情況下會使用當前時間。 |
| flag | 如果是True, WeRoBot會對這條消息進行星標。你可以在公眾平臺后臺看到所有的星標消息。 |
你需要給 ArticlesReply 添加 Article 來增加圖文。 Article 類位于 werobot.reply.Article 。
Article 的構造函數的參數如下:
| name | value |
|---|---|
| title | 標題 |
| description | 描述 |
| img | 圖片鏈接 |
| url | 點擊圖片后跳轉鏈接 |
注意,微信公眾平臺對圖片鏈接有特殊的要求,詳情可以在消息接口使用指南 里看到。
在構造完一個 Article 后, 你需要通過 ArticlesReply 的 add_article 參數把它添加進去。就像這樣:
from werobot.reply import ArticlesReply, Article
reply = ArticlesReply(message=message)
article = Article(
title="WeRoBot",
desription="WeRoBot是一個微信機器人框架",
img="https://github.com/apple-touch-icon-144.png",
url="https://github.com/whtsky/WeRoBot"
)
reply.add_article(article) 注意,每個ArticlesReply中 最多添加10個Article 。