天天看點

itchat入門

itchat初級用法整合

    • 登入
    • 保持運作狀态
    • 登出
    • 發送消息
    • 監聽消息
    • 接收消息
    • 好友資訊相關
    • 群聊相關

登入

itchat.auto_login(hotReload=True,enableCmdQR=True,loginCallback=after_login,exitCallback=after_logout)

使用這個指令可以通過掃描二維碼登陸微信,hotReload=True可以省略,不過這樣一來每次程式執行時都要掃一次碼,有了hotReload=True會生成一個itchat.pkl的檔案儲存登入狀态,可以讓後面的幾次登入不需要再掃碼。

enableCmdQR=True這個參數可以讓二維碼在指令行顯示,可能會由于二維碼過大,指令行顯示不完整,是以可以把後面的True改為顯示的倍數。可省略

loginCallback=函數名,exitCallback=函數名:這兩個參數是在微信登入和退出時分别執行其對應的函數。可省略。

保持運作狀态

itchat.run()

保持運作狀态,不會因為指令執行完畢就結束

登出

itchat,.logout()

強制性退出微信。

發送消息

send

send("Message", toUserName=“UserName”)
           

第一個參數可以發送文本消息,圖檔(img),視訊(vid)和檔案(fil)。文本消息隻要直接編寫文字内容在引号中就可以了,其他的要保證格式“@type@%s”%‘path’,具體示例如下

import itchat

itchat.auto_login()

itchat.send("HelloWorld!")

ithcat.send("@fil@%s" % '/tmp/test.text')

ithcat.send("@img@%s" % '/tmp/test.png')

ithcat.send("@vid@%s" % '/tmp/test.mkv')
           

第二個參數是用來确定發送的對象,如果省去或者是None就是發送給自己,如果是filehelper就是發送給檔案助手。

send_msg

除了上面這種方法,還有另一種方法可以完成同樣的效果,下面我們來看一下。

send_msg('Text Message', toUserName=None)
           

發送文字資訊的方法和上面那種幾乎沒什麼差異,不過一開始就确定了發送到資訊類型。傳回值為True或者False傳回值為True或者False.

import itchat

itchat.auto_login()

itchat.send_msg("helloworld.)
           

send_file

send_file(“fileDir”,
toUserName=None) 
           

fileDir是檔案路徑, 當檔案不存在時, 将列印無此檔案的提醒,傳回值為True或者False。

import itchat 

itchat.auto_login()

itchat.send_file("/tmp/test.txt")
           

send_image

send_image(“fileDir”,toUserName=None)  
           

參數同上

import itchat
itchat.auto_login()itchat.send_img("/tmp/test.jpg")
           

send_video

send_video(fileDir,toUserName=None)
           

參數同上

import itchat
itchat.auto_login()
itchat.send_video("/tmp/test.mp4")
           

監聽消息

除了主動發送資訊外,還可以對資訊進行監控,支援對多種類型的資訊進行監控。

另外,有多個注冊資訊監聽,後注冊的資訊優先級高于先注冊資訊,帶參數資訊高于不帶參數資訊。

資訊類型 解釋
itchat.content.TEXT 文本内容
itchat.content.MAP 位置文本
itchat.content.Card 名片
itchat.content.Note 通知文本
itchat.content.Sharing 分享名稱
itchat.content.RECORDING 錄音
itchat.PICTURE 圖檔/表情
itchat.content.VOICE 錄音
itchat.content.ATTACHMENT 附件
itchat.content.VIDEO 短視訊
itchat.content.FRIENDS 好友邀請
itchat.content.SYSTEM 系統資訊

接收消息

接收消息的方法一般用來作為一個函數的裝飾器,當接收到消息以後執行函數中的指令進行回應。

import itchat

@itchat.msg_register(itchat.content.TEXT)

def reply_msg(msg):

	if msg['Content'] == u'你好':

		itchat.send_msg(msg['User']['NickName'] + "你好啊!", msg['FromUserName'])

if __name__ == '__main__':

	itchat.auto_login()

	itchat.run()
           

好友資訊相關

search_friends

search_friends()
           

括号裡可以填屬性字典相關名稱來擷取指定好友的詳細資訊,如:名稱(name),微信号(wechatAcount),昵稱和微信号的查找可以同時使用。一般直接填寫名稱或者備注名,會優先查找NickName和RemarkName,可以直接查找到,這也是比較友善的方法

import itchat

itchat.auto_login(hotReload=True)

users = itchat.search_friends('大哥')

print(users)

userName=users[0]['UserName']

print(userName)

itchat.send_msg('你好啊',toUserName=userName)
           

群聊相關

監聽群聊資訊

@itchat.msg_register(itchat.content.TEXT,isGroupChat=True)

def reply_msg(msg):

	print("收到一條群資訊:", msg['ActualNickName'], msg['Content'])
           

利用isGroupChat=True 來判定是否是群消息,ActualNickName是發送者昵稱,Content是發送的文本資訊内容。另外,群聊除了通過群名搜尋外還可以通過username來查找,或者兩者搭配使用; 在msg裡有一個isAt字段,可用于判斷是否被人@了。

查找群

def after_login():
	print(itchat.get_chatrooms())  #獲得所有群資訊
	time.sleep(10)
	chat_rooms = itchat.search_chatrooms(name='群名')#根據群名查找群
	if len(chat_rooms) > 0:
 		itchat.send_msg('測試', chat_rooms[0]['UserName'])
           

公衆号相關

大緻上和群聊差不多,搜尋公衆号方法search_mps,監聽公衆号資訊添加isMpChat=True元素

import itchat
@itchat.msg_register(itchat.content.TEXT,isMpChat=True)

def reply_msg(msg):
	print("收到一條公衆号資訊:",msg['User']['NickName'], msg['Content'])
def login_after():
	mps = itchat.search_mps(name='公衆号名')
	if len(mps) > 0:
		print(mps)
		itchat.send_msg('人生苦短',toUserName=mps[0]['UserName'])
if __name__ == '__main__':
	itchat.auto_login(loginCallback=login_after)
 	itchat.run()