由于要以微信作一个某学习网站的登陆途径,用小程序就又有一些额外的花费,所以想以微信聊天窗口做些文章,就在网上找了很多关于微信机器人的方法,大多数都是用的老旧并且已经失效的wxpy,没办法了,放弃吗?

由于要以微信作一个某学习网站的登陆途径,用小程序就又有一些额外的花费,所以想以微信聊天窗口做些文章,就在网上找了很多关于微信机器人的方法,大多数都是用的老旧并且已经失效的wxpy,没办法了,放弃吗?

整体思路:利用自动化测试库达到预期效果。

运行环境:PyCharm Python

码字流程

  1. 获取微信的PID
  2. 连接到微信
  3. 微信的一些基本功能
  4. 获取用户发来的消息获取聊天信息用户在聊天界面找到某个用户搜索某个用户向某个用户发送文本信息删除某个用户
  5. 微信的一些额外功能
  6. 修改备注添加指定申请好友一键添加所有申请好友发送图片至指定用户接收超级用户指令,处理相关任务接收普通用户指令,回复相关内容一键删除所有好友掉线通知超级用户掉线自动重登对接其他接口,完成相关任务收藏信息自动收款判断金额并通知超级用户对接数据库,判断用户是否在使用该功能的期限内一键通知信息至好友指定好友消息免打扰群踢出成员转发信息发送收藏中的内容至用户发送本地文件至用户

获取微信的PID

这里用到了psutil库,大概意思是获取所有的进程,遍历挑选出微信的进程ID

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:smart_num_1
# Blog:https://blog.csdn.net/smart_num_1
from psutil import process_iter
def get_pid(): PID = process_iter() name = '' pid_num = 0 for pid_temp in PID: pid_dic = pid_temp.as_dict(attrs = ['pid','name']) if pid_dic ['name'] == 'WeChat.exe': name = pid_dic ['name'] pid_num = pid_dic ['pid'] break if name =='WeChat.exe': return pid_num else : return False

连接到微信

# 创建一个实例对象,Pywinauto中backend有两种:win32和uia,默认为win32。可使用spy++和Inspect工具判断backend适合写哪种。在这里微信为'uia'
self.app = Application(backend = 'uia') # 将 app 连接到已经登陆成功的微信,这里可以用进程ID、句柄、以及程序路径进行连接,此处采用PID
self.app.connect(process = PID ) # 定位到微信窗口
self.win = app[u'微信']

微信的一些基本功能

获取用户发来的消息

def get_text(self): data = '' try: data = self.win.Edit2.get_value() with open('./temporary_text','w',encoding = 'utf-8') as f: f.write(data) except: pass return data #line:4

获取聊天信息用户

def get_users(self): user_lis = [] try: # 定位到信息列表,获取这个对象 conunacation = self.win.child_window(title = "会话",control_type = "List") # 定位到这个位置 position = conunacation.rectangle() mouse.click(button = 'left',coords = (position.left + 100 ,position.top + 10 )) # 定位到列表的位置,取他的子控件,至于为何,列表是一个总的容器,而每个用户都存在这个容器中,固取子控件 users = conunacation.children() for user in users: user_lis.append(user.window_text()) except: pass return user_lis

在聊天界面找到某个用户

def find_user (self ,user = ''): # 找到指定名称用户的按钮 user = self.win.child_window(title = user, control_type = 'Text') # 定位到该按钮,获取它的相对位置 position = user .rectangle() # 模拟点击,coords 是点击的位置 mouse.click (button = 'left',coords = (position.left ,position.top)) sleep(0.3)

搜索某个用户

def search_ueser (self ,user_name = ''): # 找控件的方法如上个函数中介绍,此处不再继续介绍 search = self.win.child_window(title = "搜索", control_type = "Edit") position = search.rectangle() mouse.click(button = 'left', coords = (position.left + 100 ,position.top + 10)) sleep(0.1) mouse.click(button = 'left', coords = (position.left + 100 ,position.top + 10)) # 自带的模块,输入该用户的名字 self.win.type_keys(user_name) sleep(0.6) self.win.type_keys('{ENTER}')

向某个用户发送文本信息

def send_message (self ,texts =''):#line:64 for text in texts .split ('\n'):#line:65 # 这里用到了另外的一个库,因为用pywinauto 自带的输入模块,表情,空格等是自动略过或者识别不出,达不到按原有缩进样式缩进的效果 if text.isalnum(): copy(text.strip()) hotkey ('ctrl', 'v') else: self.win.type_keys(text) sleep(0.1) hotkey ('ctrl', 'enter')#line:67 hotkey ('enter')#line:68

删除某个用户

def delete_user(self ,user =''): user = self.win.child_window(title = user, control_type = 'Text') position = user.rectangle() mouse.click(button = 'right', coords = (position.left - 40 ,position.top)) # 这里右键会弹出菜单,直接点击该菜单中的删除聊天选项 self.app.Menu ['删除聊天'].click_input('left')

微信的一些额外功能

由于此程序的使用原因,牵扯到项目的一些敏感内容,不方便将这些功能全部详细说出,只是大概写一下已经实现了哪些内容,如有人需要相关思路,可联系微信:Be_a_luck_dog

  1. 修改备注
  2. 添加指定申请好友
  3. 一键添加所有申请好友
  4. 发送图片至指定用户
  5. 接收超级用户指令,处理相关任务
  6. 接收普通用户指令,回复相关内容
  7. 一键删除所有好友
  8. 掉线通知超级用户
  9. 掉线自动重登
  10. 对接其他接口,完成相关任务
  11. 收藏信息
  12. 自动收款判断金额并通知超级用户
  13. 对接数据库,判断用户是否在使用该功能的期限内
  14. 一键通知信息至好友
  15. 指定好友消息免打扰
  16. 群踢出成员
  17. 转发信息
  18. 发送收藏中的内容至用户
  19. 发送本地文件至用户

本文地址:https://www.linuxprobe.com/python-wechat-bot.html

使用Python制作专属微信小客服相关推荐

  1. 专属微信二维码python制作_使用Python制作专属微信小客服

    由于要以微信作一个某学习网站的登陆途径,用小程序就又有一些额外的花费,所以想以微信聊天窗口做些文章,就在网上找了很多关于微信机器人的方法,大多数都是用的老旧并且已经失效的wxpy,没办法了,放弃吗? ...

  2. python窗口制作_利用Python制作属于自己的微信小客服

    由于要以微信作一个某学习网站的登陆途径,用小程序就又有一些额外的花费,所以想以微信聊天窗口做些文章,就在网上找了很多关于微信机器人的方法,大多数都是用的老旧并且已经失效的wxpy,没办法了,放弃吗? ...

  3. 计算机毕业设计Python+uniapp基于微信小程序的订房系统(小程序+源码+LW)

    计算机毕业设计Python+uniapp基于微信小程序的订房系统(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ p ...

  4. 计算机毕业设计Python+uniapp基于微信小程序在线抽签系统(小程序+源码+LW)

    计算机毕业设计Python+uniapp基于微信小程序在线抽签系统(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ ...

  5. 微信京东手机怎么联系客服人工服务器,微信人工客服电话是多少?打不通怎么办?...

    全网最新活动请看下方内容或右侧内容! --------------- 微信业务实在是太广泛了,不少孩子也喜欢拿大人的手机玩,可是玩着玩着可能就有一些游戏需要充值,孩子们不懂便充值了,这时就会急需要联系 ...

  6. 微信哪个电话能转人工服务器,如何联系微信人工客服?掌握好窍门,只需30秒可接通,亲测有效...

    原标题:如何联系微信人工客服?掌握好窍门,只需30秒可接通,亲测有效 很多人都会使用微信,但是使用过程中难免会遇到问题,比如账号封号.转错账.支付问题等.如果在机器人自动回答中解决不了问题,想找人工客 ...

  7. java微信多客服_微信多客服聊天功能怎么实现?

    原标题:微信多客服聊天功能怎么实现? 朋友小赵是很早的一批代购,微信号上添加了不少顾客.随着业务不断扩展,口碑越来越好,客户数量越来越多.经常有顾客在微信上咨询,日子久了,小赵就有点吃不消了.于是小赵 ...

  8. 微信多客服如何设置快捷回复(高级玩法总结)

    在微信生态,使用公众号小程序等,同时每天会产生很多重复的咨询,如何在微信上实现更高效的快捷回复?把常用语,回答文档等便捷化,标准化对答,避免以往的复制粘贴工作方式,是我们不得不面对的一个问题. 应用内 ...

  9. 如何接通qq人工语音服务器,如何联系微信人工客服?掌握好窍门,只需30秒可接通,亲测有效...

    原标题:如何联系微信人工客服?掌握好窍门,只需30秒可接通,亲测有效 很多人都会使用微信,但是使用过程中难免会遇到问题,比如账号封号.转错账.支付问题等.如果在机器人自动回答中解决不了问题,想找人工客 ...

最新文章

  1. 让你二十年后仍是人才
  2. 前沿视频教室——《C#图解教程》是本好书,强烈推荐!
  3. PowerShell在Exchange2010下快速创建动态通讯组
  4. GTS--阿里巴巴分布式事务全新解决方案
  5. 怎么通俗易懂地解释贝叶斯网络和它的应用?
  6. log加时间 securecrt_SecureCRT配置自动记录日志
  7. ios系统脚本服务器加速,提高iOS项目的编译速度
  8. 失败 php_PHP+Mysql 实现数据库增删改查
  9. 【Python-2.7】如何判断对象是否为可迭代?
  10. 【luogu P3931 SAC E#1 - 一道难题 Tree】 题解
  11. c语言实现--单向循环链表操作
  12. 电信光猫华硕路由器端口转发
  13. 终于把泰山OFFICE的MAC本地库问题都解决了
  14. 蚂蚁区块链的新计划与BAT的新动向 |链捕手
  15. 自然数分解:任何一个自然数m的立方均可写成m个连续奇数之和。编程实现:输入一自然数 n,求组成 n3的 n个连续奇数。
  16. bootstrap 详细教程笔记
  17. 揭秘!“真假美猴王事件”其实是如来的一次运维事故
  18. 简单的Java代码实现给QQ邮箱发邮件
  19. HDU 4602 Partition 规律题
  20. 计算机网络自顶向下第一章知识点总结(上)

热门文章

  1. python中return0与return1_return 0 和return 1的区别
  2. 全球主要语言缩写对照
  3. originPro2021(3)添加图例导出图片图例不完全
  4. ios视频直播没有音频问题
  5. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pym
  6. ant-design-vue对起始时间的校验
  7. docker版mongodb数据同步到elasticsearch
  8. 第五章 动态规划法(必做题)
  9. matlab p图,【MATLAB】P图神器,初露锋芒:第一周作业(剧透)
  10. Win10下如何修改系统用户目录名称