Un bot de Telegram es una forma perfecta de practicar automatización: entrada del usuario → lógica → llamada a API → respuesta. El caso “recetas por ingrediente” combina todo lo útil: HTTP, JSON y UX conversacional.
1) Requisitos
- Un token de bot creado con @BotFather.
- Credenciales de una API de recetas (por ejemplo Edamam).
- Python + librería de Telegram (según la versión que uses en clase).
2) Flujo del bot
- El usuario escribe
/receta polloo pulsa un botón. - El bot valida el texto (que haya ingrediente).
- Hace una petición HTTP a la API (con
requestsohttpx). - Parsea JSON y responde con título + enlace + imagen (si existe).
3) Petición a una API REST (ejemplo genérico)
import os
import requests
def buscar_recetas(ingrediente: str):
app_id = os.getenv("EDAMAM_APP_ID")
app_key = os.getenv("EDAMAM_APP_KEY")
url = "https://api.edamam.com/api/recipes/v2"
params = {
"type": "public",
"q": ingrediente,
"app_id": app_id,
"app_key": app_key,
}
r = requests.get(url, params=params, timeout=10)
r.raise_for_status()
data = r.json()
return data.get("hits", [])
4) Respuesta “amigable”
En bots, importa el formato. Mejor enviar 3–5 recetas que 30 de golpe.
def formatear_hits(hits):
if not hits:
return "No he encontrado recetas. Prueba con otro ingrediente."
lines = ["Recetas encontradas:"]
for h in hits[:5]:
recipe = h.get("recipe", {})
title = recipe.get("label", "Receta")
url = recipe.get("url", "")
lines.append(f"- {title}\n {url}")
return "\n".join(lines)
5) Buenas prácticas
- No hardcodees tokens: usa variables de entorno.
- Timeouts: evita bots colgados con
timeout. - Errores claros: responde con un mensaje útil si la API falla.
