博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中文编程,最精致的python访客登记系统实例项目,微信机器人不再只当人工智障------05
阅读量:1887 次
发布时间:2019-04-26

本文共 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.感觉如果是有稿费的话,可以骗好多期的稿费呢!

感谢各位阅读,望勿喷.

转载地址:http://chgbf.baihongyu.com/

你可能感兴趣的文章
网页端数据库操作界面-Html页面(1)
查看>>
Python爬虫 百度热搜热点
查看>>
excel的常用函数(二)
查看>>
excel文本函数
查看>>
阿里云ECS服务器-Windows Server 2012 R2/2016/2019无法安装.NET Framework 3.5.1或语言包的解决方法
查看>>
编程程软件测试思维方式:如何科学制定测试计划
查看>>
BLE蓝牙4.0串口调试助手
查看>>
树莓派WIFI设置
查看>>
在树莓派上安装GUI的FreeRadius(Raspberry PI based FreeRadius Server with GUI)
查看>>
Linux下EasyPanel版本安装及升级
查看>>
raspberry pi(树莓派) + easycap d60 视频采集
查看>>
WebRTC
查看>>
rfc5766-turn-server NAT
查看>>
webrtc详细教程
查看>>
Android IOS WebRTC 音视频开发总结
查看>>
报表图表样式
查看>>
android模板图例
查看>>
树莓派网线直连
查看>>
复合材料培训(I第七期)
查看>>
复合材料生活中的应用
查看>>