async def user_( client, event, user: ('user', '*spy?*') = None, ): """Shows some information about your or about the selected user.""" if user is None: user = event.user guild = event.guild embed = Embed(user.full_name) created_at = user.created_at embed.add_field( 'User Information', f'Created: {created_at:{DATETIME_FORMAT_CODE}} [*{elapsed_time(created_at)} ago*]\n' f'Profile: {user:m}\n' f'ID: {user.id}') if guild is None: profile = None else: profile = user.guild_profiles.get(guild, None) if profile is None: if user.avatar_type is ICON_TYPE_NONE: color = user.default_avatar.color else: color = user.avatar_hash & 0xFFFFFF embed.color = color else: embed.color = user.color_at(guild) roles = profile.roles if roles is None: roles = '*none*' else: roles.sort() roles = ', '.join(role.mention for role in reversed(roles)) text = [] if profile.nick is not None: text.append(f'Nick: {profile.nick}') if profile.joined_at is None: await client.guild_user_get(user.id) # Joined at can be `None` if the user is in lurking mode. joined_at = profile.joined_at if joined_at is not None: text.append( f'Joined: {joined_at:{DATETIME_FORMAT_CODE}} [*{elapsed_time(joined_at)} ago*]' ) boosts_since = profile.boosts_since if (boosts_since is not None): text.append( f'Booster since: {boosts_since:{DATETIME_FORMAT_CODE}} [*{elapsed_time(boosts_since)}*]' ) text.append(f'Roles: {roles}') embed.add_field('In guild profile', '\n'.join(text)) embed.add_thumbnail(user.avatar_url_as(size=128)) return embed
async def command(client, message, user: Converter( 'user', ConverterFlag.user_default.update_by_keys(everywhere=True, profile=True), default_code='message.author')): guild = message.guild embed = Embed(user.full_name) embed.add_field( 'User Information', f'Created: {elapsed_time(user.created_at)} ago\n' f'Profile: {user:m}\n' f'ID: {user.id}') if guild is None: profile = None else: profile = user.guild_profiles.get(guild) if profile is None: if user.avatar_type is ICON_TYPE_NONE: color = user.default_avatar.color else: color = user.avatar_hash & 0xFFFFFF embed.color = color else: embed.color = user.color_at(guild) roles = profile.roles if roles is None: roles = '*none*' else: roles.sort() roles = ', '.join(role.mention for role in reversed(roles)) text = [] if profile.nick is not None: text.append(f'Nick: {profile.nick}') if profile.joined_at is None: await client.guild_user_get(user.id) text.append(f'Joined: {elapsed_time(profile.joined_at)} ago') boosts_since = profile.boosts_since if (boosts_since is not None): text.append(f'Booster since: {elapsed_time(boosts_since)}') text.append(f'Roles: {roles}') embed.add_field('In guild profile', '\n'.join(text)) embed.add_thumbnail(user.avatar_url_as(size=128)) if user.activity is not ActivityUnknown or user.status is not Status.offline: text = [] if user.status is Status.offline: text.append('Status : offline\n') elif len(user.statuses) == 1: for platform, status in user.statuses.items(): text.append(f'Status : {status} ({platform})\n') else: text.append('Statuses :\n') for platform, status in user.statuses.items(): text.append(f'**>>** {status} ({platform})\n') if user.activity is ActivityUnknown: text.append('Activity : *unknown*\n') elif len(user.activities) == 1: text.append('Activity : ') add_activity(text, user.activities[0]) else: text.append('Activities : \n') for index, activity in enumerate(user.activities, 1): text.append(f'{index}.: ') add_activity(text, activity) embed.add_field('Status and Activity', ''.join(text)) await client.message_create(message.channel, embed=embed)