es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo recibir múltiples URLs de un bot de Telegram utilizando aiogram

El usuario debe ingresar 3 enlaces uno por uno al bot.

Y el bot debería guardar cada enlace en una nueva variable (por ejemplo: link1, link2, link3).

Intenté usar un manejador de mensajes con una iteración, pero por alguna razón no funciona.

¿Hay alguna solución alternativa?

link1 = ''
link2 = ''
link3 = ''
counter = 1

@dp.message_handler(Text(contains="https://" or "http://",))
async def url(message: types.Message):
    if link1 == '':
        counter += 1
        link1 = message.text
    elif link2 == '':
        counter += 1
        link2 = message.text
    elif link3 == '':
        counter += 1
        link3 = message.text
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay algunos problemas con el código proporcionado. Un problema es que las variables link1, link2 y link3 no están definidas dentro del alcance de la función url. Otro problema es que la variable counter no se está utilizando correctamente.

    Aquí hay una posible solución:

    links = []
    
    @dp.message_handler(Text(contains=["https://", "http://"]))
    async def url(message: types.Message):
        if len(links) < 3:
            links.append(message.text)
            await message.answer(f"Enlace {len(links)} guardado.")
        else:
            await message.answer("Ya has introducido 3 enlaces.")
    
    

    En esta solución, definimos una variable de lista links para almacenar los enlaces. La función message_handler verifica si el mensaje contiene un enlace y si la lista tiene menos de 3 enlaces. Si se cumplen ambas condiciones, el enlace se agrega a la lista y se envía un mensaje de respuesta para confirmar que el enlace se guardó. Si la lista ya tiene 3 enlaces, se envía un mensaje diferente para informar al usuario que no se pueden agregar más enlaces.

    ¡Espero que esto ayude!

Comments are closed.