aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/info/information.py17
-rw-r--r--bot/utils/helpers.py16
2 files changed, 16 insertions, 17 deletions
diff --git a/bot/exts/info/information.py b/bot/exts/info/information.py
index eef18298c..54616a1c6 100644
--- a/bot/exts/info/information.py
+++ b/bot/exts/info/information.py
@@ -3,7 +3,7 @@ import logging
import pprint
import textwrap
from collections import defaultdict
-from typing import Any, DefaultDict, Dict, Mapping, Optional, Tuple, Union
+from typing import Any, DefaultDict, Dict, List, Mapping, Optional, Tuple, Union
import rapidfuzz
from discord import AllowedMentions, Colour, Embed, Guild, Message, Role
@@ -17,7 +17,6 @@ from bot.decorators import in_whitelist
from bot.pagination import LinePaginator
from bot.utils.channel import is_mod_channel, is_staff_channel
from bot.utils.checks import cooldown_with_role_bypass, has_no_roles_check, in_whitelist_check
-from bot.utils.helpers import join_role_stats
from bot.utils.time import TimestampFormats, discord_timestamp, humanize_delta
@@ -44,6 +43,17 @@ class Information(Cog):
return channel_counter
@staticmethod
+ def join_role_stats(role_ids: List[int], name: str, guild: Guild) -> Dict[str, int]:
+ """Return a dictionary with the number of `members` of each role given, and the `name` for this joined group."""
+ members = []
+ for role_id in role_ids:
+ if (role := guild.get_role(role_id)) is None:
+ raise ValueError(f"Could not fetch data for role {role} for server embed.")
+ else:
+ members += role.members
+ return {name: len(set(members))}
+
+ @staticmethod
def get_member_counts(guild: Guild) -> Dict[str, int]:
"""Return the total number of members for certain roles in `guild`."""
roles = (
@@ -54,7 +64,8 @@ class Information(Cog):
)
role_stats = {role.name.title(): len(role.members) for role in roles}
role_stats.update(
- **join_role_stats([constants.Roles.project_leads, constants.Roles.domain_leads], "Leads", guild))
+ **Information.join_role_stats([constants.Roles.project_leads, constants.Roles.domain_leads], "Leads", guild)
+ )
return role_stats
def get_extended_server_info(self, ctx: Context) -> str:
diff --git a/bot/utils/helpers.py b/bot/utils/helpers.py
index cb1d46411..3501a3933 100644
--- a/bot/utils/helpers.py
+++ b/bot/utils/helpers.py
@@ -1,8 +1,7 @@
from abc import ABCMeta
-from typing import Dict, List, Optional
+from typing import Optional
-from discord import Guild
-from discord.ext.commands import BadArgument, CogMeta
+from discord.ext.commands import CogMeta
class CogABCMeta(CogMeta, ABCMeta):
@@ -31,14 +30,3 @@ def has_lines(string: str, count: int) -> bool:
def pad_base64(data: str) -> str:
"""Return base64 `data` with padding characters to ensure its length is a multiple of 4."""
return data + "=" * (-len(data) % 4)
-
-
-def join_role_stats(role_ids: List[int], name: str, guild: Guild) -> Dict[str, int]:
- """Return a dict object with the number of `members` of each role given, and the `name` for this joined group."""
- members = []
- for role_id in role_ids:
- if (role := guild.get_role(role_id)) is None:
- raise BadArgument("Unable to fetch role data, the specified role does not exist.")
- else:
- members += role.members
- return {name: len(set(members))}