fix (tasklist): Bound checks in task hook.

This commit is contained in:
2023-06-09 05:17:38 +03:00
parent 14543d975c
commit 7c039dd0da

View File

@@ -151,17 +151,18 @@ class TasklistCog(LionCog):
ecog = self.bot.get_cog('Economy') ecog = self.bot.get_cog('Economy')
recent = await ecog.data.TaskTransaction.count_recent_for(member.id, member.guild.id) or 0 recent = await ecog.data.TaskTransaction.count_recent_for(member.id, member.guild.id) or 0
max_to_reward = max(limit-recent, 0) max_to_reward = limit - recent
to_reward = unrewarded[:max_to_reward] if max_to_reward > 0:
to_reward = unrewarded[:max_to_reward]
count = len(to_reward) count = len(to_reward)
amount = count * reward amount = count * reward
await ecog.data.TaskTransaction.reward_completed(member.id, member.guild.id, count, amount) await ecog.data.TaskTransaction.reward_completed(member.id, member.guild.id, count, amount)
await tasklist.update_tasks(*(task.taskid for task in to_reward), rewarded=True) await tasklist.update_tasks(*(task.taskid for task in to_reward), rewarded=True)
logger.debug( logger.debug(
f"Rewarded <uid: {member.id}> in <gid: {member.guild.id}> " f"Rewarded <uid: {member.id}> in <gid: {member.guild.id}> "
f"'{amount}' coins for completing '{count}' tasks." f"'{amount}' coins for completing '{count}' tasks."
) )
@cmds.hybrid_group( @cmds.hybrid_group(
name=_p('group:tasklist', "tasklist") name=_p('group:tasklist', "tasklist")