diff --git a/telegram_helper.py b/telegram_helper.py index 4b23a2e..3c73328 100644 --- a/telegram_helper.py +++ b/telegram_helper.py @@ -37,8 +37,8 @@ class TelegramHelper: async def clear(self, update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: # Modified user_id = update.effective_user.id - response_message = await self._clear_logic(user_id) # Await was missing for async consistency, though _clear_logic is not async yet, it calls a sync method. - # For consistency with other _logic methods, making it async. + response_message = await self._clear_logic(user_id) + await update.message.reply_text(response_message) # --- Status Command --- async def _status_logic(self) -> str: # New logic method @@ -100,13 +100,18 @@ class TelegramHelper: logging.error(f"An error occurred: {str(e)}") await update.message.reply_text("Sorry, an error occurred while processing your request.") - async def abort_processing(self, update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: + # --- Abort Processing (Callback) --- + async def _abort_processing_logic(self, user_id: int) -> str: # New logic method + return await self.bot.abort_processing(user_id) + + async def abort_processing(self, update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: # Modified query = update.callback_query - await query.answer() + await query.answer() # Telegram specific interaction user_id = query.from_user.id - result = await self.bot.abort_processing(user_id) - await query.edit_message_text(text=result) + response_text = await self._abort_processing_logic(user_id) # Call logic method + + await query.edit_message_text(text=response_text) # Telegram specific interaction async def reboot(self, update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: user_message = update.message.text.split() @@ -120,9 +125,6 @@ class TelegramHelper: reboot_f_path = self.reboot_file if not os.path.exists(reboot_f_path): with open(reboot_f_path, 'w') as f: - # If update is None (e.g. called programmatically without a Telegram context for reboot), - # we should handle this. For now, assuming update is present if this handler is called by Telegram. - # Testability of this part needs care due to sys.exit() chat_id_to_write = str(update.effective_chat.id) if update and update.effective_chat else "" f.write(chat_id_to_write) sys.exit(0) @@ -161,6 +163,6 @@ class TelegramHelper: if loop.is_running(): loop.create_task(self.check_doreboot_file(application)) else: - asyncio.run(self.check_doreboot_file(application)) # Fallback if loop not running (e.g. tests) + asyncio.run(self.check_doreboot_file(application)) application.run_polling()