日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python微信操控itchat的方法

系統 1864 0

itchat是一個開源的微信個人號接口,使用python調用微信從未如此簡單。

開源地址

https://github.com/littlecodersh/ItChat

文檔:

https://itchat.readthedocs.io/zh/latest/

安裝:

pip3 install itchat

登入與登出

登入并向文件助手發送一句話,登入時會經過掃碼操作,類似于電腦微信登入

            
 import itchat
 #登入并保存登入狀態,實現第一次運行時掃碼,一定時間內再次運行就不用掃碼了,手機微信上將顯示:網頁微信已登入.....
 itchat.auto_login(hotReload=True)
 #發送文本數據到文件助手
 itchat.send("東小東你好123",toUserName="filehelper")
          

登出:

itchat.logout()

注冊登入登出的回調方法

            
 def ldong():
  print('微信登入')
 def edong():
  print('微信登出')
 #登入
 itchat.auto_login(hotReload=True,loginCallback=ldong, exitCallback=edong)
          

命令行二維碼

通過以下命令可以在登陸的時候使用命令行顯示二維碼:

itchat.auto_login(enableCmdQR=True)

部分系統可能字幅寬度有出入,可以通過將enableCmdQR賦值為特定的倍數進行調整:

            
#如部分的linux系統,塊字符的寬度為一個字符(正常應為兩字符),故賦值為2
itchat.auto_login(enableCmdQR=2)
          

默認控制臺背景色為暗色(黑色),若背景色為淺色(白色),可以將enableCmdQR賦值為負值:

itchat.auto_login(enableCmdQR=-1)

可接受監聽的數據類型

消息分類:

圖片或表情(PICTURE)、錄制(RECORDING)、附件(ATTACHMENT)、小視頻(VIDEO)、文本(TEXT),地圖(MAP),名片(CARD),通知(NOTE),分享(SHARING),好友邀請(FRIENDS)、語音(RECORDING)、系統消息(SYSTEM)

獲取消息內容:

可以通過print(msg)方法查看消息里的所有數據,然后進行提取

            
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
 print(msg)
          

息捕獲

針對朋友的消息捕獲

登入時不適用于hotReload=True,因為多次運行會多次注冊自動回復,比如在沒有登出的情況下運行3次程序,就會出現1次接受3次發送的效果

監聽函數只有在對方發送數據時進入

文本

            
 import itchat
 #自動回復
 @itchat.msg_register(itchat.content.TEXT)
 def text_reply(msg):
  return "東小東回復數據:"+msg["Text"]
 #登入
 itchat.auto_login()
 #保持運行
 itchat.run()
          

文件下載

            
 import itchat
 #PICTURE, RECORDING, ATTACHMENT, VIDEO,TEXT
 # 圖片、錄制、附件、視頻、文本
 from itchat.content import PICTURE, RECORDING, ATTACHMENT, VIDEO,TEXT
 @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
 def download_files(msg):
  filedpx="./filex/"+msg["FileName"] #得到文件路徑,目錄需要手動創建
 msg.download(filedpx) #下載
  return "你發送的文件類型"+msg['Type']+" 保存地址為:filex/"+msg.fileName
          

針對群聊的自動監測

如果想添加針對群聊的監測,則在監聽函數加入isGroupChat=True

監聽函數只要有數據發送就會進入,包括自己發送的數據

            
 import itchat
 #只對群消息有效
 @itchat.msg_register(itchat.content.TEXT,isGroupChat=True)
 def text_reply(msg):
  if(msg["Text"]=="11"):
   return "東小東回復數據xx:"+msg["Text"]
 #只對個人用戶有效
 @itchat.msg_register(itchat.content.TEXT)
 def text_reply(msg):
 return "東小東回復數據:"+msg["Text"]
 #登入
 itchat.auto_login()
#保持運行
 itchat.run()
          

@我信息監測

            
 import itchat
 #只對群消息有效
 @itchat.msg_register(itchat.content.TEXT,isGroupChat=True)
 def text_reply(msg):
   #判斷是否是@本人
   if msg["Text"].find("@"+usermsgx["NickName"])==0:
    return "@"+msg.actualNickName+" 東你發的信息為:"+msg.text
 itchat.auto_login()#登入
 usermsgx=itchat.search_friends()#得到當前用戶的信息
 itchat.run()#保持運行
          

針對所有信息來源信息監聽

朋友、群聊、公眾號

            
@itchat.msg_register(TEXT, isFriendChat=True, isGroupChat=True, isMpChat=True)
def simple_reply(msg):
 return 'I received: %s' % msg.text
數據發送
return
          

在接收數據函數里的return “數據” 則是自動確認為回復當前發送用戶數據,可以刪除該句,則不進行數據回復

itchat.send,可以一次性發送多條

參數:(內容,用戶)

返回值:發送結果,是否發送成功,json數據

注意:文件地址不可為中文

內容:可為單獨的字符串內容,其他有【@類型@地址】,類型有圖片(img)、文件(fil)、視頻(vid)

用戶:省略則發個自己,不穩定,msg['FromUserName']表示指定用戶為觸發用戶

            
 res=itchat.send('文本信息的發送......!', toUserName=msg['FromUserName'])
 res=itchat.send('@img@%s' % './filex/zcy.gif', toUserName=msg['FromUserName'])
 res=itchat.send('@fil@%s' % './filex/tt.txt', toUserName=msg['FromUserName'])
 res=itchat.send('@vid@%s' % './filex/videox.mp4', toUserName=msg['FromUserName'])
          

指定類型發送2

參數:(地址,用戶)

返回值:發送結果,是否發送成功,json數據

注意:文件地址不可為中文

            
 bb = itchat.send_msg('文字信息2', toUserName=msg['FromUserName'])
 bb = itchat.send_image('./filex/zcy.gif', toUserName=msg['FromUserName'])
 bb = itchat.send_file('./filex/tt.txt', toUserName=msg['FromUserName'])
 bb = itchat.send_video('./filex/videox.mp4', toUserName=msg['FromUserName'])
 print("返回值:",bb)
msg.user.send()
          

使用與itchat.send()相同,但是可以已經確定toUserName=msg['FromUserName'],不可更換

指定用戶(toUserName):

文件助手(發送給自己,必備): toUserName="filehelper"

發送者: toUserName=msg['FromUserName']

例子:

通過群名向群里發送內容,該微信群需要在運行代碼前進行手動添加到通訊錄

            
import itchat   
 #登入
 itchat.auto_login()
 chatroomName='傻逼群'#群名
 itchat.get_chatrooms(update=True)
 chatrooms = itchat.search_chatrooms(name=chatroomName)
 if len(chatrooms)==0 :
  print('沒有找到群聊:' + chatroomName)
  exit(0)
 else:
  print(chatrooms[0]['UserName'])#輸出群聊標識符
  itchat.send_msg('大家好,這是發送的內容', toUserName=chatrooms[0]['UserName'])#發送消息
 
 #保持運行
 itchat.run()
          

個人的基本信息

獲取本人信息

            
usermsgx=itchat.search_friends()
print(usermsgx)
print(usermsgx["NickName"]) #得到昵稱
          

獲取所有朋友信息

            
friendx=itchat.get_friends()
print(friendx)
          

條件獲取朋友或者自己信息

            
# 獲取特定UserName的用戶信息
 itchat.search_friends(userName='@abcdefg1234567')
 # 獲取任何一項等于name鍵值的用戶
 itchat.search_friends(name='littlecodersh')
 # 獲取分別對應相應鍵值的用戶
 itchat.search_friends(wechatAccount='littlecodersh')
 # 三、四項功能可以一同使用
 itchat.search_friends(name='LittleCoder機器人', wechatAccount='littlecodersh')
          

得到用戶序號

            
@itchat.msg_register([TEXT,MAP])
def text_reply(msg):
 print(msg)
 print(msg["User"]["Uin"])
          

更新用戶數據,通過 UserName ,或者 UserName 列表

            
memberList = itchat.update_friend('@abcdefg1234567')
          

注意:

中文文件名文件上傳

Q: 為什么中文的文件沒有辦法上傳?

A: 這是因為使用requests包會自動將中文文件名編碼為服務器端無法識別的格式,所以需要修改requests包或者使用別的方法上傳文件。

最簡單的方法即將requests包的packages/urlib3中的fields.py中的format_header_param方法改為如下內容:

            
def format_header_param(name, value):
  if not any(ch in value for ch in '"\\\r\n'):
   result = '%s="%s"' % (name, value)
   try:
    result.encode('ascii')
   except UnicodeEncodeError:
    pass
   else:
    return result
  if not six.PY3: # Python 2:
   value = value.encode('utf-8')
  value = email.utils.encode_rfc2231(value, 'utf-8')
  value = '%s="%s"' % (name, value.decode('utf8'))
  return value
          

命令行顯示二維碼

Q: 為什么我在設定了 itchat.auto_login()的enableCmdQR 為True后還是沒有辦法在命令行顯示二維碼?

A: 這是由于沒有安裝可選的包pillow,可以使用右邊的命令安裝:pip install pillow

綜合:

Python微信操控itchat的方法_第1張圖片

實現文本信息的關聯,及可以實時看到所關聯的賬號的聊天信息,當發生聊天數據時會主動將聊天數據發送到主賬號上

            
import itchat
 from itchat.content import PICTURE, RECORDING, ATTACHMENT, VIDEO,TEXT,MAP
 #只對個人用戶有效
 @itchat.msg_register([TEXT])
 def text_reply(msg):
  # 查詢數據的接收者
  touserx="filehelper"#默認為文件助手發送信息
  if msg["ToUserName"]!="filehelper":#如果非文件助手信息
   touserx=itchat.search_friends(userName=msg["ToUserName"])["NickName"]
 inuserx = itchat.search_friends(userName=msg["FromUserName"])["NickName"]#查詢數據的發送者
 totouserx=itchat.search_friends(name='東里個咚')[0]["UserName"] #通過昵稱查詢到username
 texts=msg.text #得到接收的數據
 itchat.send_msg("【"+thisuserx+"】\n"+inuserx+"-->"+touserx+" :\n"+texts,toUserName=totouserx) #發送給目標
 #登入
 itchat.auto_login()
 thisuserx=itchat.search_friends()["NickName"] #得到當前用戶昵稱
 #保持運行
 itchat.run()
          

總結

以上所述是小編給大家介紹的Python微信操控itchat的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 黄冈市| 长白| 刚察县| 晋江市| 清镇市| 临颍县| 渭南市| 蒙山县| 福鼎市| 辛集市| 牟定县| 平利县| 陆川县| 曲麻莱县| 西乡县| 高要市| 绥中县| 柞水县| 垣曲县| 洪江市| 介休市| 专栏| 永和县| 化州市| 波密县| 曲麻莱县| 麦盖提县| 乌兰察布市| 云南省| 镇巴县| 武城县| 成都市| 临武县| 德州市| 北宁市| 葵青区| 石首市| 紫阳县| 淮北市| 皋兰县| 牡丹江市|