当前位置:   article > 正文

怎么用Python实现微信自动回复,一文看懂_python 微信自动回复

python 微信自动回复

都什么年代了,不会还有人用itchat吧,itchat早就寄了。在网上搜用Python实现微信自动回复的,搜来搜去全是用itchat。一运行全都不行。无奈只能自己用别的库实现。

  1. #根据预定的csv数据自动回复
  2. import numpy as np
  3. import pandas as pd
  4. from uiautomation import WindowControl
  5. import time
  6. import requests
  7. # 绑定微信主窗口
  8. wx = WindowControl(Name='微信', searchDepth=1) #searchDepth=1参数指定在查找窗口时只搜索直接子级窗口,以提高查找效率
  9. # 切换窗口
  10. wx.ListControl()
  11. wx.SwitchToThisWindow()#ListControl()方法用于列出所有子级窗口,而SwitchToThisWindow()方法则将焦点切换到微信主窗口
  12. # 寻找会话控件绑定
  13. hw = wx.ListControl(Name='会话')
  14. # 通过pd读取数据
  15. df = pd.read_csv('回复数据.csv', encoding='utf-8')
  16. print(df)
  17. conversations = hw.GetChildren() # GetChildren()方法,获取会话列表中的所有子控件。
  18. jilu_num = 0
  19. for conversation in conversations:
  20. contact_name = conversation.Name
  21. if contact_name == '水果巨亨': #改成你想回复的联系人的名字
  22. conversation.Click(simulateMove=False)
  23. message_list = wx.ListControl(Name='消息').GetChildren() # 获取消息列表中的所有子控件
  24. jilu_num = len(message_list)
  25. print(f"原本有{jilu_num}条消息")
  26. # 死循环接收消息
  27. while True:
  28. for conversation in conversations:
  29. contact_name = conversation.Name
  30. if contact_name == '水果巨亨':
  31. #conversation.Click(simulateMove=False)
  32. message_list = wx.ListControl(Name='消息').GetChildren() # 获取消息列表中的所有子控件
  33. new_msg_num = len(message_list)-jilu_num
  34. if new_msg_num != 0:
  35. print(f"有{new_msg_num}条新消息:")
  36. for i in range(jilu_num, len(message_list)):
  37. print(f"正在回复第{i+1}条消息")
  38. #处理每一条消息
  39. every_msg = message_list[i].Name
  40. ##########
  41. # 判断关键字
  42. msg = df.apply(lambda x: x['回复内容'] if x['关键词'] in every_msg else None, axis=1)
  43. # 返回的结果是一个包含处理结果的Series对象,msg和列表差不多
  44. print(f"匹配到的回复内容:{msg}")
  45. msg.dropna(axis=0, how='any', inplace=True) # 这行代码移除回复内容中的空数据(NaN值)
  46. ar = np.array(msg).tolist() # 这行代码将筛选后的回复内容转换为列表
  47. # 能够匹配到数据时
  48. if ar:
  49. # 将数据输入
  50. # 替换换行符号
  51. wx.SendKeys(ar[0].replace('{br}', '{Shift}{Enter}'), waitTime=0)
  52. # 发送消息,回车键
  53. wx.SendKeys('{Enter}', waitTime=1)
  54. # 通过消息匹配检索会话栏的联系人
  55. print(f"回复内容是 {ar[0]}")
  56. #wx.TextControl(SubName=ar[0][:5]).RightClick()
  57. # break
  58. #########不能匹配到数据,用机器人回复
  59. else:
  60. wx.SendKeys('不知道你在说什么', waitTime=0)
  61. wx.SendKeys('{Enter}', waitTime=0)
  62. jilu_num = len(message_list) + 1
  63. print(f"现在一共有{jilu_num}条消息")
  64. else:
  65. print("没有新消息")

效果如下

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/768029?site
推荐阅读
相关标签
  

闽ICP备14008679号