feat(ranks): Add economy hook.

This commit is contained in:
2023-09-05 12:52:18 +03:00
parent 8436e9befc
commit c603061b35
2 changed files with 18 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ from core.data import CoreData
from utils.data import TemporaryTable, SAFECOINS from utils.data import TemporaryTable, SAFECOINS
# TODO: Add Rank transaction type and tables.
class TransactionType(Enum): class TransactionType(Enum):
""" """
Schema Schema

View File

@@ -16,6 +16,8 @@ from utils.ui import ChoicedEnum, Transformed
from utils.lib import utc_now, replace_multiple from utils.lib import utc_now, replace_multiple
from utils.ratelimits import Bucket, limit_concurrency from utils.ratelimits import Bucket, limit_concurrency
from utils.data import TemporaryTable from utils.data import TemporaryTable
from modules.economy.cog import Economy
from modules.economy.data import TransactionType
from . import babel, logger from . import babel, logger
@@ -299,6 +301,7 @@ class RankCog(LionCog):
if new_last_roleid != last_roleid: if new_last_roleid != last_roleid:
await session_rank.rankrow.update(last_roleid=new_last_roleid) await session_rank.rankrow.update(last_roleid=new_last_roleid)
@log_wrap(action="Update Rank")
async def update_rank(self, session_rank): async def update_rank(self, session_rank):
# Identify target rank # Identify target rank
guildid = session_rank.guildid guildid = session_rank.guildid
@@ -341,6 +344,7 @@ class RankCog(LionCog):
await member.add_roles(new_role) await member.add_roles(new_role)
last_roleid = new_role.id last_roleid = new_role.id
except discord.HTTPException: except discord.HTTPException:
# TODO: Event log either way
pass pass
# Update MemberRank row # Update MemberRank row
@@ -357,6 +361,18 @@ class RankCog(LionCog):
session_rank.current_rank = new_rank session_rank.current_rank = new_rank
session_rank.next_rank = next((rank for rank in ranks if rank.required > new_rank.required), None) session_rank.next_rank = next((rank for rank in ranks if rank.required > new_rank.required), None)
# Provide economy reward if required
if new_rank.reward:
economy: Economy = self.bot.get_cog('Economy')
await economy.data.Transaction.execute_transaction(
TransactionType.OTHER,
guildid=guildid,
actorid=guild.me.id,
from_account=None,
to_account=userid,
amount=new_rank.reward
)
# Send notification # Send notification
await self._notify_rank_update(guildid, userid, new_rank) await self._notify_rank_update(guildid, userid, new_rank)
@@ -427,6 +443,7 @@ class RankCog(LionCog):
} }
return key_map return key_map
@log_wrap(action="Voice Rank Hook")
async def on_voice_session_complete(self, *session_data): async def on_voice_session_complete(self, *session_data):
tasks = [] tasks = []
# TODO: Thread safety # TODO: Thread safety