From 5b4d54a3b92372f582bba01d035b527ea237af37 Mon Sep 17 00:00:00 2001 From: Harsha Raghu Date: Tue, 18 Jan 2022 22:41:40 +0530 Subject: [PATCH] [Core] Expose addCoins to modules --- bot/core/lion.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/bot/core/lion.py b/bot/core/lion.py index 4b3baea9..c06fff48 100644 --- a/bot/core/lion.py +++ b/bot/core/lion.py @@ -5,6 +5,8 @@ from meta import client from data import tables as tb from settings import UserSettings, GuildSettings +# Give modules the ability to intercept addCoin() calls +_lion_add_coins_callbacks: list = [] class Lion: """ @@ -214,10 +216,13 @@ class Lion: timezone = self.settings.timezone.value return naive_utc_dt.replace(tzinfo=pytz.UTC).astimezone(timezone) - def addCoins(self, amount, flush=True): + def addCoins(self, amount, flush=True, ignorebonus=False): """ Add coins to the user, optionally store the transaction in pending. """ + for cb in _lion_add_coins_callbacks: + [self, amount, flush, ignorebonus] = cb(self, amount, flush, ignorebonus) + self._pending_coins += amount self._pending[self.key] = self if flush: @@ -251,3 +256,12 @@ class Lion: for lion in lions: lion._pending_coins -= int(lion._pending_coins) cls._pending.pop(lion.key, None) + + +# TODO Expand this callback system to other functions +# Note: callbacks MUST return [self, amount, flush, ignorebonus] modified/unmodified +def register_addcoins_callback(func): + _lion_add_coins_callbacks.append(func) + +def unregister_addcoins_callback(func): + _lion_add_coins_callbacks.remove(func)