def OnReceive(self, Sender, ConnID, Data): flag = int.from_bytes(Data[0:4], byteorder='little') # print(flag,type(flag)) if flag in [ 256, 294, ]: return data = Data[4:].decode() data = utility.aes_decode(data, "money888money888") ret = utility.get_dict(data) print(ConnID, '标识:{},已接收到服务器发来的消息:{}'.format(flag, ret))
def OnReceive(self, Sender, ConnID, Data): flag = int.from_bytes(Data[0:4], byteorder='little') if flag in [256, 294, ]: return data = Data[4:].decode() data = utility.aes_decode(data, "money888money888") ret = utility.get_dict(data) if ret.get('is_self') == 1: return print(ConnID, '标识:{},已接收到客户端发来的消息:{}'.format(flag, ret)) # 筛选是否为群聊 if not ret.get('sender').endswith('@chatroom'): return # 筛选具体群聊 if ret.get('sender') == '25573652600@chatroom': tail = "" global tail_count # 处理虚拟货币 if ret.get('type') == 1: label = ret.get('msg').lower() try: response = requests.get('http://rpa.uniner.com:5000/search/%s' % label) data = json.loads(response.text) # print(data) amount = data["tick"]["amount"] count = data['tick']['count'] open = data['tick']['open'] close = data['tick']['close'] low = data['tick']['low'] high = data['tick']['high'] vol = data['tick']['vol'] if tail_count % 5 == 0: tail = "随机小尾巴广告 www.uniner.com" tail_count += 1 msg = '[%s 滚动24小时行情\n' \ '----------------\n' \ '以基础币种计量的交易量 %s\n' \ '交易次数 %s\n' \ '本阶段开盘价 %s\n' \ '本阶段收盘价 %s\n' \ '本阶段最低价 %s\n' \ '本阶段最高价 %s\n' \ '以报价币种计量的交易量 %s\n' \ '----------------\n' \ '%s]' msg = msg % (label.upper(), amount, count, open, close, low, high, vol, tail) data = send_msg(ret.get('sender'), msg) except JSONDecodeError as e: print(e) data = send_msg(ret.get('sender'), '未知币种') finally: self.Send(Sender=Sender, ConnID=ConnID, Data=data) # 处理图片 if ret.get('type') == 3: src_path = ret.get('extra_data') if not os.path.isabs(src_path): return images_path = r'C:\Users\EDZ\PycharmProjects\test\hpsocket_exanple\images' # print('dat文件路径', src_path) if not wait_file(src_path): print(src_path, '未下载成功') return wd = WechatImageDecoder(src_path, images_path) dst_path = wd.run() # print('解密文件路径', dst_path) if not wait_file(dst_path): print(dst_path, '未解密成功') return img_base64 = utility.get_file_base64(dst_path) access_token = "24.d318d985795054273d0546fa890567e8.2592000.1610267722.282335-23048184" headers = { "Content-Type": "application/x-www-form-urlencoded", } args = "image=" + parse.quote(img_base64) + "&id_card_side=front" url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=" + access_token response = requests.post(url=url, headers=headers, data=args) data = json.loads(response.text) # print(data) # tab = data.encode('utf-8') name = data["words_result"]["姓名"]["words"] nation = data["words_result"]["民族"]["words"] address = data["words_result"]["住址"]["words"] id_card = data["words_result"]["公民身份号码"]["words"] born = data["words_result"]["出生"]["words"] sex = data["words_result"]["性别"]["words"] # print(name, sex, born, nation, address, id_card) if tail_count % 5 == 0: tail = "随机小尾巴广告 www.uniner.com" tail_count += 1 text = '[身份证信息\n' \ '----------\n' \ '姓名:%s\n' \ '性别:%s\n' \ '出生年月日:%s\n' \ '民族:%s\n' \ '住址:%s\n' \ '身份证号码:%s\n' \ '----------\n' \ '%s]' % (name, sex, born, nation, address, id_card, tail) data = send_msg(ret.get('sender'), text) self.Send(Sender=Sender, ConnID=ConnID, Data=data) # 处理位置信息 if ret.get('type') == 48: # if not ret.get('thumb_path'): # return msg = ret.get('msg') try: lng = re.search('y="(.+?)"', msg).group(1) lat = re.search('x="(.+?)"', msg).group(1) print(lng, lat) if tail_count % 5 == 0: tail = "随机小尾巴广告 www.uniner.com" tail_count += 1 text = '[经纬度查询\n' \ '----------\n' \ '经度:%s\n' \ '纬度:%s\n' \ '----------\n' \ '%s]' % (lng, lat, tail) data = send_msg(ret.get('sender'), text) except Exception as e: print(e) data = '不是有效地址信息' finally: self.Send(Sender=Sender, ConnID=ConnID, Data=data) if ret.get('sender') == '18551934675@chatroom': if ret.get('type') == 1 and (ret.get('msg') in ['时间','shijian','sj','time','Time','時間']): new_datetime = time.time() start_datetime = time.strptime('{} 09:30:00'.format(time.strftime('%Y-%m-%d', time.localtime())), "%Y-%m-%d %H:%M:%S") start_datetime = time.mktime(start_datetime) end_datetime = time.strptime('{} 18:30:00'.format(time.strftime('%Y-%m-%d', time.localtime())), "%Y-%m-%d %H:%M:%S") end_datetime = time.mktime(end_datetime) to_work_time_difference = int(start_datetime - new_datetime) off_work_time_difference = int(end_datetime - new_datetime) print(to_work_time_difference) print(off_work_time_difference) if to_work_time_difference >= 0: msg = '距离上班班时间还有 %s 秒' % abs(to_work_time_difference) data = send_msg(ret.get('sender'), msg) self.Send(Sender=Sender, ConnID=ConnID, Data=data) elif to_work_time_difference < 0: if off_work_time_difference >= 0: msg = '距离下班时间还有 %s 秒' % off_work_time_difference else: msg = '已经加班 %s 秒' % abs(off_work_time_difference) data = send_msg(ret.get('sender'), msg) self.Send(Sender=Sender, ConnID=ConnID, Data=data) return HPSocket.EnHandleResult.HR_OK
def OnSend(self, Sender, ConnID, Data): flag = int.from_bytes(Data[0:4], byteorder='little') data = Data[8:] data = utility.aes_decode(data, "money888money888") ret = utility.get_dict(data) print(ConnID, '标识:{},已向客户端发送消息:{}'.format(flag, ret))
def OnReceive(self, Sender, ConnID, Data): flag = int.from_bytes(Data[0:4], byteorder='little') if flag in [ 256, 294, ]: return data = Data[4:].decode() data = utility.aes_decode(data, "money888money888") ret = utility.get_dict(data) if ret.get('is_self') == 1: return print(ConnID, '标识:{},已接收到客户端发来的消息:{}'.format(flag, ret)) global statu global n if ret.get('sender') != '25573652600@chatroom': return if statu == 1: # 1.处理位置信息 if ret.get('type') == 48: msg = ret.get('msg') label = re.search('label="(.*?)"', msg) print(label) content['label'] = label statu += 1 else: data = send_msg(ret.get('sender'), '你发送的不是位置信息,请重新发送!') self.Send(Sender=Sender, ConnID=ConnID, Data=data) if statu == 2: # 处理拍照 if ret.get('type') != 3: data = send_msg(ret.get('sender'), '你发送的不是图片,请重新发送!') self.Send(Sender=Sender, ConnID=ConnID, Data=data) src_path = ret.get('extra_data') if not os.path.isabs(src_path): return images_path = r'C:\Users\EDZ\PycharmProjects\test\hpsocket_exanple\images' if not wait_file(src_path): print(src_path, '未下载成功') return wd = WechatImageDecoder(src_path, images_path) dst_path = wd.run() if not wait_file(dst_path): print(dst_path, '未解密成功') return content['img_path'] = dst_path statu += 1 if ret.get('type') != 1: data = send_msg(ret.get('sender'), '输入信息应为文本格式,请重新发送!:') self.Send(Sender=Sender, ConnID=ConnID, Data=data) if statu == 3: data = send_msg(ret.get('sender'), '请输入要拜访的公司名称:') self.Send(Sender=Sender, ConnID=ConnID, Data=data) statu += 1 if statu == 4: # 接收保存的公司名称 company_name = ret.get('msg') print(company_name) content['company_name'] = company_name statu += 1 if statu == 5: text = '您是第一次拜访客户,请选择输入项:\n' \ '1.联系人\n' \ '2.联系方式\n' \ '3.项目摘要\n' \ '4.最新状态\n' \ '5.重新输入\n' \ '6.输入结束\n' data = send_msg(ret.get('sender'), text) self.Send(Sender=Sender, ConnID=ConnID, Data=data) statu += 1 if statu == 6: if ret.get('msg').strip() == 1: data = send_msg(ret.get('sender'), '请输入联系人:') self.Send(Sender=Sender, ConnID=ConnID, Data=data) n = 1 if n == 1: # 保存联系人 contact_person = ret.get('msg') print(contact_person) content['contact_person'] = contact_person if ret.get('msg').strip() == 2: data = send_msg(ret.get('sender'), '请输入联系方式:') self.Send(Sender=Sender, ConnID=ConnID, Data=data) n = 2 if n == 2: # 保存联系方式 contact_details = ret.get('msg') print(contact_details) content['contact_details'] = contact_details if ret.get('msg').strip() == 3: data = send_msg(ret.get('sender'), '请输入项目摘要:') self.Send(Sender=Sender, ConnID=ConnID, Data=data) n = 3 if n == 3: # 保存项目摘要 project_abstract = ret.get('msg') print(project_abstract) content['project_abstract'] = project_abstract if ret.get('msg').strip() == 4: data = send_msg(ret.get('sender'), '请输入最新状态:') self.Send(Sender=Sender, ConnID=ConnID, Data=data) n = 4 if n == 4: # 保存最新状态 latest_status = ret.get('msg') print(latest_status) content['latest_status'] = latest_status if ret.get('msg').strip() == 5: data = send_msg(ret.get('sender'), '请重新输入:') self.Send(Sender=Sender, ConnID=ConnID, Data=data) n = 5 if n == 5: statu -= 1 if ret.get('msg').strip() == 6: n = 6 if n == 6: # 退出 statu += 1 if statu == 7: print("结束") text = '位置:{label},' \ '图片:{img_path},' \ '公司名称:{company_name},' \ '联系人:{contact_person},' \ '联系方式:{contact_details},' \ '项目摘要:{project_abstract},' \ '最新状态:{latest_status}'.format(**content) data = send_msg(ret.get('sender'), text) self.Send(Sender=Sender, ConnID=ConnID, Data=data) # # 筛选是否为群聊 # if not ret.get('sender').endswith('@chatroom'): # return # # 筛选具体群聊 # if ret.get('sender') == '25573652600@chatroom': # tail = "" # global tail_count # # # 处理虚拟货币 # if ret.get('type') == 1: # label = ret.get('msg').lower() # try: # response = requests.get('http://rpa.uniner.com:5000/search/%s' % label) # data = json.loads(response.text) # # print(data) # amount = data["tick"]["amount"] # count = data['tick']['count'] # open = data['tick']['open'] # close = data['tick']['close'] # low = data['tick']['low'] # high = data['tick']['high'] # vol = data['tick']['vol'] # if tail_count % 5 == 0: # tail = "随机小尾巴广告 www.uniner.com" # tail_count += 1 # msg = '[%s 滚动24小时行情\n' \ # '----------------\n' \ # '以基础币种计量的交易量 %s\n' \ # '交易次数 %s\n' \ # '本阶段开盘价 %s\n' \ # '本阶段收盘价 %s\n' \ # '本阶段最低价 %s\n' \ # '本阶段最高价 %s\n' \ # '以报价币种计量的交易量 %s\n' \ # '----------------\n' \ # '%s]' # msg = msg % (label.upper(), amount, count, open, close, low, high, vol, tail) # data = send_msg(ret.get('sender'), msg) # # except JSONDecodeError as e: # print(e) # data = send_msg(ret.get('sender'), '未知币种') # finally: # self.Send(Sender=Sender, ConnID=ConnID, Data=data) # # # 处理图片 # if ret.get('type') == 3: # src_path = ret.get('extra_data') # if not os.path.isabs(src_path): # return # images_path = r'C:\Users\EDZ\PycharmProjects\test\hpsocket_exanple\images' # # print('dat文件路径', src_path) # # if not wait_file(src_path): # print(src_path, '未下载成功') # return # wd = WechatImageDecoder(src_path, images_path) # dst_path = wd.run() # # print('解密文件路径', dst_path) # if not wait_file(dst_path): # print(dst_path, '未解密成功') # return # img_base64 = utility.get_file_base64(dst_path) # # access_token = "24.d318d985795054273d0546fa890567e8.2592000.1610267722.282335-23048184" # headers = { # "Content-Type": "application/x-www-form-urlencoded", # } # args = "image=" + parse.quote(img_base64) + "&id_card_side=front" # url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=" + access_token # response = requests.post(url=url, headers=headers, data=args) # data = json.loads(response.text) # # print(data) # # tab = data.encode('utf-8') # name = data["words_result"]["姓名"]["words"] # nation = data["words_result"]["民族"]["words"] # address = data["words_result"]["住址"]["words"] # id_card = data["words_result"]["公民身份号码"]["words"] # born = data["words_result"]["出生"]["words"] # sex = data["words_result"]["性别"]["words"] # # print(name, sex, born, nation, address, id_card) # if tail_count % 5 == 0: # tail = "随机小尾巴广告 www.uniner.com" # tail_count += 1 # text = '[身份证信息\n' \ # '----------\n' \ # '姓名:%s\n' \ # '性别:%s\n' \ # '出生年月日:%s\n' \ # '民族:%s\n' \ # '住址:%s\n' \ # '身份证号码:%s\n' \ # '----------\n' \ # '%s]' % (name, sex, born, nation, address, id_card, tail) # data = send_msg(ret.get('sender'), text) # self.Send(Sender=Sender, ConnID=ConnID, Data=data) # # # 处理位置信息 # if ret.get('type') == 48: # # if not ret.get('thumb_path'): # # return # msg = ret.get('msg') # try: # lng = re.search('y="(.+?)"', msg).group(1) # lat = re.search('x="(.+?)"', msg).group(1) # print(lng, lat) # if tail_count % 5 == 0: # tail = "随机小尾巴广告 www.uniner.com" # tail_count += 1 # text = '[经纬度查询\n' \ # '----------\n' \ # '经度:%s\n' \ # '纬度:%s\n' \ # '----------\n' \ # '%s]' % (lng, lat, tail) # data = send_msg(ret.get('sender'), text) # except Exception as e: # print(e) # data = '不是有效地址信息' # finally: # self.Send(Sender=Sender, ConnID=ConnID, Data=data) # # if ret.get('sender') == '18551934675@chatroom': # if ret.get('type') == 1 and '时间' in ret.get('msg'): # new_datetime = time.time() # start_datetime = time.strptime('{} 09:30:00'.format(time.strftime('%Y-%m-%d', time.localtime())), # "%Y-%m-%d %H:%M:%S") # start_datetime = time.mktime(start_datetime) # end_datetime = time.strptime('{} 18:30:00'.format(time.strftime('%Y-%m-%d', time.localtime())), # "%Y-%m-%d %H:%M:%S") # end_datetime = time.mktime(end_datetime) # to_work_time_difference = int(start_datetime - new_datetime) # off_work_time_difference = int(end_datetime - new_datetime) # # if to_work_time_difference <= 0: # msg = '距离上班班时间还有 %s 秒' % abs(to_work_time_difference) # data = send_msg(ret.get('sender'), msg) # self.Send(Sender=Sender, ConnID=ConnID, Data=data) # elif to_work_time_difference > 0: # if off_work_time_difference >= 0: # msg = '距离下班时间还有 %s 秒' % off_work_time_difference # else: # msg = '已经加班 %s 秒' % abs(off_work_time_difference) # data = send_msg(ret.get('sender'), msg) # self.Send(Sender=Sender, ConnID=ConnID, Data=data) return HPSocket.EnHandleResult.HR_OK