Puedes usar una Raspberry Pi para correr tu bot de Telegram 24/7

Ventajas sobre PythonAnywhere

  1. Sin límite de 1 Always-on task.
  2. Puedes tener varios bots de Telegram, scrapers, servicios Flask/FastAPI y cron jobs en simultáneo.
  3. Sin costos mensuales adicionales.

Paso 1: Preparar tu Raspberry Pi

  1. Instalar el sistema operativo

    • Descarga Raspberry Pi Imager.
    • Graba Raspberry Pi OS Lite (Bookworm) – 32 bits en la microSD.
    • Inserta la microSD en la Pi y enciéndela.

Use una Raspberry Pi 2 con una MicroSD de 8 GB

Paso 2: Instalar Python y dependencias

  1. Accede a la terminal. Puedes hacerlo desde otra PC usando SSH:
ssh pi@<ip_de_tu_pi>

Si es una instalación limpia de Raspberry Pi OS, el usuario predeterminado es pi y la contraseña raspberry

Yo configure el usuario cómo realyussel. Entonces:

ssh realyussel@192.168.1.105
  1. Raspberry Pi OS ya trae Python, pero actualiza todo por si acaso:
sudo apt update && sudo apt upgrade -y
sudo apt install python3-dev python3-pip python3-setuptools python3-wheel libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libopenjp2-7-dev libtiff5-dev tk-dev tcl-dev
  1. Utiliza venv para instalar dependencias

Tu Raspberry Pi (con Raspberry Pi OS Bookworm o Debian 12) ahora sigue PEP 668, lo que restringe el uso de pip install a nivel global (system-wide) y obliga a usar apt para instalar paquetes de Python empaquetados por Debian. O utilizar entornos virtuales (venv) para paquetes externos (PyPI).

A) Instala python3-venv si no está instalado:

sudo apt update
sudo apt install python3-venv -y

B) Crea un entorno virtual:

python3 -m venv botenv

C) Activa el entorno virtual:

source botenv/bin/activate

Ahora tu prompt cambiará a: (botenv) pi@raspberrypi:~$

D) Instala paquetes dentro del entorno....

README

deactivate

Paso 3: Bot

  1. Sube tus archivos a la Raspberry Pi. Puedes hacerlo con scp desde tu PC:
scp club_cafe_bot.py consumos.csv precios_actuales.json realyussel@192.168.1.105:/home/realyussel
  1. Ejecutar el bot
python3 club_cafe_bot.py
  1. ¡Listo!.... El bot ya está funcionando.

tmux: Mantiene el bot activo.

  1. Instala tmux:
sudo apt install tmux
  1. Crea una sesión nueva:
tmux new -s cafe_bot
  1. Ejecuta el bot:
python3 club_cafe_bot.py
  1. Presiona Ctrl + B, luego D para salir del tmux (dejas el bot corriendo en segundo plano).

  2. Ahora puedes cerrar SSH y la terminal con seguridad:

exit
  1. Para volver:
tmux attach -t cafe_bot

cron: Reinicia el bot automáticamente

En caso de fallo o si reinicias la Pi, deberás lanzar tmux de nuevo, o automatizar el arranque al encender la Pi:

No se creá la sesión tmux al reiniciar, aunque cron intentá correrlo. Posiblemente por entorno o tiempo de arranque.

Exportar:

crontab -l > mis_tareas_cron.txt

Verifica rutas absolutas y usa esas rutas completas en el cron:

which tmux
which python3
  1. Edita el archivo crontab:
crontab -e
  • Selecciona el editor nano (generalmente opción 1 o 2)
  • Agrega al final:
@reboot sleep 60 && /usr/bin/tmux new -d -s cafe_bot '/usr/bin/python3 /home/realyussel/club_cafe_bot.py' >> /home/realyussel/cron_tmux.log 2>&1

Usamos rutas absolutas para evitar problemas de PATH en cron, retrasamos la ejecución 20 segundos tras el reinicio para que la red esté lista y registra salida de errores para depuración.

  • Presiona Ctrl + O para Guardar cambios
  • Presiona Enter para confirmar.
  • Presiona Ctrl + X para salir de nano.
  • Verificar que se guardó correctamente
crontab -l

Mejor alternativa 24/7: usa systemd

systemd es más confiable para procesos persistentes, maneja reinicios automáticos y arranca después de que la red esté disponible. Sin depender de tmux ni cron.

Crea:

sudo nano /etc/systemd/system/cafe_bot.service

Pega este contenido:

[Unit]
Description=Club Cafe Telegram Bot
After=network-online.target
Wants=network-online.target

[Service]
User=realyussel
WorkingDirectory=/home/realyussel
ExecStart=/home/realyussel/botenv/bin/python /home/realyussel/club_cafe_bot.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Recargar systemd para detectar el nuevo servicio

sudo systemctl daemon-reload

Habilitar el servicio para iniciar automáticamente al arrancar

sudo systemctl enable cafe_bot.service

Iniciar el servicio inmediatamente

sudo systemctl start cafe_bot.service

Verificar que está corriendo correctamente (debería indicar: "Active: active (running)")

sudo systemctl status cafe_bot.service

Como ya usarás systemd, elimina tu línea en crontab

Parar o reiniciar

  • Para detener: sudo systemctl stop cafe_bot.service
  • Para reiniciar (tras modificar tu bot): sudo systemctl restart cafe_bot.service
  • Revisa logs, 🚩 Si algo falla: journalctl -u cafe_bot.service -xe
  • Ver logs en tiempo real: journalctl -u cafe_bot.service -f