aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/cogs/information.py36
1 files changed, 31 insertions, 5 deletions
diff --git a/bot/cogs/information.py b/bot/cogs/information.py
index f0eb3a1ea..d830806c1 100644
--- a/bot/cogs/information.py
+++ b/bot/cogs/information.py
@@ -104,13 +104,35 @@ class Information(Cog):
member_count = ctx.guild.member_count
# How many of each type of channel?
- channels = Counter(c.type for c in ctx.guild.channels)
- channel_counts = "".join(sorted(f"{str(ch).title()} channels: {channels[ch]}\n" for ch in channels)).strip()
+ channel_counter = Counter(c.type for c in ctx.guild.channels)
+ channel_type_list = []
+ for channel in channel_counter:
+ channel_type = str(channel).title()
+ channel_type_list.append(f"{channel_type} channels: {channel_counter[channel]}")
+
+ channel_type_list = sorted(channel_type_list)
+ channel_counts = "\n".join(channel_type_list).strip()
+
+ # How many channels are for staff only?
+ everyone_role = ctx.guild.roles[0]
+ hidden_channels = 0
+
+ for channel in ctx.guild.channels:
+ overwrites = channel.overwrites_for(everyone_role)
+ if overwrites.is_empty():
+ continue
+
+ for perm, value in overwrites:
+ if perm == 'read_messages' and value is False:
+ hidden_channels += 1
# How many of each user status?
statuses = Counter(member.status for member in ctx.guild.members)
embed = Embed(colour=Colour.blurple())
+ # How many staff members?
+ staff_members = len(ctx.guild.get_role(constants.Roles.helpers).members)
+
# Because channel_counts lacks leading whitespace, it breaks the dedent if it's inserted directly by the
# f-string. While this is correctly formated by Discord, it makes unit testing difficult. To keep the formatting
# without joining a tuple of strings we can use a Template string to insert the already-formatted channel_counts
@@ -122,12 +144,16 @@ class Information(Cog):
Voice region: {region}
Features: {features}
- **Counts**
+ **Channel counts**
+ $channel_counts
+ Staff channels: {hidden_channels}
+
+ **Member counts**
Members: {member_count:,}
+ Staff members: {staff_members}
Roles: {roles}
- $channel_counts
- **Members**
+ **Member statuses**
{constants.Emojis.status_online} {statuses[Status.online]:,}
{constants.Emojis.status_idle} {statuses[Status.idle]:,}
{constants.Emojis.status_dnd} {statuses[Status.dnd]:,}