From 18d6c977d7a184b31cfecf8fd0b8522195d6bf05 Mon Sep 17 00:00:00 2001 From: Conatum Date: Mon, 24 Jan 2022 06:48:32 +0200 Subject: [PATCH] (economy): Flip bonus logic and fix workout text. Default to not giving a bonus. Fix an issue where `workout` was displaying unboosted reward. --- bot/core/lion.py | 4 ++-- bot/modules/accountability/TimeSlot.py | 2 +- bot/modules/economy/send_cmd.py | 2 +- bot/modules/guild_admin/economy/set_coins.py | 4 ++-- bot/modules/guild_admin/reaction_roles/tracker.py | 2 +- bot/modules/study/tracking/time_tracker.py | 2 +- bot/modules/todo/Tasklist.py | 2 +- bot/modules/workout/tracker.py | 6 +++--- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/bot/core/lion.py b/bot/core/lion.py index 969c3e4f..3f29d77d 100644 --- a/bot/core/lion.py +++ b/bot/core/lion.py @@ -280,11 +280,11 @@ class Lion: timezone = self.settings.timezone.value return naive_utc_dt.replace(tzinfo=pytz.UTC).astimezone(timezone) - def addCoins(self, amount, flush=True, ignorebonus=False): + def addCoins(self, amount, flush=True, bonus=False): """ Add coins to the user, optionally store the transaction in pending. """ - self._pending_coins += amount * (1 if ignorebonus else self.economy_bonus) + self._pending_coins += amount * (self.economy_bonus if bonus else 1) self._pending[self.key] = self if flush: self.flush() diff --git a/bot/modules/accountability/TimeSlot.py b/bot/modules/accountability/TimeSlot.py index fa2b8f98..43f3d664 100644 --- a/bot/modules/accountability/TimeSlot.py +++ b/bot/modules/accountability/TimeSlot.py @@ -427,7 +427,7 @@ class TimeSlot: reward += guild_settings.accountability_bonus.value for memid in self.members: - Lion.fetch(self.guild.id, memid).addCoins(reward) + Lion.fetch(self.guild.id, memid).addCoins(reward, bonus=True) async def cancel(self): """ diff --git a/bot/modules/economy/send_cmd.py b/bot/modules/economy/send_cmd.py index db997f22..5086ee67 100644 --- a/bot/modules/economy/send_cmd.py +++ b/bot/modules/economy/send_cmd.py @@ -60,7 +60,7 @@ async def cmd_send(ctx): return await ctx.embed_reply("We are still waiting for {} to open an account.".format(target.mention)) # Finally, send the amount and the ack message - target_lion.addCoins(amount, ignorebonus=True) + target_lion.addCoins(amount) source_lion.addCoins(-amount) embed = discord.Embed( diff --git a/bot/modules/guild_admin/economy/set_coins.py b/bot/modules/guild_admin/economy/set_coins.py index cbbf85d9..c0744a13 100644 --- a/bot/modules/guild_admin/economy/set_coins.py +++ b/bot/modules/guild_admin/economy/set_coins.py @@ -61,10 +61,10 @@ async def cmd_set(ctx): # Postgres `coins` column is `integer`, sanity check postgres int limits - which are smalled than python int range target_coins_to_set = target_lion.coins + amount if target_coins_to_set >= 0 and target_coins_to_set <= POSTGRES_INT_MAX: - target_lion.addCoins(amount, ignorebonus=True) + target_lion.addCoins(amount) elif target_coins_to_set < 0: target_coins_to_set = -target_lion.coins # Coins cannot go -ve, cap to 0 - target_lion.addCoins(target_coins_to_set, ignorebonus=True) + target_lion.addCoins(target_coins_to_set) target_coins_to_set = 0 else: return await ctx.embed_reply("Member coins cannot be more than {}".format(POSTGRES_INT_MAX)) diff --git a/bot/modules/guild_admin/reaction_roles/tracker.py b/bot/modules/guild_admin/reaction_roles/tracker.py index d986fa54..d841d3e5 100644 --- a/bot/modules/guild_admin/reaction_roles/tracker.py +++ b/bot/modules/guild_admin/reaction_roles/tracker.py @@ -501,7 +501,7 @@ class ReactionRoleMessage: if price and refund: # Give the user the refund lion = Lion.fetch(self.guild.id, member.id) - lion.addCoins(price, ignorebonus=True) + lion.addCoins(price) # Notify the user embed = discord.Embed( diff --git a/bot/modules/study/tracking/time_tracker.py b/bot/modules/study/tracking/time_tracker.py index 46f88ec7..96f102c3 100644 --- a/bot/modules/study/tracking/time_tracker.py +++ b/bot/modules/study/tracking/time_tracker.py @@ -65,7 +65,7 @@ def _scan(guild): if member.voice.self_stream or member.voice.self_video: hour_reward += guild_hourly_live_bonus - lion.addCoins(hour_reward * interval / (3600), flush=False) + lion.addCoins(hour_reward * interval / (3600), flush=False, bonus=True) async def _study_tracker(): diff --git a/bot/modules/todo/Tasklist.py b/bot/modules/todo/Tasklist.py index 3618b734..74df8d64 100644 --- a/bot/modules/todo/Tasklist.py +++ b/bot/modules/todo/Tasklist.py @@ -350,7 +350,7 @@ class Tasklist: # Rewarding process, now that we know what we need to reward # Add coins user = Lion.fetch(self.member.guild.id, self.member.id) - user.addCoins(reward_coins) + user.addCoins(reward_coins, bonus=True) # Mark tasks as rewarded taskids = [task['taskid'] for task in reward_tasks] diff --git a/bot/modules/workout/tracker.py b/bot/modules/workout/tracker.py index be3438df..a0f19802 100644 --- a/bot/modules/workout/tracker.py +++ b/bot/modules/workout/tracker.py @@ -130,12 +130,12 @@ async def workout_complete(member, workout): settings = GuildSettings(member.guild.id) reward = settings.workout_reward.value - user.addCoins(reward) + user.addCoins(reward, bonus=True) settings.event_log.log( "{} completed their daily workout and was rewarded `{}` coins! (`{:.2f}` minutes)".format( member.mention, - reward, + int(reward * user.economy_bonus), workout.duration / 60, ), title="Workout Completed" ) @@ -143,7 +143,7 @@ async def workout_complete(member, workout): embed = discord.Embed( description=( "Congratulations on completing your daily workout!\n" - "You have been rewarded with `{}` LionCoins. Good job!".format(reward) + "You have been rewarded with `{}` LionCoins. Good job!".format(int(reward * user.economy_bonus)) ), timestamp=dt.datetime.utcnow(), colour=discord.Color.orange()