From b7f09ae7196bed3b81176ace36c2732f45fa46af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=A5=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=BE=D0=B2?= Date: Sun, 19 Oct 2025 14:54:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B5=D1=89=D1=91=20=D0=BD=D0=B5=D1=81?= =?UTF-8?q?=D0=BA=D0=BE=D0=BB=D1=8C=D0=BA=D0=B8=D1=85=20=D1=8D=D0=BC=D0=BE?= =?UTF-8?q?=D0=B4=D0=B7=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config.py | 3 ++ src/modules/0_karma_tracker.py | 59 +++++++++++++++++++++++++++++++--- 2 files changed, 57 insertions(+), 5 deletions(-) diff --git a/src/config.py b/src/config.py index 221c311..6845962 100644 --- a/src/config.py +++ b/src/config.py @@ -194,6 +194,9 @@ COMMAND_MESSAGES = { "Способ 2: Поставить реакцию (работает как переключатель)\n" "• Поставил 👍 → +1 карма | Убрал 👍 → -1 карма\n" "• Поставил 👎 → -1 карма | Убрал 👎 → +1 карма\n" + "• Поставил 🔥 → +2 кармы | Убрал 🔥 → -2 кармы\n" + "• Поставил ❤ → +5 кармы | Убрал ❤ → -5 кармы\n" + "• Поставил ❤‍🔥 → +10 кармы | Убрал ❤‍🔥 → -10 кармы\n" "• Нет ограничений по времени для реакций!\n\n" "🔥 БОНУС: Благодарность с восклицательным знаком даёт x2 кармы!\n" "• спасибо! → +2 кармы 👍👍\n" diff --git a/src/modules/0_karma_tracker.py b/src/modules/0_karma_tracker.py index c289039..730c22f 100644 --- a/src/modules/0_karma_tracker.py +++ b/src/modules/0_karma_tracker.py @@ -39,10 +39,11 @@ def register_handlers(bot: AsyncTeleBot): """ Обрабатывает реакции на сообщения. Реакции работают как переключатель: - - Поставил 👍 → +1 карма - - Убрал 👍 → -1 карма - - Поставил 👎 → -1 карма - - Убрал 👎 → +1 карма + - Поставил 👍 → +1 карма | Убрал 👍 → -1 карма + - Поставил 👎 → -1 карма | Убрал 👎 → +1 карма + - Поставил 🔥 → +2 кармы | Убрал 🔥 → -2 кармы + - Поставил ❤ → +5 кармы | Убрал ❤ → -5 кармы + - Поставил ❤‍🔥 → +10 кармы | Убрал ❤‍🔥 → -10 кармы """ try: logger.info(f"[KARMA] Получена реакция от {reaction.user.id}") @@ -77,6 +78,9 @@ def register_handlers(bot: AsyncTeleBot): # Проверяем старые реакции old_thumbs_up = False old_thumbs_down = False + old_heart = False + old_fire_heart = False + old_fire = False if reaction.old_reaction: for react in reaction.old_reaction: if isinstance(react, ReactionTypeEmoji): @@ -84,10 +88,19 @@ def register_handlers(bot: AsyncTeleBot): old_thumbs_up = True elif react.emoji == "👎": old_thumbs_down = True + elif react.emoji == "❤": + old_heart = True + elif react.emoji == "❤‍🔥": + old_fire_heart = True + elif react.emoji == "🔥": + old_fire = True # Проверяем новые реакции new_thumbs_up = False new_thumbs_down = False + new_heart = False + new_fire_heart = False + new_fire = False if reaction.new_reaction: for react in reaction.new_reaction: if isinstance(react, ReactionTypeEmoji): @@ -95,6 +108,12 @@ def register_handlers(bot: AsyncTeleBot): new_thumbs_up = True elif react.emoji == "👎": new_thumbs_down = True + elif react.emoji == "❤": + new_heart = True + elif react.emoji == "❤‍🔥": + new_fire_heart = True + elif react.emoji == "🔥": + new_fire = True # Определяем изменение кармы karma_change = 0 @@ -122,10 +141,40 @@ def register_handlers(bot: AsyncTeleBot): karma_change = 1 action_emoji = "👎" action_text = "убрал 👎" + elif new_heart and not old_heart: + # Добавили ❤ + karma_change = 5 + action_emoji = "❤" + action_text = "поставил ❤" + elif old_heart and not new_heart: + # Убрали ❤ + karma_change = -5 + action_emoji = "❤" + action_text = "убрал ❤" + elif new_fire_heart and not old_fire_heart: + # Добавили ❤‍🔥 + karma_change = 10 + action_emoji = "❤‍🔥" + action_text = "поставил ❤‍🔥" + elif old_fire_heart and not new_fire_heart: + # Убрали ❤‍🔥 + karma_change = -10 + action_emoji = "❤‍🔥" + action_text = "убрал ❤‍🔥" + elif new_fire and not old_fire: + # Добавили 🔥 + karma_change = 2 + action_emoji = "🔥" + action_text = "поставил 🔥" + elif old_fire and not new_fire: + # Убрали 🔥 + karma_change = -2 + action_emoji = "🔥" + action_text = "убрал 🔥" # Если нет изменений - выходим if karma_change == 0: - logger.info(f"[KARMA] Нет изменений в реакциях 👍/👎") + logger.info(f"[KARMA] Нет изменений в реакциях") return logger.info(f"[KARMA] {action_text} от {from_user.id} для {to_user_id}, изменение кармы: {karma_change}")