2021-08-06 19:42:02 +08:00
|
|
|
|
from nonebot.adapters.cqhttp import Bot, MessageEvent
|
|
|
|
|
|
from nonebot.typing import T_State
|
|
|
|
|
|
from nonebot.permission import SUPERUSER
|
|
|
|
|
|
from nonebot import on_command
|
2021-08-17 23:17:08 +08:00
|
|
|
|
from .data_source import check_update, get_latest_version_data
|
2021-08-06 20:14:48 +08:00
|
|
|
|
from services.log import logger
|
|
|
|
|
|
from utils.utils import scheduler, get_bot
|
|
|
|
|
|
from pathlib import Path
|
2021-08-10 23:03:46 +08:00
|
|
|
|
from configs.config import AUTO_UPDATE_ZHENXUN
|
|
|
|
|
|
from nonebot.rule import to_me
|
|
|
|
|
|
import platform
|
|
|
|
|
|
import os
|
2021-08-06 19:42:02 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
update_zhenxun = on_command('检查更新真寻', permission=SUPERUSER, priority=1, block=True)
|
|
|
|
|
|
|
2021-08-10 23:03:46 +08:00
|
|
|
|
restart = on_command('重启', aliases={'restart'}, permission=SUPERUSER, rule=to_me(), priority=1, block=True)
|
|
|
|
|
|
|
2021-08-06 19:42:02 +08:00
|
|
|
|
|
|
|
|
|
|
@update_zhenxun.handle()
|
|
|
|
|
|
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
|
|
|
|
|
try:
|
2021-09-05 02:46:40 +08:00
|
|
|
|
error, code = await check_update(bot)
|
|
|
|
|
|
if error:
|
|
|
|
|
|
logger.error(f'更新真寻未知错误 {error}')
|
|
|
|
|
|
await bot.send_private_msg(
|
|
|
|
|
|
user_id=int(list(bot.config.superusers)[0]),
|
|
|
|
|
|
message=f'更新真寻未知错误 {error}'
|
|
|
|
|
|
)
|
2021-08-06 19:42:02 +08:00
|
|
|
|
except Exception as e:
|
2021-08-06 20:14:48 +08:00
|
|
|
|
logger.error(f'更新真寻未知错误 {type(e)}:{e}')
|
2021-08-06 19:42:02 +08:00
|
|
|
|
await bot.send_private_msg(
|
|
|
|
|
|
user_id=int(list(bot.config.superusers)[0]),
|
|
|
|
|
|
message=f'更新真寻未知错误 {type(e)}:{e}'
|
|
|
|
|
|
)
|
|
|
|
|
|
else:
|
2021-08-10 23:03:46 +08:00
|
|
|
|
if code == 200:
|
|
|
|
|
|
await bot.send_private_msg(
|
|
|
|
|
|
user_id=int(list(bot.config.superusers)[0]),
|
|
|
|
|
|
message=f'更新完毕,请重启真寻....'
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@restart.handle()
|
|
|
|
|
|
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
|
|
|
|
|
if str(platform.system()).lower() == 'windows':
|
|
|
|
|
|
await restart.finish('暂无windows重启脚本...')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@restart.got('flag', prompt='确定是否重启真寻?(重启失败咱们将失去联系,请谨慎!)')
|
|
|
|
|
|
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
|
|
|
|
|
flag = state['flag']
|
2021-09-05 02:21:38 +08:00
|
|
|
|
if flag.lower() in ['true', '是', '好', '确定', '确定是']:
|
2021-08-10 23:03:46 +08:00
|
|
|
|
await restart.send('开始重启真寻..请稍等...')
|
|
|
|
|
|
open('is_restart', 'w')
|
|
|
|
|
|
os.system('./restart.sh')
|
|
|
|
|
|
else:
|
|
|
|
|
|
await restart.send('已取消操作...')
|
2021-08-06 19:42:02 +08:00
|
|
|
|
|
|
|
|
|
|
|
2021-08-06 20:14:48 +08:00
|
|
|
|
@scheduler.scheduled_job(
|
2021-08-10 23:03:46 +08:00
|
|
|
|
"cron",
|
|
|
|
|
|
hour=12,
|
|
|
|
|
|
minute=0,
|
2021-08-06 20:14:48 +08:00
|
|
|
|
)
|
|
|
|
|
|
async def _():
|
2021-08-10 23:03:46 +08:00
|
|
|
|
if AUTO_UPDATE_ZHENXUN:
|
|
|
|
|
|
_version = "v0.0.0"
|
|
|
|
|
|
_version_file = Path() / "__version__"
|
|
|
|
|
|
if _version_file.exists():
|
|
|
|
|
|
_version = (
|
|
|
|
|
|
open(_version_file, "r", encoding="utf8").readline().split(":")[-1].strip()
|
2021-08-06 20:14:48 +08:00
|
|
|
|
)
|
2021-08-17 23:17:08 +08:00
|
|
|
|
data = await get_latest_version_data()
|
|
|
|
|
|
if data:
|
|
|
|
|
|
latest_version = data["name"]
|
2021-08-10 23:03:46 +08:00
|
|
|
|
if _version != latest_version:
|
|
|
|
|
|
bot = get_bot()
|
2021-08-06 20:14:48 +08:00
|
|
|
|
await bot.send_private_msg(
|
|
|
|
|
|
user_id=int(list(bot.config.superusers)[0]),
|
2021-08-10 23:03:46 +08:00
|
|
|
|
message=f'检测到真寻版本更新\n'
|
|
|
|
|
|
f'当前版本:{_version},最新版本:{latest_version}\n'
|
|
|
|
|
|
f'尝试自动更新...'
|
2021-08-06 20:14:48 +08:00
|
|
|
|
)
|
2021-08-10 23:03:46 +08:00
|
|
|
|
try:
|
|
|
|
|
|
code = await check_update(bot)
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
|
logger.error(f'更新真寻未知错误 {type(e)}:{e}')
|
|
|
|
|
|
await bot.send_private_msg(
|
|
|
|
|
|
user_id=int(list(bot.config.superusers)[0]),
|
|
|
|
|
|
message=f'更新真寻未知错误 {type(e)}:{e}\n'
|
|
|
|
|
|
)
|
|
|
|
|
|
else:
|
|
|
|
|
|
if code == 200:
|
|
|
|
|
|
await bot.send_private_msg(
|
|
|
|
|
|
user_id=int(list(bot.config.superusers)[0]),
|
|
|
|
|
|
message=f'更新完毕,请重启真寻....'
|
|
|
|
|
|
)
|
2021-08-06 19:42:02 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|