feat: Configure environment variables, refactor onboarding conversation states, and expose database port in Docker Compose.

This commit is contained in:
Marco Gallegos
2025-12-14 10:04:34 -06:00
parent 3f3520188c
commit 7ce9bacce1
5 changed files with 47 additions and 12 deletions

25
.env
View File

@@ -1,6 +1,27 @@
# Configuración de Telegram # Configuración de Telegram
TELEGRAM_TOKEN=TU_TOKEN_NUEVO_AQUI TELEGRAM_TOKEN=8549319557:AAFI6hOU_EC30sKPfRVSlKylxN7SeDvjzhg
# Webhooks de n8n (puedes agregar más aquí en el futuro) # Webhooks de n8n (puedes agregar más aquí en el futuro)
WEBHOOK_CONTRATO=https://flows.soul23.cloud/webhook/DuXh9Oi7SCAMf9 WEBHOOK_CONTRATO=https://flows.soul23.cloud/webhook/DuXh9Oi7SCAMf9
# WEBHOOK_VACACIONES=https://... (futuro) WEBHOOK_PRINT=
WEBHOOK_VACACIONES=
# --- DATABASE ---
# Usado por el servicio de la base de datos en docker-compose.yml
MYSQL_DATABASE=vanessa_logs
MYSQL_USER=marcogll
MYSQL_PASSWORD=#yamakasi111#
MYSQL_ROOT_PASSWORD=#knoxville369#
# --- SMTP ---
# Usado por el módulo de impresión para enviar correos
SMTP_SERVER=smtp.hostinger.com
SMTP_PORT=465
SMTP_USER=print.service@vanityexperience.mx
SMTP_PASSWORD=#Yamakasi111#
SMTP_RECIPIENT=Print Service print.service@vanityexperience.mx
IMAP_SERVER=imap.hostinger.com
IMAP_PORT=993
IMAP_USER=print.service@vanityexperience.mx
IMAP_PASSWORD=#Yamakasi111#
DATABASE_URL=mysql+mysqlconnector://marcogll:#yamakasi111#@localhost:3306/vanessa_logs

View File

@@ -19,4 +19,8 @@ SMTP_SERVER=smtp.hostinger.com
SMTP_PORT=465 SMTP_PORT=465
SMTP_USER=your_email@example.com SMTP_USER=your_email@example.com
SMTP_PASSWORD=your_password SMTP_PASSWORD=your_password
SMTP_RECIPIENT=your_email@example.com IMAP_SERVER=imap.hostinger.com
IMAP_PORT=993
IMAP_USER=your_email@example.com
IMAP_PASSWORD=your_password

View File

@@ -1,4 +1,4 @@
version: '3.8' version: "3.8"
services: services:
bot: bot:
@@ -25,6 +25,8 @@ services:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
volumes: volumes:
- mysql_data:/var/lib/mysql - mysql_data:/var/lib/mysql
ports:
- "3306:3306"
volumes: volumes:
mysql_data: mysql_data:

View File

@@ -1,6 +1,10 @@
import os import os
import logging import logging
from dotenv import load_dotenv from dotenv import load_dotenv
# Cargar variables de entorno antes de importar módulos que las usan
load_dotenv()
from telegram import Update from telegram import Update
from telegram.constants import ParseMode from telegram.constants import ParseMode
from telegram.ext import Application, Defaults, CommandHandler, ContextTypes from telegram.ext import Application, Defaults, CommandHandler, ContextTypes
@@ -12,7 +16,7 @@ from modules.rh_requests import vacaciones_handler, permiso_handler
from modules.database import log_request from modules.database import log_request
# from modules.finder import finder_handler (Si lo creas después) # from modules.finder import finder_handler (Si lo creas después)
load_dotenv()
TOKEN = os.getenv("TELEGRAM_TOKEN") TOKEN = os.getenv("TELEGRAM_TOKEN")
logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO) logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO)

View File

@@ -325,12 +325,7 @@ def main():
defaults = Defaults(parse_mode=ParseMode.MARKDOWN) defaults = Defaults(parse_mode=ParseMode.MARKDOWN)
application = Application.builder().token(TOKEN).defaults(defaults).build() application = Application.builder().token(TOKEN).defaults(defaults).build()
states = {} # states definition moved to global scope
for i in range(34):
callback = partial(manejar_flujo, estado_actual=i)
states[i] = [MessageHandler(filters.TEXT & ~filters.COMMAND, callback)]
states[34] = [MessageHandler(filters.TEXT & ~filters.COMMAND, finalizar)]
conv_handler = ConversationHandler( conv_handler = ConversationHandler(
entry_points=[CommandHandler("contrato", start)], entry_points=[CommandHandler("contrato", start)],
@@ -344,7 +339,16 @@ def main():
if __name__ == "__main__": if __name__ == "__main__":
main() main()
# ... todo el código del contrato ... # ... todo el código del contrato ...
# Definición de estados para el ConversationHandler
states = {}
for i in range(34):
callback = partial(manejar_flujo, estado_actual=i)
states[i] = [MessageHandler(filters.TEXT & ~filters.COMMAND, callback)]
states[34] = [MessageHandler(filters.TEXT & ~filters.COMMAND, finalizar)]
# Al final: # Al final:
onboarding_handler = ConversationHandler( onboarding_handler = ConversationHandler(
entry_points=[CommandHandler("welcome", start)], # Cambiado a /welcome entry_points=[CommandHandler("welcome", start)], # Cambiado a /welcome