Skip to content

Commit 4ece68a

Browse files
committed
✨ 新增更新本插件的命令
1 parent 5e4d780 commit 4ece68a

2 files changed

Lines changed: 72 additions & 18 deletions

File tree

__init__.py

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,29 @@
11
from typing import Union
22

3-
from nonebot.internal.matcher import Matcher
4-
from nonebot.params import CommandArg
5-
6-
from .captcha.captcha import gain_num
7-
from .handle.ssbq_handler import handle_ssbq, sub_list, get_subs
8-
from .handle.coin_handle import mhy_bbs_coin, bbs_auto_coin
9-
from .handle.sign_handle import mhy_bbs_sign, bbs_auto_sign
10-
from .handle.sr_sign_handle import sr_bbs_auto_sign
11-
from .config.config import config
12-
from .utils.logger import Logger
13-
from .web import web_api, web_page # noqa
14-
15-
from LittlePaimon.database import MihoyoBBSSub, PrivateCookie, DailyNoteSub
16-
from LittlePaimon.utils.message import CommandPlayer, CommandUID, CommandSwitch
17-
18-
from nonebot import on_command, Bot
19-
from nonebot.typing import T_State
3+
from LittlePaimon.database import DailyNoteSub, MihoyoBBSSub, PrivateCookie
4+
from LittlePaimon.utils.message import CommandPlayer, CommandSwitch, CommandUID
5+
from nonebot import Bot, on_command
206
from nonebot.adapters.onebot.v11 import (
21-
Message,
227
GroupMessageEvent,
8+
Message,
239
PrivateMessageEvent,
2410
)
11+
from nonebot.internal.matcher import Matcher
12+
from nonebot.params import CommandArg
2513
from nonebot.permission import SUPERUSER
2614
from nonebot.plugin import PluginMetadata
2715
from nonebot.rule import to_me
16+
from nonebot.typing import T_State
2817

18+
from .captcha.captcha import gain_num
19+
from .config.config import config
20+
from .handle.coin_handle import bbs_auto_coin, mhy_bbs_coin
21+
from .handle.sign_handle import bbs_auto_sign, mhy_bbs_sign
22+
from .handle.sr_sign_handle import sr_bbs_auto_sign
23+
from .handle.ssbq_handler import get_subs, handle_ssbq, sub_list
24+
from .utils.logger import Logger
25+
from .utils.update import do_update
26+
from .web import web_api, web_page # noqa
2927

3028
__plugin_meta__ = PluginMetadata(
3129
name="加强小派蒙验证",
@@ -144,6 +142,20 @@
144142
"pm_priority": 3,
145143
},
146144
)
145+
update_self = on_command(
146+
"验证签到插件更新",
147+
aliases={"签到插件更新"},
148+
priority=10,
149+
block=True,
150+
permission=SUPERUSER,
151+
rule=to_me(),
152+
state={
153+
"pm_name": "验证签到插件更新",
154+
"pm_description": "更新验证签到插件",
155+
"pm_usage": "@Bot 验证签到插件更新",
156+
"pm_priority": 10,
157+
},
158+
)
147159

148160
signing_list = []
149161
coin_getting_list = []
@@ -520,3 +532,10 @@ async def _(
520532
f"UID{sr_uid}尚未开启星铁自动签到,无需关闭!", at_sender=True
521533
)
522534
await sr_sign.finish(config.hfu, at_sender=True)
535+
536+
537+
@update_self.handle()
538+
async def _():
539+
await update_self.send("正在更新验证签到插件,请稍后", at_sender=True)
540+
result = await do_update()
541+
await update_self.finish(result, at_sender=True)

utils/update.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from pathlib import Path
2+
3+
import git
4+
from git.exc import GitCommandError, InvalidGitRepositoryError
5+
from LittlePaimon.utils import NICKNAME
6+
from nonebot.utils import run_sync
7+
8+
from .logger import Logger
9+
10+
11+
@run_sync
12+
def do_update():
13+
try:
14+
repo = git.Repo(Path(__file__).parent.parent.absolute())
15+
except InvalidGitRepositoryError:
16+
return "没有发现git仓库,无法通过git更新,请手动下载最新版本的文件进行替换。"
17+
Logger.info("验证签到插件更新", "开始执行<m>git pull</m>更新操作")
18+
origin = repo.remotes.origin
19+
try:
20+
origin.pull()
21+
repo_msg = (
22+
repo.head.commit.message.replace(":bug:", "🐛")
23+
.replace(":sparkles:", "✨")
24+
.replace(":memo:", "📝")
25+
.replace(":art:", "🎨")
26+
)
27+
msg = f"签到插件更新完成\n最新更新日志为:\n{repo_msg}\n可使用命令[@bot 重启]重启{NICKNAME}"
28+
except GitCommandError as e:
29+
if "timeout" in e.stderr or "unable to access" in e.stderr:
30+
msg = "签到插件更新失败,连接git仓库超时,请重试或修改源为代理源后再重试。"
31+
elif "Your local changes" in e.stderr:
32+
msg = f"签到插件更新失败,本地修改过文件导致冲突,请解决冲突后再更新。\n{e.stderr}"
33+
else:
34+
msg = f"签到插件更新失败,错误信息:{e.stderr},请尝试手动进行更新"
35+
return msg

0 commit comments

Comments
 (0)