feat(ranks): Add economy hook.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user