[Core] Expose addCoins to modules

This commit is contained in:
Harsha Raghu
2022-01-18 22:41:40 +05:30
parent 2c9e62002a
commit 5b4d54a3b9

View File

@@ -5,6 +5,8 @@ from meta import client
from data import tables as tb from data import tables as tb
from settings import UserSettings, GuildSettings from settings import UserSettings, GuildSettings
# Give modules the ability to intercept addCoin() calls
_lion_add_coins_callbacks: list = []
class Lion: class Lion:
""" """
@@ -214,10 +216,13 @@ class Lion:
timezone = self.settings.timezone.value timezone = self.settings.timezone.value
return naive_utc_dt.replace(tzinfo=pytz.UTC).astimezone(timezone) 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. 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_coins += amount
self._pending[self.key] = self self._pending[self.key] = self
if flush: if flush:
@@ -251,3 +256,12 @@ class Lion:
for lion in lions: for lion in lions:
lion._pending_coins -= int(lion._pending_coins) lion._pending_coins -= int(lion._pending_coins)
cls._pending.pop(lion.key, None) 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)