当前位置:   article > 正文

python+wxauto实现微信助手

wxauto

前言

之前一直太忙,老是不能及时回复朋友的信息,所以就想着做一个可以自动回复朋友的机器人,查了许多资料,发现itachat只能写网页版,但微信没有网页版了,也看了itchat-uos,但仅支python2.7和python3.5,但我是python3.7,所以。。。(此处是我的痛),所以我选择wxauto,还有一个技术是基于hook的,可以看这篇文章基于hook的python机器人,彻底取代itchat,还有wxpy,有兴趣的朋友可自行查阅。

如何安装wxauto

使用Pycharm的库自行导入

from wxauto import *

或者使用pip安装wxauto,只需要在终端入以下代码:

pip install wxauto

 启动微信客户端

扫码登录你的微信客户端,我还使用了天行数据的api接口,来实现定时发送晚安心语,早上每日一言。注册天行数据在下面的data中填写你自己的key

  1. import requests
  2. from wxauto import *
  3. from urllib import request, parse
  4. import time
  5. import json
  6. class autoReply():
  7. def __init__(self):
  8. # 获取当前微信客户端
  9. self.wx = WeChat()
  10. # 天行数据接口格式
  11. self.headers = {
  12. 'Content-type': 'application/x-www-form-urlencoded'
  13. }
  14. # 填写你自己的密钥
  15. self.data = {
  16. "key": "you key",
  17. }

重写GetLastMessage方法

由于wxauto实现的功能太少,无法实现其自动回复,所以要重写GetLastMessage方法,还有wxauto其他的方法见文章GitHub - cluic/wxauto: Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,持续更新中

  1. def GetLast_Message(self, user):
  2. # 获取user的最新一条消息
  3. i = -1
  4. messages = self.wx.GetAllMessage
  5. while True:
  6. if messages[i][0] == user:
  7. message = messages[i]
  8. return message
  9. i = i - 1

实现定时发送

  1. # 定时发送早上每日一言,晚安!
  2. def send_time(self, time1, time2):
  3. t = time.strftime('%H:%M:%S', time.localtime())
  4. if t == time1:
  5. # 每日一言接口
  6. url2 = 'https://api.xygeng.cn/one'
  7. data = parse.urlencode(self.data)
  8. req = request.Request(url=url2, headers=self.headers, data=bytes(data, encoding="utf-8"))
  9. res = request.urlopen(req)
  10. json_data = json.load(res)
  11. print(json_data)
  12. if json_data["code"] == 200:
  13. message = json_data['data']['content']
  14. message = '每日一言:' + message
  15. self.wx.SendMsg(message)
  16. else:
  17. self.wx.SendMsg('每日一言')
  18. elif t == time2:
  19. # 天行数据的晚安心语接口
  20. url1 = "https://apis.tianapi.com/wanan/index"
  21. data = parse.urlencode(self.data)
  22. req = request.Request(url=url1, headers=self.headers, data=bytes(data, encoding="utf-8"))
  23. res = request.urlopen(req)
  24. json_data = json.load(res)
  25. if json_data["code"] == 200:
  26. message = json_data['result']['content']
  27. self.wx.SendMsg(message)
  28. else:
  29. self.wx.SendMsg('晚安')

最后实现回复信息

  1. def reply_message(self, user):
  2. #机器人接口
  3. url = 'https://v.api.aa1.cn/api/api-xiaoai/talk.php'
  4. # 打开user聊天框
  5. self.wx.ChatWith(user)
  6. #获取user的最后一条信息
  7. a = self.GetLast_Message(user)
  8. b = 0
  9. while True:
  10. # 定时发送
  11. time1 = '08:00:00' # 早上时间
  12. time2 = '22:00:00' # 晚上时间
  13. self.send_time(time1, time2)
  14. # 自动回复
  15. message = self.GetLast_Message(user)
  16. # 修改自动回复的第一句
  17. if message != a and b != 0:
  18. res = requests.get(url=url, params="msg=" + message[1])
  19. self.wx.SendMsg(res.text)
  20. a = message
  21. elif message != a and b == 0:
  22. self.wx.SendMsg("主人不在,有什么问题我可以为你解决哦!")
  23. b=b+1
  24. if __name__ == '__main__':
  25. x = autoReply()
  26. # 输入你要自动回复的朋友的名字
  27. x.reply_message('The quiet coder')

总结

之前本来就只想做个自动回复算了,但看代码就几行解决了,所以就多做了每日一言,晚安,如果觉得多余的话,把send_time方法删除就行了,由于wxauto实现的功能实在是太少了,所以只能实现对某个人的自动回复,我也尝试过使用wxauto底层的代码方法去实现,但太难了,所以就打住了,若你们有更好的方法实现全部的自动回复的话,希望在下面的评论区留下你的见解。

最后资料整理不易,不奢求能进各位的收藏夹,只希望各位大佬们能留个赞

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