Ejemplo n.º 1
0
    async def google(client, event, query: (str, 'query')):
        yield

        success, result_or_error_message = await search(query)
        if not success:
            yield result_or_error_message

        pages = []

        limit = len(result_or_error_message)
        if limit:
            index = 0

            while index < limit:
                result = result_or_error_message[index]
                index += 1

                page_embed = Embed(result.title, result.description, Color.random(), result.url). \
                    add_footer(f'Page {index}/{limit}', client.avatar_url)

                image_url = result.image_url
                if (image_url is not None):
                    page_embed.add_thumbnail(image_url)

                pages.append(page_embed)
        else:
            embed = Embed(query, '*no result*')
            pages.append(embed)

        await Pagination(client, event, pages)
Ejemplo n.º 2
0
    async def command(client, message):
        guild = message.guild
        if guild is None:
            return

        welscome_screen = await client.welcome_screen_get(guild)
        if welscome_screen is None:
            embed = Embed(
                description=f'**{guild.name}** *has no welcome screen enabled*.'
            )
        else:
            embed = Embed(
                f'Welcome to **{guild.name}**',
                f'{welscome_screen.description}\n\n*TOP THINGS TO DO HERE*')

            icon_url = guild.icon_url
            if (icon_url is not None):
                embed.add_thumbnail(icon_url)

            for welcome_channel in welscome_screen.welcome_channels:
                embed.add_field(
                    f'{welcome_channel.emoji:e} {welcome_channel.description}',
                    f'#{welcome_channel.channel:d}')

        await client.message_create(message.channel, embed=embed)
Ejemplo n.º 3
0
async def welcome_screen_(client, event):
    """Shows the guild's welcome screen."""
    guild = event.guild
    if guild is None:
        abort('Guild only command.')

    if guild not in client.guild_profiles:
        abort('I must be in the guild to execute this command')

    yield

    welcome_screen = await client.welcome_screen_get(guild)
    if welcome_screen is None:
        yield Embed(
            description=f'**{guild.name}** *has no welcome screen enabled*.')
        return

    description = welcome_screen.description
    if (description is None):
        description = '*TOP THINGS TO DO HERE*'
    else:
        description = f'{welcome_screen.description}\n\n*TOP THINGS TO DO HERE*'

    embed = Embed(f'Welcome to **{guild.name}**', description)

    icon_url = guild.icon_url
    if (icon_url is not None):
        embed.add_thumbnail(icon_url)

    welcome_channels = welcome_screen.welcome_channels
    if (welcome_channels is not None):
        for welcome_channel in welcome_channels:
            embed.add_field(
                f'{welcome_channel.emoji:e} {welcome_channel.description}',
                f'#{welcome_channel.channel:d}')

    yield embed
Ejemplo n.º 4
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
Ejemplo n.º 5
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)