Skip to content

Bot de Telegram escrito en Python para organizar y gestionar quedadas. Permite crear eventos, apuntarse o cancelarse, editar información y registrar logs en Firebase Realtime Database.

Notifications You must be signed in to change notification settings

Gonza1294/Bot_Quedadas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bot Quedadas (Telegram + Firebase)

Bot de Telegram para organizar quedadas en grupo: crea, lista, edita y elimina quedadas; permite apuntarse/desapuntarse con botones inline y gestiona permisos de creador/admin. Persistencia en Firebase Realtime Database.

✨ Funcionalidades

  • /start – Inicio y teclado principal (sólo por privado)
  • /quedadas – Lista todas las quedadas y botones para apuntarse/desapuntarse
  • /ayuda – Guía de uso con explicación de botones
  • /hablame, /dado, /sorpresa_admin, /mensajeAdmin – Utilidades y mensajes admin

Flujos guiados (conversaciones):

  • Crear quedada: título → descripción → lugar → fecha → hora → confirmar/cancelar
  • Editar quedada (si eres creador o admin): título, descripción, fecha, hora, lugar

Permisos/seguridad:

  • Sólo funciona por privado y para usuarios del grupo CHAT_ID o en lista usuarios_admitidos
  • Logs de acciones (crear, borrar, editar, apuntar/desapuntar, accesos indebidos) a CHANEL_LOG

🧱 Arquitectura

  • Telegram: python-telegram-bot (v13.x) con Updater/Dispatcher, CommandHandler, MessageHandler, CallbackQueryHandler, ConversationHandler
  • Firebase: Pyrebase sobre Realtime Database (estructura simple por nodos)

🧩 Requisitos

  • Python 3.8+
  • Dependencias principales:
    • python-telegram-bot==13.*
    • pyrebase4 (o pyrebase equivalente)
    • requests

Nota: Este repo usa API v13 de python-telegram-bot. Si quieres v20+, hay que migrar a ApplicationBuilder/asyncio y filters nuevos.

🔐 Variables de entorno

El bot lee estas variables en el arranque:

  • TOKEN – Token del Bot de Telegram
  • MODEdev (polling) o prod (webhook)
  • PORT – Puerto para webhook (por defecto 8443)
  • CHAT_ID – ID del grupo al que deben pertenecer los usuarios
  • CHANEL_LOG – ID de canal/grupo para logs

Firebase
Evita hardcodear el firebaseConfig en el código. Exporta estas como variables o carga un JSON seguro. (En el código original aparecen embebidas).

🗄️ Estructura de datos (Realtime Database)

Nodos utilizados (nombres tal cual en código):

quedadas/ id:int: index: int creador: [first_name, username, user_id] titulo: string descripcion: string lugar: string personas: [[first_name, username, user_id], ...] # primer elemento "None" para placeholder fecha: string hora: string

usuarios_admitidos/ <auto_id>: [first_name, username, user_id]

administradores/ <auto_id>: [first_name, username, user_id]

TMP_QDDAS/ <user_id>: ... # buffers temporales durante creación

TMP_Edit_QDDAS/ <user_id>: ... # buffers temporales durante edición

▶️ Ejecución local (DEV)

  1. Configura las variables de entorno.
  2. Instala dependencias.
  3. Lanza el bot con MODE=dev para usar polling:

export TOKEN="xxxx" export MODE="dev" export CHAT_ID="123456789" # id del grupo export CHANEL_LOG="123456789" # id del canal de logs python bot_quedadas.py

En modo dev se inicia start_polling() y queda en idle().

☁️ Despliegue (PROD)

Para webhook (ej. PaaS tipo Heroku/Render):

  1. Expone un endpoint HTTPS público.
  2. Define las mismas env vars, con MODE=prod.
  3. Ajusta la URL del webhook (el código trae una URL hardcodeada a Heroku que deberías personalizar):

updater.start_webhook( listen="0.0.0.0", port=PORT, url_path=TOKEN, webhook_url="https:///" + TOKEN )

En el código original está https://bot-quedadas.herokuapp.com/ — cámbialo a tu dominio.

🧭 Uso

  • Inicia el bot por privado con /start.
  • Pulsa “Mostrar Quedadas” para ver el detalle y apuntarte/desapuntarte con botones inline.
  • “Nueva Quedada” abre un flujo guiado (puedes escribir Cancelar en cualquier paso).
  • Si eres creador o admin, verás “Modificar Quedada” y “Borrar Quedada”.

🛡️ Seguridad y buenas prácticas

  • Firebase: No publiques el firebaseConfig en el repo; usa variables/secret manager y reglas de lectura/escritura mínimas por rol.
  • Webhook: Parametriza la URL, no dejes dominios fijos en el código.
  • Permisos de Bot: El bot necesita poder leer miembros del grupo para getChatMember y así validar acceso.
  • PTB v20 (opcional): Considera migrar para soporte a largo plazo.

🐛 Problemas comunes

  • “No eres miembro del grupo” por privado → verifica CHAT_ID y que el usuario esté en el grupo o en usuarios_admitidos.
  • El webhook no recibe updates → revisa webhook_url, PORT, TLS y permisos del bot.
  • Errores de DB NoneType → la estructura mínima de nodos debe existir; inicializa listas/valores por defecto.

📜 Licencia

MIT (o la que prefieras).


Créditos: Base construida con python-telegram-bot (v13) y Pyrebase. Logs con logging estándar.

About

Bot de Telegram escrito en Python para organizar y gestionar quedadas. Permite crear eventos, apuntarse o cancelarse, editar información y registrar logs en Firebase Realtime Database.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages