这篇文章给大家分享的是有关如何利用Python制作微信小客服的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为拜泉企业提供专业的成都网站建设、做网站,拜泉网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
整体思路:利用自动化测试库达到预期效果。
运行环境:PyCharm Python
码字流程
获取微信的PID
连接到微信
微信的一些基本功能
获取用户发来的消息获取聊天信息用户在聊天界面找到某个用户搜索某个用户向某个用户发送文本信息删除某个用户
微信的一些额外功能
修改备注添加指定申请好友一键添加所有申请好友发送图片至指定用户接收超级用户指令,处理相关任务接收普通用户指令,回复相关内容一键删除所有好友掉线通知超级用户掉线自动重登对接其他接口,完成相关任务收藏信息自动收款判断金额并通知超级用户对接数据库,判断用户是否在使用该功能的期限内一键通知信息至好友指定好友消息免打扰群踢出成员转发信息发送收藏中的内容至用户发送本地文件至用户
获取微信的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')
感谢各位的阅读!关于“如何利用Python制作微信小客服”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!