async def METHOD_NAME(
    character_id: int,
    pool: asyncpg.Pool,
    user_id: int,
    lang: typing.Union[discord.Locale, str],
) -> typing.List[discord.SelectOption]:
    c_fanarts = await get_character_fanarts(str(character_id))
    rows = await pool.fetch(
        """
        SELECT
            nickname, image_url, current
        FROM
            custom_image
        WHERE
            user_id = $1 AND character_id = $2
        """,
        user_id,
        character_id,
    )
    options: typing.List[discord.SelectOption] = [
        discord.SelectOption(
            label=text_map.get(124, lang), value="default", default=bool(not rows)
        )
    ]
    current_image_url = None
    for row in rows:
        if row["current"]:
            current_image_url = row["image_url"]
        if row["image_url"] in c_fanarts:
            continue
        if any(option.value == row["image_url"] for option in options):
            continue
        options.append(
            discord.SelectOption(
                label=row["nickname"][:100],
                description=row["image_url"][:100],
                value=row["image_url"][:100],
                default=row["current"],
            )
        )
    index = 1
    for url in c_fanarts:
        if any(option.value == url for option in options):
            continue
        label = f"{text_map.get(748, lang)} ({index})"
        options.append(
            discord.SelectOption(
                label=label,
                description=url,
                value=url,
                default=current_image_url == url,
            )
        )
        index += 1
    return options