aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar kwzrd <[email protected]>2020-08-04 18:35:17 +0200
committerGravatar kwzrd <[email protected]>2020-08-04 18:38:19 +0200
commit6840dbe5539cd5a094c65b2d09ddda227ad2ca30 (patch)
tree7b7ae40dc3c41c6cb7f3e0c413ce6b29c8ae7004
parentVerification: implement `check_users` coroutine (diff)
Verification: implement `_give_role` helper
-rw-r--r--bot/cogs/verification.py23
1 files changed, 21 insertions, 2 deletions
diff --git a/bot/cogs/verification.py b/bot/cogs/verification.py
index ea4874450..683e60ddb 100644
--- a/bot/cogs/verification.py
+++ b/bot/cogs/verification.py
@@ -59,8 +59,27 @@ class Verification(Cog):
...
async def _give_role(self, members: t.Set[discord.Member], role: discord.Role) -> int:
- """Give `role` to all `members`."""
- ...
+ """
+ Give `role` to all `members`.
+
+ Returns the amount of successful requests. Status codes of unsuccessful requests
+ are logged at info level.
+ """
+ log.info(f"Assigning {role} role to {len(members)} members (not verified after {UNVERIFIED_AFTER} days)")
+ n_success, bad_statuses = 0, set()
+
+ for member in members:
+ try:
+ await member.add_roles(role, reason=f"User has not verified in {UNVERIFIED_AFTER} days")
+ except discord.HTTPException as http_exc:
+ bad_statuses.add(http_exc.status)
+ else:
+ n_success += 1
+
+ if bad_statuses:
+ log.info(f"Failed to assign {len(members) - n_success} roles due to following statuses: {bad_statuses}")
+
+ return n_success
async def check_users(self) -> None:
"""