中文编程,最精致的python访客登记系统实例项目,微信机器人不再只当人工智障------05
发布日期:2021-06-29 15:32:00
浏览次数:3
分类:技术文章
本文共 8096 字,大约阅读时间需要 26 分钟。
中文编程,最精致的python访客登记系统实例项目,微信机器人不再只当人工智障------05 - 浩海泛舟的文章 - 知乎 https://zhuanlan.zhihu.com/p/51276692
泛舟上一篇画了一幅看着头晕的流程图以后,一夜思考.好吧,其实比之前都睡得早.由于文字信息的步骤判断有五个,再加上图片判断,就算按步骤来,每步判断,一样是这么复杂的情况,所以就算了,就按这个流程图来吧.今天直接上代码.不知各位读者能否看得懂?欢迎给泛舟留言…..
先看流程图,大致是一样的,有细节上的改动,我上传到网盘了. 链接: 提取码:yd9h
这里是代码:
# -*- coding: utf-8 -*-"""Created on Mon Nov 30 17:48:12 2018模块 itchat ,中文测试@author: 浩海泛舟"""import time as 包_时间import itchat as 包_微信机器人import 身份证识别 as 包_身份证识别 #import 包名不能是中文import pandas as 包_科学计算from pandas.core.frame import DataFrame as 包_制表# =============================================================================# def 方法_步骤1关键字处理(消息,回复微信号的机器码):# if 消息['Text'] == '来访登记':# 回复 = 包_微信机器人.send('请给我发送清晰的身份证图片,以便提取身份证信息!',公司微信机器码)# print(回复['BaseResponse']['ErrMsg'])# #记录任务记录表,添加步骤1.# 任务记录表.append('步骤1')# else:# 回复 = 包_微信机器人.send('上一次操超时或没有对应的关键字,您是需要登记来访信息吗?请重新输入关键字:来访登记',公司微信机器码)# print(回复['BaseResponse']['ErrMsg'])# #改写任务记录表,只保留第一项时间项.# 任务记录表 = 任务记录表[0:1]# return# ============================================================================= def 方法_更新excel记录(数据): #读取excel文档 电子表格1 = './excel/访客登记表.xlsx' 数据表1 = 包_科学计算.read_excel(电子表格1, sheet_name=None)['Sheet1'] #数据 = [['张一','sxxx0089','面试','2018-11-30 14:35']] 数据表 = [] 数据表.append(数据) 数据表2 = 包_制表(数据表) 数据表2.columns = ['姓名','身份证号码','来访目的','来访时间'] #合并两个表 数据列 = [数据表1,数据表2] 数据表3 = 包_科学计算.concat(数据列) 数据表3.to_excel(电子表格1,index = False)def 方法_图片检测(消息,回复微信号的机器码): if 消息['Type'] != 'Text': 图片名称 = 消息['FileName'].split('.')[0] #图片名称分割,去掉扩展名 图片路径 = './pic/%s.jpg'%图片名称 print(图片路径) 消息['Text'](图片路径) 图片 = 包_身份证识别.方法_获取图片码(图片路径) #print(图片) try: 姓名,性别,民族,出生日期,地址,身份证号码 = 包_身份证识别.方法_获取身份证信息(图片) 回复 = 包_微信机器人.send('姓名:%s \n性别:%s \n民族:%s \n出生日期:%s \n地址:%s \n身份证号码:%s \n请确认身份证信息是否正确 \n请回复 是或否' %(姓名,性别,民族,出生日期,地址,身份证号码),公司微信机器码) print(回复['BaseResponse']['ErrMsg']) 信息列表 = [姓名,性别,民族,出生日期,地址,身份证号码] return 信息列表 except: 回复 = 包_微信机器人.send('图片处理失败,请发送正确的身份证图片,或者选择更清晰的身份证图片发送!',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) return else: print('信息类型错误,请输入图片类信息') return 包_微信机器人.auto_login(hotReload=True) # itchat.auto_login(hotReload=True) 推出程序后暂存登陆状态,即一段时间不用扫码。#获取公司微信号机器码,用于后面作判断朋友列表 = 包_微信机器人.search_friends(name = '公司微信号')公司微信机器码 = 朋友列表[0]['UserName']#print(朋友列表)#创建任务记录表回复信息记录 = ''任务记录表 = []身份证信息临时表 = []来访目的 = ''访客信息记录表 = []#时间戳时间戳 = int(包_时间.time())#时间戳添加到任务记录第一项任务记录表.append(时间戳)#注册信息类型,作用是当微信收到文本信息,或者图片信息时,执行下面的程序.@包_微信机器人.msg_register([包_微信机器人.content.TEXT,包_微信机器人.content.PICTURE])def 方法_消息处理(消息): #使用全局变量 global 回复信息记录 global 任务记录表 global 访客信息记录表 global 身份证信息临时表 global 来访目的 #判读是否公司微信号 if str(消息['FromUserName']) == 公司微信机器码: print('判断成功!') #判断时间 消息时间 = int(消息['CreateTime']) 任务记录表长度 = len(任务记录表) if 0 < (消息时间-任务记录表[0]) < 301: #判读时间差,是不是5分钟之内. if 消息['Type'] != 'Text': #如果接收到图片信息 if 任务记录表长度 == 1: 回复 = 包_微信机器人.send('上一次操超时或没有对应的关键字,您是需要登记来访信息吗?请重新输入关键字:来访登记',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) elif 任务记录表长度 == 2: 信息列表 = 方法_图片检测(消息,公司微信机器码) 身份证信息临时表 = 信息列表[:] 任务记录表[0] = 消息时间 任务记录表.append('步骤2') #回复信息记录 = '请确认身份证信息是否正确 \n请回复 是或否' else: 回复 = 包_微信机器人.send(回复信息记录,公司微信机器码) print(回复['BaseResponse']['ErrMsg']) else: #如果接受到文字信息 if 任务记录表长度 == 1: #记录步骤0 if 消息['Text'] == '来访登记': 回复 = 包_微信机器人.send('请给我发送清晰的身份证图片,以便提取身份证信息!',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) #记录任务记录表,添加步骤1. 任务记录表[0] = 消息时间 任务记录表.append('步骤1') 回复信息记录 = '请给我发送清晰的身份证图片,以便提取身份证信息!' else: 回复 = 包_微信机器人.send('上一次操超时或没有对应的关键字,您是需要登记来访信息吗?请重新输入关键字:来访登记',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) elif 任务记录表长度 == 2: #记录步骤1 回复 = 包_微信机器人.send(回复信息记录,公司微信机器码) print(回复['BaseResponse']['ErrMsg']) elif 任务记录表长度 == 3: #记录步骤2 if 消息['Text'] in ['是','否']: if 消息['Text'] == '是': 回复 = 包_微信机器人.send('请输入来访目的',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) 任务记录表[0] = 消息时间 任务记录表.append('步骤3') 访客信息记录表 = [身份证信息临时表[0],身份证信息临时表[-1]] 回复信息记录 = '请输入来访目的' else: 回复 = 包_微信机器人.send('请重新发送清晰身份证图片',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) 任务记录表[0] = 消息时间 任务记录表.pop() #删除任务列表最后一项,即步骤2 回复信息记录 = '请重新发送清晰身份证图片' else: 回复 = 包_微信机器人.send('请确认身份证信息是否正确 \n请回复 是或否',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) elif 任务记录表长度 == 4: #记录步骤3 回复 = 包_微信机器人.send('确认来访目的是否正确,请输入 是或否 ',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) 任务记录表.append('步骤4') 来访目的 = 消息['Text'] 回复信息记录 = '确认来访目的是否正确,请输入 是或否 ' elif 任务记录表长度 == 5: #记录步骤4 if 消息['Text'] in ['是','否']: if 消息['Text'] == '是': 回复 = 包_微信机器人.send('正在登记来访信息!',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) 任务记录表[0] = 消息时间 任务记录表.append('步骤5') 访客信息记录表.append(来访目的) 来访时间 = 包_时间.strftime("%Y-%m-%d %H:%M",包_时间.localtime()) 访客信息记录表.append(来访时间) 方法_更新excel记录(访客信息记录表) 任务记录表 = 任务记录表[0:1] 回复 = 包_微信机器人.send('登记完成,谢谢!',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) else: 回复 = 包_微信机器人.send('请重新发送来访目的',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) 任务记录表[0] = 消息时间 任务记录表.pop() #删除任务列表最后一项,即步骤4 回复信息记录 = '请重新发送来访目的' else: 回复 = 包_微信机器人.send('确认来访目的是否正确,请输入 是或否 ',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) else: #判读时间差,是不是5分钟之内. if 消息['Type'] != 'Text': 回复 = 包_微信机器人.send('上一次操超时或没有对应的关键字,您是需要登记来访信息吗?请重新输入关键字:来访登记',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) else: if 消息['Text'] == '来访登记': 回复 = 包_微信机器人.send('请给我发送清晰的身份证图片,以便提取身份证信息!',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) #记录任务记录表,添加步骤1. 任务记录表[0] = 消息时间 任务记录表.append('步骤1') else: 回复 = 包_微信机器人.send('上一次操超时或没有对应的关键字,您是需要登记来访信息吗?请重新输入关键字:来访登记',公司微信机器码) print(回复['BaseResponse']['ErrMsg']) #改写任务记录表,只保留第一项时间项. 任务记录表 = 任务记录表[0:1] else: print('不是公司账号,不处理!')if __name__ == '__main__': 包_微信机器人.auto_login() 包_时间.sleep(1) 包_微信机器人.send("文件助手你好哦", toUserName="filehelper") 包_微信机器人.run()
这段代码吸收了第三期身份证检测的代码,重新按流程写的.看着是不是一堆麻?
没事,泛舟会在下一篇进行解析,然后接着做代码优化.
Ps.感觉如果是有稿费的话,可以骗好多期的稿费呢!
感谢各位阅读,望勿喷.
转载地址:https://codeinchinese.blog.csdn.net/article/details/89630349 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月28日 12时47分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
如果不能用Python执行机器学习,那该用什么呢?
2019-04-29
不论何时,互联网从业者一直幸福着~
2019-04-29
mysql用户口令中含有特殊字符@的情况下,如何正确链接数据库
2019-04-29
SpringFox接口文档API DOC
2019-04-29
netty优化策略
2019-04-29
架构师知识体系全景图
2019-04-29
guava中EventBus(事件总线)源码分析与使用
2019-04-29
程序员成神之路文章目录
2019-04-29
SASS软件的成熟度模型总结
2019-04-29
一次搞定redis使用
2019-04-29
最全架构设计实践方法论: 微服务
2019-04-29
Linux下简单几步安装AI开发环境-ROS(超有意思)
2019-04-29
linux入门--磁盘管理之分区、格式化与挂载
2019-04-29
开发必备:HTTP 及 TLS
2019-04-29
如何设计自己的第一个加密交易机器人?
2019-04-29
TKDE 2020 | 综述:基于知识图谱的推荐系统
2019-04-29
休息时间!哪些业余活动能提升开发人员的技能?
2019-04-29
把人脑“森林”上传到计算机:人类脑计划只是一个科幻野心?
2019-04-29
智力测试:如何超越动物之智?
2019-04-29
事关人类生存?为什么要探寻AI系统的可解释性?
2019-04-29