diff --git a/.gigaide/gigaide.properties b/.gigaide/gigaide.properties index 3adf633..6bf45f9 100644 --- a/.gigaide/gigaide.properties +++ b/.gigaide/gigaide.properties @@ -1,5 +1,5 @@ -## changed at Sun Oct 19 17:30:33 MSK 2025 -#Sun Oct 19 17:30:33 MSK 2025 +## changed at Sun Oct 19 18:59:08 MSK 2025 +#Sun Oct 19 18:59:08 MSK 2025 com.gigaide.elements.ext.marker.solution.BeanMarkedPsi.shouldMark=true com.gigaide.elements.ext.marker.solution.ConfigMarkedPsi.shouldMark=true com.gigaide.elements.ext.marker.solution.DataMarkedPsi.shouldMark=true diff --git a/src/modules/0_karma_tracker.py b/src/modules/0_karma_tracker.py index 730c22f..268a0b2 100644 --- a/src/modules/0_karma_tracker.py +++ b/src/modules/0_karma_tracker.py @@ -202,13 +202,17 @@ def register_handlers(bot: AsyncTeleBot): ) logger.info(f"[KARMA] Уведомление отправлено успешно, message_id={sent_message.message_id}") - # Удаляем уведомление через 10 секунд - await asyncio.sleep(10) - try: - await bot.delete_message(chat_id, sent_message.message_id) - logger.info(f"[KARMA] Уведомление удалено") - except Exception as e: - logger.error(f"Не удалось удалить уведомление о карме: {e}") + # Удаляем уведомление через 10 секунд В ФОНЕ (не блокируя обработку других реакций) + async def delete_notification(): + try: + await asyncio.sleep(10) + await bot.delete_message(chat_id, sent_message.message_id) + logger.info(f"[KARMA] Уведомление удалено") + except Exception as e: + logger.error(f"Не удалось удалить уведомление о карме: {e}") + + # Запускаем удаление в фоне + asyncio.create_task(delete_notification()) except Exception as e: logger.error(f"Ошибка отправки уведомления о карме: {e}", exc_info=True) @@ -293,12 +297,16 @@ def register_handlers(bot: AsyncTeleBot): logger.info(f"Пользователь {from_user.id} поблагодарил {to_user.id}, карма: {new_karma}") - # Удаляем уведомление через 25 секунд - await asyncio.sleep(25) - try: - await bot.delete_message(chat_id, sent_message.message_id) - except Exception as e: - logger.error(f"Не удалось удалить уведомление о карме: {e}") + # Удаляем уведомление через 25 секунд В ФОНЕ + async def delete_thank_notification(): + try: + await asyncio.sleep(25) + await bot.delete_message(chat_id, sent_message.message_id) + except Exception as e: + logger.error(f"Не удалось удалить уведомление о карме: {e}") + + # Запускаем удаление в фоне + asyncio.create_task(delete_thank_notification()) except Exception as e: logger.error(f"Ошибка при обработке благодарности: {e}", exc_info=True) \ No newline at end of file diff --git a/src/utils.py b/src/utils.py index ecc87b5..8823a7f 100644 --- a/src/utils.py +++ b/src/utils.py @@ -8,14 +8,21 @@ from config import COMMAND_MESSAGES # Получаем логгер для текущего модуля logger = logging.getLogger(__name__) -# Удаляет определённое количество сообщения +# Удаляет определённое количество сообщения В ФОНЕ (не блокирует обработку других событий) async def delete_messages(bot: AsyncTeleBot, message: Message, time_sleep: int, number_message: int): - await asyncio.sleep(time_sleep) - for i in range(number_message): + async def _delete_task(): try: - await bot.delete_message(message.chat.id, message.message_id+i) + await asyncio.sleep(time_sleep) + for i in range(number_message): + try: + await bot.delete_message(message.chat.id, message.message_id+i) + except Exception as e: + logger.debug(f"Не удалось удалить сообщение {message.message_id+i}: {e}") except Exception as e: - logger.debug(f"Не удалось удалить сообщение {message.message_id+i}: {e}") + logger.error(f"Ошибка в задаче удаления сообщений: {e}") + + # Запускаем удаление в фоне + asyncio.create_task(_delete_task()) # Проверяет, является ли отправитель администратором async def check_admin_status(bot: AsyncTeleBot, message: Message, check_restrict_rights: bool = True):