日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

今天來為大家介紹一個有意思的開源微信個人號 API,它是基于 Python/ target=_blank class=infotextkey>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/

分享到:
標簽:API
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定