程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python 微信自動化工具開發系列06_根據用戶信息自動回復升級版本(2022年8月可用)

編輯:Python

前言

一個需求
需要利用Python+第三方庫wxauto 用於微信上自動獲取聊天信息,從而根據自己需求對信息自動進行二次處理,
比如自動回復,再比如自動發送文件或者其他。
--- 記錄於2022年08月

使用Python3的第三方庫wxauto, 它適用於Windows的微信客戶端

官網: https://github.com/cluic/wxauto


功能

*這篇是微信自動化工具開發系列的第六篇

對上面的第五篇進行了簡單的擴展,對於多個關鍵詞進行多個不同的回復

代碼的主要功能

  • Python自動根據微信群或者微信好友的信息自動回復(對於多個關鍵詞進行多個不同的回復)

    比如: 有人在群裡發了@223,自動回復aaa

    有人發了@123,自動回復bbb

注:wxauto.py裡面的第252行進行修改,否則運行會報錯

微信版本 3.7.5.23 更新導致的問題

需進行下面的修改來進行修復,修改第252行為:

copydata = COPYDICT[i].replace(b'<EditElement type="0" pasteType="0"><![CDATA[ ]]>', key.encode()).replace(b'type="0"', b'type="3"')

原因

這邊使用wxauto來進行開發,而不是itchat,原因如下

itchat都是之前的教程,
本質上是用的微信的網頁端的接口來進行數據交互的。

如果你想要使用itchat的代碼的話,

  • 1、先測試下你的賬號是否還可以登錄微信網頁端

https://wx.qq.com/
騰訊官方雖然沒有正式的發表聲明,但是你搜一下可以看到相關信息
大概從去年開始(時間不太確定),大部分微信賬號都不可以繼續登錄微信網頁端,只有少部分賬號還可以登錄。
原因未知。

  • 2、如果可以登錄微信網頁版 那麼你可以關閉這個博客去網上找下itchat的代碼來學習運行下,

如果登錄失敗,那麼或許你可以嘗試下wxauto也就是這裡所說的方法來運行下。


環境

Windows 10
Python 3.8.10
Windows 10的微信客戶端版本:3.7.5.23 (中文版本)

注:微信客戶端中文版跟英文版都可以
沒什麼太大區別。

建議使用中文版本,英文版本現在微信更新後出現了Bug.

安裝

安裝Python3的第三方庫wxauto,具體步驟如下

官網: https://github.com/cluic/wxauto

在cmd窗口執行下面命令進行安裝

  • 安裝第三方庫wxauto
python3 --version
python3 -m pip install wxauto -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 查看wxauto是否安裝成功
python3 -c "import wxauto; print(wxauto.VERSION)"

使用步驟

1. 新建main06.py

自己修改裡面的配置

from wxauto import *
import time
# 獲取當前微信客戶端
wx = WeChat()
# 獲取會話列表
wx.GetSessionList()
###############################
# 1、獲取默認窗口聊天信息
###############################
def reply_message_if_send_key_word(user, key_word, reply_message):
# 默認是微信窗口當前選中的窗口
# 輸出當前聊天窗口聊天消息
wx.ChatWith(user)
# 獲取最近的聊天記錄
#wx.LoadRecentMessage(1)
wx.LoadRecentMessage(1)
msgs = wx.GetAllMessage
message_value = [msg[1] for msg in msgs]
for index, msg in enumerate(msgs):
if msg[1] ==key_word:
print("*"*20)
if reply_message not in message_value[index:]:
print(f"收到關鍵詞{
key_word},將自動回復以下語句:{
reply_message}")
wx.SendMsg(reply_message)
else:
print("上面已回復,不再進行自動回復,等待新的關鍵詞")
print("*"*20)
#wx.SendMsg(reply_message) 
if __name__ == '__main__':
user = '什麼'
key_word = '@223'
reply_message = 'aaa'
reply_dict = {

'@223': 'aaa',
'@123': 'bbb',
}
while True:
for key_word, reply_message in reply_dict.items():
reply_message_if_send_key_word(user=user, key_word=key_word, reply_message=reply_message)
time.sleep(1)

注: 或者下面這個 這兩個代碼都可以用,功能沒什麼區別

main06.py

from wxauto import *
import time
# 獲取當前微信客戶端
wx = WeChat()
# 獲取會話列表
wx.GetSessionList()
###############################
# 1、獲取默認窗口聊天信息
###############################
def reply_message_if_send_key_word(user, reply_dict):
# 默認是微信窗口當前選中的窗口
# 輸出當前聊天窗口聊天消息
wx.ChatWith(user)
# 獲取最近的聊天記錄
#wx.LoadRecentMessage(1)
wx.LoadRecentMessage(1)
msgs = wx.GetAllMessage
message_value = [msg[1] for msg in msgs]
key_words = [x for x in reply_dict.keys()]
for index, msg in enumerate(msgs):
if msg[1] in key_words:
print("*"*20)
reply_message = reply_dict[msg[1]]
if reply_message not in message_value[index:]:
print(f"收到關鍵詞{
key_word},將自動回復以下語句:{
reply_message}")
wx.SendMsg(reply_message)
else:
print("上面已回復,不再進行自動回復,等待新的關鍵詞")
print("*"*20)
#wx.SendMsg(reply_message) 
if __name__ == '__main__':
user = '什麼'
key_word = '@223'
reply_message = 'aaa'
reply_dict = {

key_word: reply_message,
}
# 多個特定字段對應多個不同的回復
reply_dict = {

'@223': 'aaa',
'@123': 'bbb',
}
while True:
reply_message_if_send_key_word(user=user, reply_dict=reply_dict)
time.sleep(2)

2. 打開微信

  • windows10下打開微信客戶端 (注:如果用的英文,記得點擊左下角Settings-> General 切換為中文)
  • 正常掃碼登錄
  • 打開微信窗口到前面,不要最小化或者縮小到底部菜單

3. 執行代碼

打開cmd窗口,在cmd窗口執行:

如果沒有安裝第三方庫,參考上面的安裝步驟進行安裝再執行下面命令

cd E:\2022Python # 修改為你的 main06.py所在路徑
python3 main06.py

4. 輸出

cmd窗口輸出結果為:

PS E:\2022Python> python3 main06.py
********************
收到關鍵詞@223,將自動回復以下語句:bbb
********************
********************
上面已回復,不再進行自動回復,等待新的關鍵詞
********************
********************
上面已回復,不再進行自動回復,等待新的關鍵詞
********************
********************
上面已回復,不再進行自動回復,等待新的關鍵詞
********************
********************
收到關鍵詞@223,將自動回復以下語句:aaa
********************
********************
上面已回復,不再進行自動回復,等待新的關鍵詞
********************

後續

這邊剛開始寫一下系列文章,想發展下自己的博客和微信公眾號賬號

如果對你有幫助,方便的話可以關注下 博客左側的微信公眾號(點擊我的頭像進入個人中心,位於左側下方)

如有問題的話,也可通過公眾號直接留言,這邊有微信提醒,可以幾小時內及時回復

也可直接在CSDN博客留言或者私信留言,這個沒有微信提醒,所以這邊可能一天或者幾天內給回復

微信公眾號所在位置:打開個人中心也就是這個鏈接
https://blog.csdn.net/xiaozi_001?type=blog
左側下方

如有需求,

想要對微信進行一些自動化操作來提高效率:

比如

  • 自動群發不同聊天信息到幾個微信群裡

  • 自動群發不同的圖片到幾個微信群裡

  • 自動群發不同的文件到幾個微信群裡


  • 如果你本身懂代碼的話

如果你本身懂代碼的話, 直接看第三方庫wxauto的使用,自己來寫就可以了,

博客後續也會基於這個系列繼續更新。

歡迎點贊留言提出問題,方便的話 點贊收藏 關注下微信公眾號

  • 如果你本身不懂代碼

只是想要一個簡單的微信處理工具來滿足自己的需求的話

可以微信公眾號留言或者私信留言,

發下你的具體需求,這邊後續根據你的需求進行下二次開發

如有需求,可關注下博客左側的微信公眾號留言或者直接私信留言

前者可以幾小時內及時回復

後者可能看的不及時,大概一天或者幾天內有回復


其他

如有問題 歡迎提出

如有疑問 歡迎留言

如有作用 歡迎點贊

如有失效 歡迎留言

2022年08月 可用


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved