首页
/
每日頭條
/
生活
/
微信雲機器人源碼
微信雲機器人源碼
更新时间:2024-10-13 00:29:21

微信雲機器人源碼?今天來為大家介紹一個有意思的開源微信個人号 API,它是基于 Python 調用微信網頁版實現,隻需要編寫少量的代碼,就可以完成一個能夠處理所有信息的微信機器人那它到底能實現了什麼功能,接下來為大家一一介紹,我來為大家科普一下關于微信雲機器人源碼?下面希望有你要的答案,我們一起來看看吧!

微信雲機器人源碼(開源微信個人号)1

微信雲機器人源碼

今天來為大家介紹一個有意思的開源微信個人号 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.

如果你向這個登陸後的微信發送文本消息,則會直接把你發送的消息内容在終端打印出來。

關于登陸這裡還有幾點要說明下:

  1. itchat提供了登陸狀态暫存,關閉程序後一定時間内不需要掃碼即可登錄。隻需要在 auto_login 方法中傳入 hotReload=True 即可。
  2. 為了方便在無圖形界面使用itchat,程序内置了命令行二維碼的顯示。隻需要在 auto_login 方法中傳入 enableCmdQR=True 即可。
  3. 可以自定義登陸,比如更改提示語、二維碼出現後郵件發送等。

關于自定義登陸所需要的方法,登陸的過程按順序為:

  • 獲取二維碼uuid,方法名稱:get_QRuuid
  • 獲取二維碼,方法名稱:get_QR
  • 判斷是否已經登陸成功,方法名稱:check_login
  • 獲取初始化數據,方法名稱:web_init
  • 更新微信相關信息(通訊錄、手機登陸狀态),方法名稱:get_friends、show_mobile_login
  • 循環掃描新信息(開啟心跳),方法名稱:start_receiving

以上簡單介紹了下關于登陸相關的内容,如果想了解更詳細信息請查看官方文檔。

注冊消息方法

itchat 将根據接收到的消息類型尋找對應的已經注冊的方法,如果一個消息類型沒有對應的注冊方法,該消息将會被舍棄,就像我們上面代碼隻注冊了 TEXT 類型的消息才會被打印出來。當然在運行過程當中也可以動态注冊方法,注冊方式與結果不變。

消息類型

itchat 支持多種類型的消息處理,具體類型和參數詳見下表:

參數

類型

Text鍵值

TEXT

文本

文本内容

MAP

地圖

位置文本

CARD

名片

推薦人字典

NOTE

通知

通知文本

SHARING

分享

分享名稱

PICTURE

圖片/表情

下載方法

RECORDING

語音

下載方法

ATTACHMENT

附件

下載方法

VIDEO

小視頻

下載方法

FRIENDS

好友邀請

添加好友所需參數

SYSTEM

系統消息

更新内容的用戶或群聊的UserName組成的列表

注冊消息

注冊消息有兩種方法:

  1. 不帶具體對象注冊,将注冊為普通消息的回複方法
  2. 帶對象參數注冊,對應消息對象将調用該方法

# 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')

參數說明:

  • msg:消息内容。'@fil@文件地址'将會被識别為傳送文件,'@img@圖片地址'将會被識别為傳送圖片,'@vid@視頻地址'将會被識别為小視頻。
  • toUserName:發送對象,如果留空将會發送給自己。

返回值:

  • 發送成功:True
  • 失敗:False

2. send_msg方法

send_msg(msg='文本消息', toUserName=None)

參數說明:

  • msg:消息内容,僅文本
  • toUserName:發送對象,如果留空将會發送給自己

返回值:

  • 發送成功:True
  • 失敗:False

3. send_file、send_img、send_video方法

send_file(fileDir, toUserName=None) send_img(fileDir, toUserName=None) send_video(fileDir, toUserName=None)

參數說明:

  • fileDir:文件路徑(不存在該文件時将打印無此文件的提醒)
  • toUserName:發送對象,如果留空将會發送給自己

返回值:

  • 發送成功:True
  • 失敗:False

通過以上幾種可以看出,幾種方法各有特點,可以随自己喜好使用,不過官方推薦直接使用 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,将會返回完整的好友列表:

  • 其中每個好友為一個字典
  • 列表的第一項為本人的賬号信息
  • 傳入 update 鍵為 True 将可以更新好友列表并返回

2、好友的搜索方法為 search_friends,目前有如下四種搜索方式:

  • 僅獲取自己的用戶信息: search_friends()
  • 獲取特定 UserName 的用戶信息: search_friends(userName='好友昵稱')
  • 獲取備注、微信号、昵稱中的任何一項等于name鍵值的用戶:search_friends(name='搜索名稱')
  • 獲取備注、微信号、昵稱分别等于相應鍵值的用戶:search_friends(wechatAccount='搜索名稱')
  • 以上第3和4項功能可以一同使用:itchat.search_friends(name='小白', wechatAccount='littleboy')

3、更新用戶信息的方法為 update_friend,該方法需要傳入用戶的 UserName,返回指定用戶的最新信息。當然也可以傳入 UserName 組成的列表,那麼相應的也會返回指定用戶的最新信息組成的列表。

公衆号

1、公衆号的獲取方法為 get_mps,将會返回完整的公衆号列表:

  • 其中每個公衆号為一個字典
  • 傳入 update 鍵為 True 将可以更新公衆号列表并返回

2、公衆号的搜索方法為 search_mps,有兩種搜索方法:

  • 獲取特定 UserName 的公衆号:search_mps(userName='公衆号名')
  • 獲取名字中含有特定字符的公衆号,返回值為一個字典的列表:search_mps(name='littleboy')
群聊

1、群聊的獲取方法為 get_chatrooms,将會返回完整的群聊列表:

  • 其中每個群聊為一個字典
  • 傳入 update 鍵為 True 将可以更新群聊列表并返回通訊錄中保存的群聊列表
  • 群聊列表為後台自動更新,如果中途意外退出存在極小的概率産生本地群聊消息與後台不同步
  • 為了保證群聊信息在熱啟動中可以被正确的加載,即使不需要持續在線的程序也需要運行 itchat.run()
  • 如果不想要運行上述命令,請在退出程序前調用 itchat.dump_login_status(),更新熱拔插需要的信息

2、群聊的搜索方法為 search_chatrooms,有兩種搜索方法,分别是通過傳參 userName 和 name 進行搜索,方式同公衆号搜索相似。

3、群聊用戶列表的獲取方法為 update_chatroom,同時需要關注以下幾點:

  • 如果想要更新該群聊的其他信息也可以用該方法
  • 群聊在首次獲取中不會獲取群聊的用戶列表,所以需要調用該命令才能獲取群聊的成員
  • 該方法需要傳入群聊的 UserName,返回特定群聊的詳細信息
  • 同樣也可以傳入 UserName 組成的列表,那麼相應的也會返回指定用戶的最新信息組成的列表

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)

不過還需要注意以下幾點:

  • 由于之前通過群聊檢測是否被好友拉黑的程序,目前這三個方法都被嚴格限制了使用頻率
  • 删除群聊需要本賬号為群管理員,否則會失敗
  • 将用戶加入群聊有直接加入與發送邀請,通過 useInvitation 設置
  • 超過40人的群聊無法使用直接加入的加入方式,特别注意
總結

本文為大家簡單介紹了 itchat 所提供的大部分功能,通過這些功能我們完全可以非常方便的開發出一個微信聊天機器人。還有目前微信對新賬号有限制,即不能登陸微信網頁版,所以這種賬号也不能通過 itchat 登陸。另外 GitHub 上也有很多基于 itchat 做的開源機器人項目,有興趣可以去搜索,再次感謝各位開源作者的貢獻。

參考

  • itchat 文檔:https://itchat.readthedocs.io/zh/latest/
,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
新媒體運營是做什麼?
新媒體運營是做什麼?
新媒體運營,是通過現代化移動互聯網手段,通過利用各短視頻平台及内容平台進行産品宣傳、推廣、産品營銷的一系列手段。通過策劃品牌相關的優質、高度傳播性的内容和線上活動,向客戶廣泛或者精準推送消息,提高參與度、知名度,從而充分利用粉絲經濟,達到相應營銷目的。不管是創業做個人自媒體還是到企業内就職,新媒體運...
2024-10-13
巧開鏽鎖
巧開鏽鎖
巧開鏽鎖的材料:普通白紙、鉛筆、一把小刀。巧開鏽鎖步驟:1、把白紙墊在桌子上,把鉛筆芯削成粉末。2、把削下來的鉛筆芯,倒在鎖眼裡,同時也可以把鉛筆芯塗在鑰匙上,然後就可以鑰匙插進去,就像這樣,先反複多插幾次,讓鑰匙和鎖之間充分潤滑,同時破壞掉鐵鏽,最後就可以慢慢的試試左右擰開了。
2024-10-13
什麼是政治條件兵?
什麼是政治條件兵?
政治條件兵就是政治條件較高,現實表現良好,本人及親屬無違法犯罪行為,個人形象較好的兵種。比如到北京衛戍區,在中央,軍隊高層領導身邊和重要部門當警衛人員等,對政治條件要求更高。政治條件兵就是政治條件較高,現實表現良好,本人及親屬無違法犯罪行為,個人形象較好的兵種。政治兵在新兵連的訓練和普通士兵一樣,但...
2024-10-13
三伏天用什麼排濕氣寒氣最好?
三伏天用什麼排濕氣寒氣最好?
01伏天去濕氣寒氣的辦法:1、少吃甜、膩的食物。如果你身體有濕氣少吃甜膩食物,因為甜膩容易轉化為濕氣。2、别吃生冷食物。3、别喝酒。4、可以多吃姜去寒濕。5、可以多吃綠豆、西瓜、扁豆來去濕寒氣。三伏天是一年中最熱的時候,這段時間也是冬病夏治的好時候,非常适合排除體内的寒濕,伏天去濕氣寒氣的辦法:1、...
2024-10-13
日常床墊保養好 優質睡眠不打折
日常床墊保養好 優質睡眠不打折
睡眠是人健康的保證,而睡眠質量的好壞直接體現出身體的好壞,對此很多家庭不惜耗費大量資金選購很好的床墊、床單等床具,希望得到一個優質的睡眠環境,提高睡眠質量。但是花了大價錢購買來的床墊卻不經常打理,這樣的方式不但不會得到優質的睡眠還會對睡眠質量産生負面影響。下面就和小編一起來看看日常床墊保養的方法吧。...
2024-10-13
Copyright 2023-2024 - www.tftnews.com All Rights Reserved