diff --git a/src/telegram/app.py b/src/telegram/app.py index 784bf98..cb76a6b 100644 --- a/src/telegram/app.py +++ b/src/telegram/app.py @@ -48,6 +48,8 @@ def create_app(config: BotConfig) -> Application: def run() -> None: """加载配置并启动 bot""" + import asyncio + logger = setup_logger() config = BotConfig.from_env() @@ -57,4 +59,11 @@ def run() -> None: app = create_app(config) logger.info("Bot starting...") - app.run_polling() + + async def main(): + async with app: + await app.start() + await app.updater.start_polling() + await asyncio.Event().wait() + + asyncio.run(main()) diff --git a/src/telegram/handlers.py b/src/telegram/handlers.py index f5a0003..501a8e6 100644 --- a/src/telegram/handlers.py +++ b/src/telegram/handlers.py @@ -75,6 +75,9 @@ class Aria2BotAPI: async def install(self, update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: logger.info(f"收到 /install 命令 - {_get_user_info(update)}") + if is_aria2_installed(): + await self._reply(update, context, "aria2 已安装,无需重复安装。如需重新安装,请先运行 /uninstall") + return await self._reply(update, context, "正在安装 aria2,处理中,请稍候...") try: result = await self.installer.install() @@ -106,6 +109,9 @@ class Aria2BotAPI: async def uninstall(self, update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: logger.info(f"收到 /uninstall 命令 - {_get_user_info(update)}") + if not is_aria2_installed(): + await self._reply(update, context, "aria2 未安装,无需卸载") + return await self._reply(update, context, "正在卸载 aria2,处理中,请稍候...") try: try: