This commit is contained in:
hackrobot
2024-07-21 14:31:44 +08:00
parent 1b6d488688
commit 1bdd3dbc19
4 changed files with 57 additions and 15 deletions

View File

@@ -15,6 +15,8 @@ from fastapi.staticfiles import StaticFiles
# from app import tgMessage # type: ignore #发送tg消息
from datetime import datetime
import requests
from tentcentSMS import sendSms
import random
# 初始化数据库
models.Base.metadata.create_all(bind=engine)
@@ -50,9 +52,10 @@ def get_db():
# def root():
# return {"message": "Hello World"}
def sengTgmesage(message):
url = "http://192.168.31.38:8521/send_message"
data = {"message":message}
data = {"message": message}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=data, headers=headers)
try:
@@ -61,13 +64,13 @@ def sengTgmesage(message):
except requests.exceptions.JSONDecodeError:
print("Response content is not in JSON format")
print("Response content:", response.text)
@app.get("/hello")
def hello():
# response = f"你好,\n..........................\n一名开发者\n副业:跨境电商\n#公众号:异度世界\n..........................\n回复关键词,了解更多:\n1. 微信机器人\n2. 数字游民\n3. 加群\n..........................\n[该消息是接受好友自动回复]"
response = f"你好,\n..........................\n一名开发者\n副业:跨境电商\n#公众号:异度世界\n..........................\n回复关键词,了解更多:\n1. 数字游民\n..........................\n[该消息是接受好友自动回复]"
return PlainTextResponse(content=response)
@@ -98,7 +101,7 @@ def tgMessagefun(openid: Optional[str] = None, db: Session = Depends(get_db)):
message = f'openid: {openid}-未关联,在{current_time}访问网页'
print(message)
sengTgmesage(message)
# tgMessage.sendTg(message)
@@ -137,7 +140,6 @@ def generateqr(url="http://nomad.hackrobot.cn",
# url="http://192.168.31.219:10086"
if wxid:
url += f"?wxid={wxid}"
# 创建二维码
qr = qrcode.QRCode(version=1, box_size=5, border=2) # 调整二维码大小
@@ -204,7 +206,7 @@ def add_user(nickname: Optional[Any] = None,
response = f"{nickname}你好,\n..........................\n一名开发者\n副业:跨境电商\n#公众号:异度世界\n..........................\n回复关键词,了解更多:\n1. 数字游民\n..........................\n[该消息是接受好友自动回复]"
# 关键词回复
if keyword == '加群' or keyword =="数字游民" or keyword =="3" or keyword =="1":
if keyword == '加群' or keyword == "数字游民" or keyword == "3" or keyword == "1":
print("keyword==加群")
combined_image_path = generateqr(url="http://nomad.hackrobot.cn",
wxid=wxid,
@@ -220,15 +222,17 @@ def add_user(nickname: Optional[Any] = None,
elif keyword == '活动':
print("keyword==活动")
response = f"活动正在筹备中"
combined_image_path = generateqr(url="http://nomad.hackrobot.cn",
wxid=wxid,
group_image_path="images/meetupqr.jpg")
combined_image_path = generateqr(
url="http://nomad.hackrobot.cn",
wxid=wxid,
group_image_path="images/meetupqr.jpg")
return FileResponse(combined_image_path)
elif keyword == 'qrcode':
print("keyword==qrcode")
combined_image_path = generateqr(url="http://nomad.hackrobot.cn",
# wxid='qrcode',
group_image_path="images/nomadqr.jpg")
combined_image_path = generateqr(
url="http://nomad.hackrobot.cn",
# wxid='qrcode',
group_image_path="images/nomadqr.jpg")
return FileResponse(combined_image_path)
else:
print('其他keyword')
@@ -276,3 +280,37 @@ def update_user(identifier: str,
}
# 获取手机号=>生成验证码
@app.post("/get_verification_code/")
def get_verification_code(wxid: str,
phone_number: str,
db: Session = Depends(get_db)):
verification_code = '{:04d}'.format(random.randint(0, 9999))
user = db.query(models.User).filter(models.User.wxid == wxid).first()
if not user:
raise HTTPException(status_code=404, detail="User not found")
user.phone_number = phone_number
user.verification_code = verification_code
db.commit()
return {
"message": "Verification code sent",
"verification_code": verification_code
}
# 验证码校验
@app.post("/verify_code/")
def verify_code(phone_number: str, code: str, db: Session = Depends(get_db)):
user = db.query(
models.User).filter(models.User.phone_number == phone_number).first()
if not user:
raise HTTPException(status_code=404, detail="User not found")
if user.verification_code == code:
return {"message": "Verification successful"}
else:
raise HTTPException(status_code=400,
detail="Invalid verification code")

View File

@@ -20,6 +20,8 @@ class User(Base):
ebook = Column(Boolean, default=False) # 新增电子书字段
activity_status = Column(String, default="0") # 新增活动报名字段
vip_member = Column(Boolean, default=False) # 新增VIP会员字段
verification_code = Column(String, index=True) # 新增验证码字段
phone_number = Column(String, index=True, unique=True) # 新增手机号字段
def sengTgmesage(message):

View File

@@ -12,6 +12,8 @@ class UserBase(BaseModel):
ebook: Optional[bool] = None # 新增电子书字段
activity_status: Optional[str] = None # 新增活动报名字段
vip_member: Optional[bool] = None # 新增VIP会员字段
verification_code: Optional[bool] = None #新增验证码字段
class UserCreate(UserBase):
pass

View File

@@ -16,7 +16,7 @@ import random
# phoneNum="+8613243889782"
def sendSms(phoneNum):
def sendSms(phoneNum,verification_code=None):
try:
# 必要步骤:
# 实例化一个认证对象入参需要传入腾讯云账户密钥对secretIdsecretKey。
@@ -77,7 +77,7 @@ def sendSms(phoneNum):
# 模板参数: 模板参数的个数需要与 TemplateId 对应模板的变量个数保持一致,,若无模板参数,则设置为空
# 随机4位数字
verification_code = '{:04d}'.format(random.randint(0, 9999))
# verification_code = '{:04d}'.format(random.randint(0, 9999))
req.TemplateParamSet = [verification_code]
# 下发手机号码,采用 E.164 标准,+[国家或地区码][手机号]
# 示例如:+8613711112222 其中前面有一个+号 86为国家码13711112222为手机号最多不要超过200个手机号