mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
88 lines
3.4 KiB
Python
88 lines
3.4 KiB
Python
from typing import Optional
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from configs.config import NICKNAME
|
|
from models.group_info import GroupInfo
|
|
from services.log import logger
|
|
from utils.manager import requests_manager
|
|
from utils.utils import get_bot
|
|
|
|
from ..models.model import RequestResult, Result
|
|
from ..models.params import HandleRequest
|
|
from ..utils import authentication
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/get_request", dependencies=[authentication()])
|
|
def _(request_type: Optional[str]) -> Result:
|
|
try:
|
|
req_data = requests_manager.get_data()
|
|
req_list = []
|
|
if request_type in ["group", "private"]:
|
|
req_data = req_data[request_type]
|
|
for x in req_data:
|
|
req_data[x]["oid"] = x
|
|
req_list.append(RequestResult(**req_data[x]))
|
|
req_list.reverse()
|
|
except Exception as e:
|
|
logger.error("调用API错误", "/get_request", e=e)
|
|
return Result.fail(f"{type(e)}: {e}")
|
|
return Result.ok(req_list, f"{NICKNAME}带来了最新的数据!")
|
|
|
|
|
|
@router.delete("/clear_request", dependencies=[authentication()])
|
|
def _(request_type: Optional[str]) -> Result:
|
|
"""
|
|
清空请求
|
|
:param type_: 类型
|
|
"""
|
|
requests_manager.clear(request_type)
|
|
return Result.ok(info="成功清除了数据")
|
|
|
|
|
|
@router.post("/handle_request", dependencies=[authentication()])
|
|
async def _(parma: HandleRequest) -> Result:
|
|
"""
|
|
操作请求
|
|
:param parma: 参数
|
|
"""
|
|
try:
|
|
result = "操作成功!"
|
|
flag = 3
|
|
if bot := get_bot():
|
|
if parma.handle == "approve":
|
|
if parma.type == "group":
|
|
if rid := requests_manager.get_group_id(parma.id):
|
|
# await GroupInfo.update_or_create(defaults={"group_flag": 1}, )
|
|
if group := await GroupInfo.get_or_none(group_id=str(rid)):
|
|
await group.update_or_create(group_flag=1)
|
|
else:
|
|
group_info = await bot.get_group_info(group_id=rid)
|
|
await GroupInfo.update_or_create(
|
|
group_id=str(group_info["group_id"]),
|
|
defaults={
|
|
"group_name": group_info["group_name"],
|
|
"max_member_count": group_info["max_member_count"],
|
|
"member_count": group_info["member_count"],
|
|
"group_flag": 1,
|
|
},
|
|
)
|
|
flag = await requests_manager.approve(bot, parma.id, parma.type)
|
|
elif parma.handle == "refuse":
|
|
flag = await requests_manager.refused(bot, parma.id, parma.type)
|
|
elif parma.handle == "delete":
|
|
requests_manager.delete_request(parma.id, parma.type)
|
|
if parma.handle != "delete":
|
|
if flag == 1:
|
|
result = "该请求已失效"
|
|
requests_manager.delete_request(parma.id, parma.type)
|
|
elif flag == 2:
|
|
result = "未找到此Id"
|
|
return Result.ok(result, "成功处理了请求!")
|
|
return Result.fail("Bot未连接")
|
|
except Exception as e:
|
|
logger.error("调用API错误", "/get_group", e=e)
|
|
return Result.fail(f"{type(e)}: {e}")
|