aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Xithrius <[email protected]>2020-11-06 18:12:23 -0800
committerGravatar Xithrius <[email protected]>2020-11-06 18:12:23 -0800
commite42cdaed973408c0753366401adb946e8402d082 (patch)
tree2bbf8db02e765f2a90162f328520cdb7643337df
parentUser command gets verification time and message count. (diff)
Moved activity data further up in embed.
-rw-r--r--bot/exts/info/information.py45
1 files changed, 31 insertions, 14 deletions
diff --git a/bot/exts/info/information.py b/bot/exts/info/information.py
index c83dfadc5..c4c73efdf 100644
--- a/bot/exts/info/information.py
+++ b/bot/exts/info/information.py
@@ -12,6 +12,7 @@ from discord.abc import GuildChannel
from discord.ext.commands import BucketType, Cog, Context, Paginator, command, group, has_any_role
from bot import constants
+from bot.api import ResponseCodeError
from bot.bot import Bot
from bot.converters import FetchedMember
from bot.decorators import in_whitelist
@@ -235,14 +236,18 @@ class Information(Cog):
roles = None
membership = "The user is not a member of the server"
+ verified_at, activity = await self.user_verification_and_messages(user)
+ verified_at = f"Verified: {verified_at}" if is_mod_channel(ctx.channel) else ""
+
fields = [
(
"User information",
textwrap.dedent(f"""
Created: {created}
+ {verified_at}
Profile: {user.mention}
ID: {user.id}
- """).strip()
+ """).strip().replace("\n\n", "\n")
),
(
"Member information",
@@ -252,9 +257,10 @@ class Information(Cog):
# Show more verbose output in moderation channels for infractions and nominations
if is_mod_channel(ctx.channel):
+ fields.append(activity)
+
fields.append(await self.expanded_user_infraction_counts(user))
fields.append(await self.user_nomination_counts(user))
- fields.append(await self.user_verification_and_messages(user))
else:
fields.append(await self.basic_user_infraction_counts(user))
@@ -355,24 +361,35 @@ class Information(Cog):
return "Nominations", "\n".join(output)
- async def user_verification_and_messages(self, user: FetchedMember) -> Tuple[str, str]:
+ async def user_verification_and_messages(self, user: FetchedMember) -> Tuple[Union[bool, str], Tuple[str, str]]:
"""Gets the time of verification and amount of messages for `member`."""
- user_activity = await self.bot.api_client.get(f'bot/users/{user.id}/metricity_data')
-
activity_output = []
- if user_activity['verified_at'] is not None:
- verified_delta_formatted = time_since(parser.isoparse(user_activity['verified_at']), max_units=3)
- activity_output.append(f'This user verified {verified_delta_formatted}')
+ try:
+ user_activity = await self.bot.api_client.get(f'bot/users/{user.id}/metricity_data')
+ except ResponseCodeError as e:
+ verified_at = False
+ activity_output = f"{e.status}: No activity"
else:
- activity_output.append('This user is not verified.')
+ if user_activity['verified_at'] is not None:
+ verified_at = time_since(parser.isoparse(user_activity["verified_at"]), max_units=3)
+ else:
+ verified_at = "Not verified"
- if user_activity['total_messages']:
- activity_output.append(f"This user has a total of {user_activity['total_messages']} messages.")
- else:
- activity_output.append(f"This user has not sent any messages on this server.")
+ if user_activity["total_messages"]:
+ activity_output.append(user_activity['total_messages'])
+ else:
+ activity_output.append("No messages")
+
+ if user_activity["activity_blocks"]:
+ activity_output.append(user_activity["activity_blocks"])
+ else:
+ activity_output.append("No activity")
+
+ activity_output = "\n".join(
+ f"{name}: {metric}" for name, metric in zip(["Messages", "Activity blocks"], activity_output))
- return "Activity", "\n".join(activity_output)
+ return verified_at, ("Activity", activity_output)
def format_fields(self, mapping: Mapping[str, Any], field_width: Optional[int] = None) -> str:
"""Format a mapping to be readable to a human."""