from typing import Union from fastapi import FastAPI, Header,BackgroundTasks from urllib.parse import unquote from flashSMS import sendFlash from tgMesaage import sendTg import re import pickle import os from fastapi.responses import JSONResponse import asyncio app = FastAPI() # 判断uid是否存在 def findUid(uiddata, phoneNum): isFind = False newDict = {} if os.path.exists("data.txt"): # print('文件存在') with open("data.txt", "rb") as f: newDict = pickle.load(f) if newDict[uiddata] is not None: print("newDict[uid]", newDict[uiddata]) isFind = True else: newDict[uiddata] = phoneNum with open("data.txt", "wb") as f: pickle.dump(newDict, f) isFind = False return isFind else: # print('文件不存在') isFind = False newDict[uiddata] = phoneNum with open("data.txt", "wb") as f: pickle.dump(newDict, f) return isFind # findUid('test','13243889782') # 正则查找11位手机号 def findPhoneNum(text): pattern = re.compile(r"1[356789]\d{9}") # strs = '小明的手机号是13987692110,你明天打给他' result = pattern.findall(text) print(result) # ['13987692110'] if len(result) > 0: return result[0] else: return None def resData(inputArguments,uid): print("inputArguments", inputArguments) # uid:唯一标识用户的openid # print("appid", appid, "bid", bid, "requestid", requestid, "uid", uid) # uid='wxx' # 要处理url编码问题decode try: inputArguments = unquote(inputArguments, "utf-8") except: inputArguments = "" # 正则获取11位手机号 phonenumber = findPhoneNum(inputArguments) print("phonenumber", phonenumber) # # phonenumber='13243889782' if phonenumber is not None and uid is not None: warntext = "[异度世界],微信加群验证码:3399" # sendTg(f"用户手机号{phonenumber},开始发送验证码") # 判断用户uid是都触发过短信,不允许触发第2次 if findUid(uid, phonenumber) is True: print("用户uid已存在,不触发短信") # sendTg(f"用户{uid}已存在,不触发短信") else: # 发送闪信 sendFlash(phonenumber, warntext) else: print(f"用户输入:{inputArguments},手机号不正确,或者uid参数异常") # sendTg(f"用户输入:{inputArguments},手机号不正确,或者uid参数异常") @app.get("/") # def read_root(): # return {"Hello": "World"} def read_items( appid: Union[str, None] = Header(default=None), bid: Union[str, None] = Header(default=None), requestid: Union[str, None] = Header(default=None), uid: Union[str, None] = Header(default=None), ): print("console :,", "appid", appid, "bid", bid, "requestid", requestid, "uid", uid) return {"appid": appid, "bid": bid, "requestid": requestid, "uid": uid} # 微信对话-用户输入 @app.get("/input",) async def getphonenum( background_tasks: BackgroundTasks, inputArguments: Union[str, None] = None, appid: Union[str, None] = Header(default=None), bid: Union[str, None] = Header(default=None), requestid: Union[str, None] = Header(default=None), uid: Union[str, None] = Header(default=None) ): err_code=0 outputArguments='' print("inputArguments", inputArguments) # uid:唯一标识用户的openid # print("appid", appid, "bid", bid, "requestid", requestid, "uid", uid) # uid='wxx' # 要处理url编码问题decode try: inputArguments = unquote(inputArguments, "utf-8") except: inputArguments = "" # 正则获取11位手机号 phonenumber = findPhoneNum(inputArguments) print("phonenumber", phonenumber) # # phonenumber='13243889782' if phonenumber is not None and uid is not None: warntext = "[异度世界],微信加群验证码:3399" # sendTg(f"用户手机号{phonenumber},开始发送验证码") # 判断用户uid是都触发过短信,不允许触发第2次 if findUid(uid, phonenumber) is True: err_code=-1 print("用户uid已存在,不触发短信") # sendTg(f"用户{uid}已存在,不触发短信") else: # 发送闪信 # sendFlash(phonenumber, warntext) # 后台发送 background_tasks.add_task(sendFlash,phonenumber,warntext) else: err_code=-1 print(f"用户输入:{inputArguments},手机号不正确,或者uid参数异常") # sendTg(f"用户输入:{inputArguments},手机号不正确,或者uid参数异常") # 存储uid和手机号 # return {"appid": appid,"bid": bid,"requestid": requestid,"uid": uid,'inputArguments':inputArguments} if err_code==0: outputArguments='验证码发送成功' else: outputArguments='验证码发送失败,请检查手机号格式,或其他异常' # 成功的响应 1成功 2失败 content = {"err_code": err_code,"data_list": [{"outputArguments":outputArguments}]} headers = {"Content-Type": "application/json"} return JSONResponse(content=content, headers=headers)