from __future__ import annotations import typing import traceback from .. import operator, entities, errors @operator.operator_class(name='update', help='更新程序', usage='!update', privilege=2) class UpdateCommand(operator.CommandOperator): async def execute( self, context: entities.ExecuteContext ) -> typing.AsyncGenerator[entities.CommandReturn, None]: try: yield entities.CommandReturn(text='正在进行更新...') if await self.ap.ver_mgr.update_all(): yield entities.CommandReturn(text='更新完成,请重启程序以应用更新') else: yield entities.CommandReturn(text='当前已是最新版本') except Exception as e: traceback.print_exc() yield entities.CommandReturn( error=errors.CommandError('更新失败: ' + str(e)) )