158 lines
5.2 KiB
Python
158 lines
5.2 KiB
Python
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)
|