aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/recruitment/talentpool/_cog.py12
-rw-r--r--bot/exts/recruitment/talentpool/_review.py34
2 files changed, 19 insertions, 27 deletions
diff --git a/bot/exts/recruitment/talentpool/_cog.py b/bot/exts/recruitment/talentpool/_cog.py
index f3e3539b6..b809cea17 100644
--- a/bot/exts/recruitment/talentpool/_cog.py
+++ b/bot/exts/recruitment/talentpool/_cog.py
@@ -302,17 +302,17 @@ class TalentPool(WatchChannel, Cog, name="Talentpool"):
@nomination_group.command(aliases=('mr',))
@has_any_role(*MODERATION_ROLES)
- async def mark_reviewed(self, ctx: Context, nomination_id: int) -> None:
- """Mark a nomination as reviewed and cancel the review task."""
- if not await self.reviewer.mark_reviewed(ctx, nomination_id):
+ async def mark_reviewed(self, ctx: Context, user_id: int) -> None:
+ """Mark a user's nomination as reviewed and cancel the review task."""
+ if not await self.reviewer.mark_reviewed(ctx, user_id):
return
- await ctx.send(f"✅ The nomination with ID `{nomination_id}` was marked as reviewed.")
+ await ctx.send(f"✅ The user with ID `{user_id}` was marked as reviewed.")
@nomination_group.command(aliases=('review',))
@has_any_role(*MODERATION_ROLES)
- async def post_review(self, ctx: Context, nomination_id: int) -> None:
+ async def post_review(self, ctx: Context, user_id: int) -> None:
"""Post the automatic review for the user ahead of time."""
- if not (user_id := await self.reviewer.mark_reviewed(ctx, nomination_id)):
+ if not await self.reviewer.mark_reviewed(ctx, user_id):
return
await self.reviewer.post_review(user_id, update_database=False)
diff --git a/bot/exts/recruitment/talentpool/_review.py b/bot/exts/recruitment/talentpool/_review.py
index ba1564602..c2c1312d9 100644
--- a/bot/exts/recruitment/talentpool/_review.py
+++ b/bot/exts/recruitment/talentpool/_review.py
@@ -276,37 +276,29 @@ class Reviewer:
return results
- async def mark_reviewed(self, ctx: Context, nomination_id: int) -> Optional[int]:
+ async def mark_reviewed(self, ctx: Context, user_id: int) -> bool:
"""
Mark an active nomination as reviewed, updating the database and canceling the review task.
- On success, returns the user ID.
+ Returns True if the user was successfully marked as reviewed, False otherwise.
"""
- log.trace(f"Updating nomination #{nomination_id} as reviewed")
- try:
- nomination = await self.bot.api_client.get(f"{self._pool.api_endpoint}/{nomination_id}")
- except ResponseCodeError as e:
- if e.response.status == 404:
- log.trace(f"Nomination API 404: Can't find nomination with id {nomination_id}")
- await ctx.send(f"❌ Can't find a nomination with id `{nomination_id}`")
- return
- else:
- raise
+ log.trace(f"Updating user {user_id} as reviewed")
+ await self._pool.fetch_user_cache()
+ if user_id not in self._pool.watched_users:
+ log.trace(f"Can't find a nominated user with id {user_id}")
+ await ctx.send(f"❌ Can't find a currently nominated user with id `{user_id}`")
+ return False
+ nomination = self._pool.watched_users[user_id]
if nomination["reviewed"]:
await ctx.send("❌ This nomination was already reviewed, but here's a cookie 🍪")
- return
- elif not nomination["active"]:
- await ctx.send("❌ This nomination is inactive")
- return
+ return False
await self.bot.api_client.patch(f"{self._pool.api_endpoint}/{nomination['id']}", json={"reviewed": True})
- if nomination["user"] in self._review_scheduler:
- self._review_scheduler.cancel(nomination["user"])
-
- await self._pool.fetch_user_cache()
+ if user_id in self._review_scheduler:
+ self._review_scheduler.cancel(user_id)
- return nomination["user"]
+ return True
def cancel(self, user_id: int) -> None:
"""