97 lines
3.4 KiB
Python
97 lines
3.4 KiB
Python
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
|
||
from fastapi.responses import JSONResponse
|
||
|
||
|
||
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 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:
|
||
sendTg(f'用户输入:{inputArguments},手机号不正确,或者uid参数异常')
|
||
|
||
# 存储uid和手机号
|
||
# return {"appid": appid,"bid": bid,"requestid": requestid,"uid": uid,'inputArguments':inputArguments}
|
||
content = {"err_code": -1,"data_list": [],"outputArguments":'test'}
|
||
headers = { "Content-Type":"application/json"}
|
||
return JSONResponse(content=content, headers=headers)
|