微信雲機器人源碼?今天來為大家介紹一個有意思的開源微信個人号 API,它是基于 Python 調用微信網頁版實現,隻需要編寫少量的代碼,就可以完成一個能夠處理所有信息的微信機器人那它到底能實現了什麼功能,接下來為大家一一介紹,我來為大家科普一下關于微信雲機器人源碼?下面希望有你要的答案,我們一起來看看吧!
今天來為大家介紹一個有意思的開源微信個人号 API,它是基于 Python 調用微信網頁版實現,隻需要編寫少量的代碼,就可以完成一個能夠處理所有信息的微信機器人。那它到底能實現了什麼功能,接下來為大家一一介紹。
安裝想要使用它,首先得安裝 itchat 模塊:
$ pip3 install itchat
想要通過 itchat 操作微信接收、發送信息等,第一步需要先登陸微信網頁版,為此 itchat 提供了 auto_login 方法,調用這個方法就能實現微信登陸。首先新建 mychat1.py 文件,代碼如下:
# mychat1.py
import itchat
from itchat.content import TEXT
@itchat.msg_register(TEXT) # 注冊處理文本信息
def simple_reply(msg):
print(msg.TEXT)
itchat.auto_login(hotReload=True) # hotReload=True表示短時間關閉程序後可重連
itchat.run()
然後通過執行命令 python mychat1.py 運行代碼,這時會生成一個名為 QR.png 的二維碼圖片文件,通過掃描這個二維碼就可以登陸微信網頁版了,這時将會顯示如下信息:
Login successfully as 你的微信昵稱
Start auto replying.
如果你向這個登陸後的微信發送文本消息,則會直接把你發送的消息内容在終端打印出來。
關于登陸這裡還有幾點要說明下:
關于自定義登陸所需要的方法,登陸的過程按順序為:
以上簡單介紹了下關于登陸相關的内容,如果想了解更詳細信息請查看官方文檔。
注冊消息方法itchat 将根據接收到的消息類型尋找對應的已經注冊的方法,如果一個消息類型沒有對應的注冊方法,該消息将會被舍棄,就像我們上面代碼隻注冊了 TEXT 類型的消息才會被打印出來。當然在運行過程當中也可以動态注冊方法,注冊方式與結果不變。
消息類型itchat 支持多種類型的消息處理,具體類型和參數詳見下表:
參數 |
類型 |
Text鍵值 |
TEXT |
文本 |
文本内容 |
MAP |
地圖 |
位置文本 |
CARD |
名片 |
推薦人字典 |
NOTE |
通知 |
通知文本 |
SHARING |
分享 |
分享名稱 |
PICTURE |
圖片/表情 |
下載方法 |
RECORDING |
語音 |
下載方法 |
ATTACHMENT |
附件 |
下載方法 |
VIDEO |
小視頻 |
下載方法 |
FRIENDS |
好友邀請 |
添加好友所需參數 |
SYSTEM |
系統消息 |
更新内容的用戶或群聊的UserName組成的列表 |
注冊消息有兩種方法:
# mychat2.py
import itchat
from itchat.content import TEXT
# 不帶具體對象注冊,将注冊為普通消息的回複方法
@itchat.msg_register(TEXT)
def simple_reply(msg):
return 'I received: %s' % msg['Text']
# 帶對象參數注冊,對應消息對象将調用該方法
@itchat.msg_register(TEXT, isFriendChat=True, isGroupChat=True, isMpChat=False)
def text_reply(msg):
msg.user.send('%s: %s' % (msg.type, msg.text))
itchat.auto_login(hotReload=True)
itchat.run()
然後通過執行命令 python mychat2.py 運行代碼,掃碼登陸并向該微信号發消息,這時你會發現你向它發什麼消息,它會同樣回複什麼消息,而控制台并沒有打印消息,很明顯它隻調用了帶參數對象注冊的方法,那麼為什麼不調用第一個不帶對象注冊的方法,下面我們就說說注冊消息的優先級。
注冊消息優先級多次注冊同一類型消息時,遵循以下規則:
依據這兩個規則,上例代碼隻執行第二個帶參數注冊的方法就很正常了,另外 itchat 還支持動态注冊消息,一種方法是生成一個守護線程動态注冊消息,另一種是使用 configured_reply 方法,具體如何實現請參考官方文檔 。
消息回複itchat 提供了五種消息回複的方法:
1. send方法
import itchat
# 可發送多種類型消息
itchat.send(msg='文本消息', toUserName=None)
itchat.send('@img@%s' % '表情圖片.gif')
itchat.send('@fil@%s' % '文件.docx')
itchat.send('@vid@%s' % '測試.mp4')
參數說明:
返回值:
2. send_msg方法
send_msg(msg='文本消息', toUserName=None)
參數說明:
返回值:
3. send_file、send_img、send_video方法
send_file(fileDir, toUserName=None)
send_img(fileDir, toUserName=None)
send_video(fileDir, toUserName=None)
參數說明:
返回值:
通過以上幾種可以看出,幾種方法各有特點,可以随自己喜好使用,不過官方推薦直接使用 send 方法。
消息内容在上面介紹注冊消息時,我們知道了 itchat 支持微信回複的以下幾種類型的消息,包括:微信初始化消息、文本消息、圖片消息、小視頻消息、地理位置消息、名片消息、 語音消息、動畫表情、普通鍊接和應用分享、音樂鍊接、群消息、紅包消息、系統消息。接下來我們選幾種常見消息和大家簡單介紹下。
文本消息文本消息是最常見的消息,基本格式如下:
MsgType: 1 # 消息類型
FromUserName: 發送方ID
ToUserName: 接收方ID
Content: 消息内容
MsgType: 3 # 消息類型
FromUserName: 發送方ID
ToUserName: 接收方ID
MsgId: 用于獲取圖片
Content:
<msg>
<img length="6503" hdlength="0" />
<commenturl></commenturl>
</msg>
MsgType: 62 # 小視頻消息
FromUserName: 發送方ID
ToUserName: 接收方ID
MsgId: 用于獲取小視頻
Content:
<msg>
<img length="6503" hdlength="0" />
<commenturl></commenturl>
</msg>
篇幅有限,先展示這幾種消息結構,有個大概的認識,更多的消息結構請參考官網文檔。
賬号類型我們平時使用微信中,經常接觸的三種賬号,分别為好友、公衆号、群聊。 itchat 為這三種類型的賬号分别提供了整體獲取和根據條件搜索的方法,接下來我們分别介紹下每種類型的使用方式。
好友1、好友的獲取方法為 get_friends,将會返回完整的好友列表:
2、好友的搜索方法為 search_friends,目前有如下四種搜索方式:
3、更新用戶信息的方法為 update_friend,該方法需要傳入用戶的 UserName,返回指定用戶的最新信息。當然也可以傳入 UserName 組成的列表,那麼相應的也會返回指定用戶的最新信息組成的列表。
公衆号1、公衆号的獲取方法為 get_mps,将會返回完整的公衆号列表:
2、公衆号的搜索方法為 search_mps,有兩種搜索方法:
1、群聊的獲取方法為 get_chatrooms,将會返回完整的群聊列表:
2、群聊的搜索方法為 search_chatrooms,有兩種搜索方法,分别是通過傳參 userName 和 name 進行搜索,方式同公衆号搜索相似。
3、群聊用戶列表的獲取方法為 update_chatroom,同時需要關注以下幾點:
4、創建、增加、删除群聊用戶的方法如下所示:
memberList = itchat.get_friends()[1:]
# 創建群聊,topic鍵值為群聊名
chatroomName = itchat.create_chatroom(memberList, '測試群聊')
# 删除群聊内的群友
itchat.delete_member_from_chatroom(chatroomName, memberList[0])
# 增加好友進入群聊
itchat.add_member_into_chatroom(chatroomName, memberList[0], useInvitation=False)
不過還需要注意以下幾點:
本文為大家簡單介紹了 itchat 所提供的大部分功能,通過這些功能我們完全可以非常方便的開發出一個微信聊天機器人。還有目前微信對新賬号有限制,即不能登陸微信網頁版,所以這種賬号也不能通過 itchat 登陸。另外 GitHub 上也有很多基于 itchat 做的開源機器人項目,有興趣可以去搜索,再次感謝各位開源作者的貢獻。
參考
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!