from typing import Union from fastapi import FastAPI,Header from urllib.parse import unquote from flashSMS import sendFlash from tgMesaage import sendTg import re import pickle import os 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 @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(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)): 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: warntext='[异度世界],微信加群验证码:3399' sendTg(f'用户手机号{phonenumber},开始发送验证码') # 判断用户uid是都触发过短信,不允许触发第2次 if findUid(uid,phonenumber) is True: print('用户uid已存在,不触发短信') else: # 发送闪信 sendFlash(phonenumber,warntext) else: sendTg(f'用户输入:{inputArguments},手机号不正确') # 存储uid和手机号 # return {"appid": appid,"bid": bid,"requestid": requestid,"uid": uid,'inputArguments':inputArguments} return {"err_code": -1,"data_list": [],"outputArguments":'test'}