Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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)