mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-14 21:52:56 +08:00
97 lines
2.9 KiB
Python
97 lines
2.9 KiB
Python
import os
|
|
import time
|
|
|
|
from nonebot.permission import SUPERUSER
|
|
from nonebot.plugin import PluginMetadata
|
|
from nonebot.rule import to_me
|
|
from nonebot.utils import run_sync
|
|
from nonebot_plugin_alconna import Alconna, on_alconna
|
|
from nonebot_plugin_apscheduler import scheduler
|
|
from nonebot_plugin_session import EventSession
|
|
|
|
from zhenxun.configs.path_config import TEMP_PATH
|
|
from zhenxun.configs.utils import PluginExtraData
|
|
from zhenxun.services.log import logger
|
|
from zhenxun.utils.enum import PluginType
|
|
from zhenxun.utils.message import MessageUtils
|
|
from zhenxun.utils.utils import ResourceDirManager
|
|
|
|
__plugin_meta__ = PluginMetadata(
|
|
name="清理数据",
|
|
description="清理已添加的临时文件夹中的数据",
|
|
usage="""
|
|
清理临时数据
|
|
""".strip(),
|
|
extra=PluginExtraData(
|
|
author="HibiKier",
|
|
version="0.1",
|
|
plugin_type=PluginType.SUPERUSER,
|
|
).to_dict(),
|
|
)
|
|
|
|
|
|
_matcher = on_alconna(
|
|
Alconna("清理临时数据"),
|
|
rule=to_me(),
|
|
permission=SUPERUSER,
|
|
priority=5,
|
|
block=True,
|
|
)
|
|
|
|
|
|
ResourceDirManager.add_temp_dir(TEMP_PATH, True)
|
|
|
|
|
|
@_matcher.handle()
|
|
async def _(session: EventSession):
|
|
await MessageUtils.build_message("开始清理临时数据...").send()
|
|
size = await _clear_data()
|
|
await MessageUtils.build_message(
|
|
f"共清理了 {size / 1024 / 1024:.2f}MB 的数据..."
|
|
).send()
|
|
logger.info(
|
|
f"清理临时数据完成,共清理了 {size / 1024 / 1024:.2f}MB 的数据...",
|
|
session=session,
|
|
)
|
|
|
|
|
|
@run_sync
|
|
def _clear_data() -> float:
|
|
logger.debug("开始清理临时文件...")
|
|
size = 0
|
|
dir_list = [dir_ for dir_ in ResourceDirManager.temp_path if dir_.exists()]
|
|
for dir_ in dir_list:
|
|
logger.debug(f"尝试清理文件夹: {dir_.absolute()}", "清理临时数据")
|
|
dir_size = 0
|
|
for file in os.listdir(dir_):
|
|
file = dir_ / file
|
|
if file.is_file():
|
|
try:
|
|
if time.time() - os.path.getatime(file) > 10:
|
|
file_size = os.path.getsize(file)
|
|
file.unlink()
|
|
size += file_size
|
|
dir_size += file_size
|
|
logger.debug(f"移除临时文件: {file.absolute()}", "清理临时数据")
|
|
except Exception as e:
|
|
logger.error(
|
|
f"清理临时数据错误,临时文件夹: {dir_.absolute()}...",
|
|
"清理临时数据",
|
|
e=e,
|
|
)
|
|
logger.debug(f"清理临时文件夹大小: {size / 1024 / 1024:.2f}MB", "清理临时数据")
|
|
return float(size)
|
|
|
|
|
|
@scheduler.scheduled_job(
|
|
"cron",
|
|
hour=1,
|
|
minute=1,
|
|
)
|
|
async def _():
|
|
size = await _clear_data()
|
|
logger.info(
|
|
f"自动清理临时数据完成,共清理了 {size / 1024 / 1024:.2f}MB 的数据...",
|
|
"定时任务",
|
|
)
|