mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-06 12:20:00 +08:00
init🎉: 首次提交
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
import httpx
|
||||
|
||||
from zhenxun.services.log import logger
|
||||
|
||||
|
||||
class ResourceDirManager:
|
||||
"""
|
||||
临时文件管理器
|
||||
"""
|
||||
|
||||
temp_path = []
|
||||
|
||||
@classmethod
|
||||
def __tree_append(cls, path: Path):
|
||||
"""递归添加文件夹
|
||||
|
||||
参数:
|
||||
path: 文件夹路径
|
||||
"""
|
||||
for f in os.listdir(path):
|
||||
file = path / f
|
||||
if file.is_dir():
|
||||
if file not in cls.temp_path:
|
||||
cls.temp_path.append(file)
|
||||
logger.debug(f"添加临时文件夹: {path}")
|
||||
cls.__tree_append(file)
|
||||
|
||||
@classmethod
|
||||
def add_temp_dir(cls, path: str | Path, tree: bool = False):
|
||||
"""添加临时清理文件夹,这些文件夹会被自动清理
|
||||
|
||||
参数:
|
||||
path: 文件夹路径
|
||||
tree: 是否递归添加文件夹
|
||||
"""
|
||||
if isinstance(path, str):
|
||||
path = Path(path)
|
||||
if path not in cls.temp_path:
|
||||
cls.temp_path.append(path)
|
||||
logger.debug(f"添加临时文件夹: {path}")
|
||||
if tree:
|
||||
cls.__tree_append(path)
|
||||
|
||||
|
||||
async def get_user_avatar(uid: int | str) -> bytes | None:
|
||||
"""快捷获取用户头像
|
||||
|
||||
参数:
|
||||
uid: 用户id
|
||||
"""
|
||||
url = f"http://q1.qlogo.cn/g?b=qq&nk={uid}&s=160"
|
||||
async with httpx.AsyncClient() as client:
|
||||
for _ in range(3):
|
||||
try:
|
||||
return (await client.get(url)).content
|
||||
except Exception as e:
|
||||
logger.error("获取用户头像错误", "Util", target=uid)
|
||||
return None
|
||||
|
||||
|
||||
async def get_group_avatar(gid: int | str) -> bytes | None:
|
||||
"""快捷获取用群头像
|
||||
|
||||
参数:
|
||||
:param gid: 群号
|
||||
"""
|
||||
url = f"http://p.qlogo.cn/gh/{gid}/{gid}/640/"
|
||||
async with httpx.AsyncClient() as client:
|
||||
for _ in range(3):
|
||||
try:
|
||||
return (await client.get(url)).content
|
||||
except Exception as e:
|
||||
logger.error("获取群头像错误", "Util", target=gid)
|
||||
return None
|
||||
Reference in New Issue
Block a user