This commit is contained in:
hackrobot
2024-04-11 00:10:08 +08:00
parent 90b8506f6a
commit cd36fd281a
3 changed files with 90 additions and 59 deletions

63
crud.py
View File

@@ -5,6 +5,7 @@ import models, schemas
import json
import time
# 通过id获取用户
def get_user(db: Session, user_id: int):
return db.query(models.User).filter(models.User.id == user_id).first()
@@ -14,9 +15,11 @@ def get_user(db: Session, user_id: int):
def get_user_by_openId(db: Session, openId: str):
return db.query(models.User).filter(models.User.openId == openId).first()
# 通过openId岔村用户
def get_user_by_h5openid(db: Session, h5openid: str):
return db.query(models.User).filter(models.User.h5openid == h5openid).first()
return db.query(
models.User).filter(models.User.h5openid == h5openid).first()
# 通过wxid岔村用户
@@ -31,28 +34,44 @@ def get_users(db: Session, skip: int = 0, limit: int = 100):
# 创建用户
# user:schemas.UserCreate
# **user
def create_user(db: Session, user:schemas.User):
# def create_user(db: Session, user):
db_user = models.User(
wxid=user.wxid,
openId=user.openId,
sex=user.sex,
country=user.country,
province=user.province,
sourceStr=user.sourceStr,
usertype=user.usertype,
nickname=user.nickname,
wxaccount=user.wxaccount,
remark=user.remark,
smallhead=user.smallhead,
bighead=user.bighead,
labels=user.labels,
source=user.source,
v1=user.v1
)
# **user
def create_user(db: Session, user: schemas.User):
# def create_user(db: Session, user):
db_user = models.User(wxid=user.wxid,
openId=user.openId,
sex=user.sex,
country=user.country,
province=user.province,
sourceStr=user.sourceStr,
usertype=user.usertype,
nickname=user.nickname,
wxaccount=user.wxaccount,
remark=user.remark,
smallhead=user.smallhead,
bighead=user.bighead,
labels=user.labels,
source=user.source,
v1=user.v1)
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user
# 更新用户字段
def update_user_field(db: Session, user_id: str, openId=None, h5openid=None):
user = get_user(db, user_id)
if user:
# 更新字段值
# 存储小程序openid
if openId:
user.openId = openId
if h5openid:
user.h5openid = h5openid
# 提交更改
db.commit()
db.refresh(user)
return user
return False

84
main.py
View File

@@ -28,6 +28,9 @@ import utils
import requests
import config
from urllib.parse import quote, unquote
import re
models.Base.metadata.create_all(bind=engine)
@@ -134,35 +137,42 @@ def read_users(wxid, db: Session = Depends(get_db)):
# 群-异度星球 49187487591@chatroom chatroom
def h5group(nickname, db: Session = Depends(get_db)):
newtext = unquote(nickname, 'utf-8')
pattern = r'收到(\w+)的在看'
print(newtext)
# 判断是否在群中
inGroup = False
groupList = WXBotService.get_group_members_list(
robot_wxid=config.account_wxid, from_wxid=config.chatroomId)
# print('groupList', groupList)
for groupItem in groupList['data']:
if groupItem['nickname'] == nickname:
inGroup = True
if inGroup:
return {"code": 200, "success": "fail", "message": "已经在群聊中"}
else:
new_wxid = None
allFriend = WXBotService.get_address_list(config.account_wxid)
for friendItem in allFriend['data']["contactList"]:
if friendItem['nickname'] == nickname:
new_wxid = friendItem['wxid']
else:
# print('通过nickname查不到wxid')
pass
if new_wxid:
WXBotService.add_group_members_40_more(
robot_wxid=config.account_wxid,
from_wxid=config.chatroomId, #异度星球群
new_wxid=new_wxid)
print('new_wxid--', new_wxid)
return {"code": 200, "success": "ok", "message": "群聊邀请已发送"}
matches = re.findall(pattern, newtext)
if matches:
print("匹配到的结果:", matches)
# 判断是否在群中
inGroup = False
groupList = WXBotService.get_group_members_list(
robot_wxid=config.account_wxid, from_wxid=config.chatroomId)
# print('groupList', groupList)
for groupItem in groupList['data']:
if groupItem['nickname'] == matches:
inGroup = True
if inGroup:
return {"code": 200, "success": "fail", "message": "已经在群聊中"}
else:
return {"code": 200, "success": "ok", "message": "查不到nickname"}
new_wxid = None
allFriend = WXBotService.get_address_list(config.account_wxid)
for friendItem in allFriend['data']["contactList"]:
if friendItem['nickname'] == matches:
new_wxid = friendItem['wxid']
else:
# print('通过nickname查不到wxid')
pass
if new_wxid:
WXBotService.add_group_members_40_more(
robot_wxid=config.account_wxid,
from_wxid=config.chatroomId, #异度星球群
new_wxid=new_wxid)
print('new_wxid--', new_wxid)
return {"code": 200, "success": "ok", "message": "群聊邀请已发送"}
else:
return {"code": 200, "success": "ok", "message": "查不到nickname"}
else:
print("未找到匹配项,或者有特殊字符")
# 创建用户
@@ -334,17 +344,17 @@ def kp(event_data):
# new_wxid='wxid_4413224132412')
# 发送小程序
utils.sendminiProgram(data, account_wxid, wxid, planetXml)
# utils.sendminiProgram(data, account_wxid, wxid, planetXml)
# H5链接
# WXBotService.send_link_message(
# account_wxid,
# wxid,
# title="欢迎加入微信群",
# desc="请查看规则",
# url=f'https://link.hackrobot.cn?wxid={wxid}',
# pic=
# "https://www.hackrobot.cn/wp-content/uploads/2023/05/cropped-cropped-Screenshot-2023-05-22-at-17.26.38.png"
# )
WXBotService.send_link_message(
account_wxid,
wxid,
title="欢迎加入微信群",
desc="请查看规则",
url=f'https://link.hackrobot.cn?wxid={wxid}',
pic=
"https://www.hackrobot.cn/wp-content/uploads/2023/05/cropped-cropped-Screenshot-2023-05-22-at-17.26.38.png"
)
# if msg in ['腾讯云']:
# # 发送小程序

View File

@@ -38,6 +38,8 @@ def saveWxidInfo(account_wxid, wxid,openId=None,h5openid=None):
db_user = crud.get_user_by_wxid(db=SessionLocal(), wxid=wxid)
if db_user:
print("wxid already registered")
print("开始更新数据表")
crud.update_user_field(db=SessionLocal(),user_id=wxid,openId=openId,h5openid=h5openid)
# 更新数据
# return db_user
else: