Modified to properly handle non @ users and to use custom phrase
This commit is contained in:
@@ -41,8 +41,8 @@ async def finaliza_sorteo(update: Update, context: ContextTypes.DEFAULT_TYPE) ->
|
|||||||
if "participantes" in context.chat_data:
|
if "participantes" in context.chat_data:
|
||||||
if len(context.chat_data["participantes"]) > 0:
|
if len(context.chat_data["participantes"]) > 0:
|
||||||
ganador = random.choice(context.chat_data["participantes"])
|
ganador = random.choice(context.chat_data["participantes"])
|
||||||
logging.info(f"Ganador: @{ganador}")
|
logging.info(f"Ganador: {ganador}")
|
||||||
await context.bot.send_message(chat_id=update.effective_chat.id, text=f"¡Felicidades @{ganador}! Eres el ganador del sorteo.")
|
await context.bot.send_message(chat_id=update.effective_chat.id, text=f"¡Felicidades {ganador}! Eres el ganador del sorteo.")
|
||||||
else:
|
else:
|
||||||
logging.info("Nadie ha participado.")
|
logging.info("Nadie ha participado.")
|
||||||
await context.bot.send_message(chat_id=update.effective_chat.id, text="Nadie ha participado en el sorteo.")
|
await context.bot.send_message(chat_id=update.effective_chat.id, text="Nadie ha participado en el sorteo.")
|
||||||
@@ -52,6 +52,7 @@ async def finaliza_sorteo(update: Update, context: ContextTypes.DEFAULT_TYPE) ->
|
|||||||
# Se borra la lista de participantes para la próxima
|
# Se borra la lista de participantes para la próxima
|
||||||
if "participantes" in context.chat_data:
|
if "participantes" in context.chat_data:
|
||||||
del context.chat_data["participantes"]
|
del context.chat_data["participantes"]
|
||||||
|
del context.chat_data["frase"]
|
||||||
|
|
||||||
async def sorteo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
|
async def sorteo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
|
||||||
# Solo hacemos caso si el usuario es válido
|
# Solo hacemos caso si el usuario es válido
|
||||||
@@ -60,31 +61,39 @@ async def sorteo(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
|
|||||||
return
|
return
|
||||||
|
|
||||||
logging.info("Empezando sorteo")
|
logging.info("Empezando sorteo")
|
||||||
|
frase = update.message.text.split("/sorteo ")[1]
|
||||||
global SORTEO_ACTIVO
|
global SORTEO_ACTIVO
|
||||||
# Empezamos a leer mensajes
|
# Empezamos a leer mensajes
|
||||||
SORTEO_ACTIVO = True
|
SORTEO_ACTIVO = True
|
||||||
# Si ya existía una lista de participantes, nos aseguramos de borrarla
|
# Si ya existía una lista de participantes, nos aseguramos de borrarla
|
||||||
if "participantes" in context.chat_data:
|
if "participantes" in context.chat_data:
|
||||||
del context.chat_data["participantes"]
|
del context.chat_data["participantes"]
|
||||||
|
del context.chat_data["frase"]
|
||||||
|
logging.info(f"Frase activada: {frase}")
|
||||||
|
context.chat_data["frase"]
|
||||||
logging.info("Sorteo activo, leyendo mensajes")
|
logging.info("Sorteo activo, leyendo mensajes")
|
||||||
await context.bot.send_message(chat_id=update.effective_chat.id, text="¡Empieza el sorteo! Escribe 'Tengo un Tesla y quiero un referido' para participar.")
|
await context.bot.send_message(chat_id=update.effective_chat.id, text=f"¡Empieza el sorteo! Escribe '{frase}' para participar.")
|
||||||
|
|
||||||
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
|
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
|
||||||
global SORTEO_ACTIVO
|
global SORTEO_ACTIVO
|
||||||
# Leemos mensajes solo si el sorteo está activo
|
# Leemos mensajes solo si el sorteo está activo
|
||||||
if SORTEO_ACTIVO:
|
if SORTEO_ACTIVO:
|
||||||
logging.info(f"Mensaje recibido de '@{update.message.from_user.username}' con el siguiente texto: '{update.message.text}'")
|
if update.message.from_user.username is None:
|
||||||
|
nombre_participante = update.message.from_user.first_name
|
||||||
|
else:
|
||||||
|
nombre_participante = f"@{update.message.from_user.username}"
|
||||||
|
logging.info(f"Mensaje recibido de '{nombre_participante}' con el siguiente texto: '{update.message.text}'")
|
||||||
# Inicializamos lista de participantes vacía
|
# Inicializamos lista de participantes vacía
|
||||||
if "participantes" not in context.chat_data:
|
if "participantes" not in context.chat_data:
|
||||||
context.chat_data["participantes"] = []
|
context.chat_data["participantes"] = []
|
||||||
# Solo le hacemos caso a los mensajes que contengan la frase del concurso
|
# Solo le hacemos caso a los mensajes que contengan la frase del concurso
|
||||||
if "tengo un tesla y quiero un referido" in update.message.text.lower():
|
if context.chat_data["frase"].lower() in update.message.text.lower():
|
||||||
# Si el usuario ya está participando, no lo volvemos a añadir
|
# Si el usuario ya está participando, no lo volvemos a añadir
|
||||||
if update.message.from_user.username not in context.chat_data["participantes"]:
|
if nombre_participante not in context.chat_data["participantes"]:
|
||||||
context.chat_data["participantes"].append(update.message.from_user.username)
|
context.chat_data["participantes"].append(nombre_participante)
|
||||||
await update.message.reply_text(f"¡@{update.message.from_user.username} has sido añadido al sorteo!")
|
await update.message.reply_text(f"¡{nombre_participante} has sido añadido al sorteo!")
|
||||||
else:
|
else:
|
||||||
await update.message.reply_text(f"¡@{update.message.from_user.username} ya estabas añadido en el sorteo!")
|
await update.message.reply_text(f"¡{nombre_participante} ya estabas añadido en el sorteo!")
|
||||||
|
|
||||||
async def id(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
|
async def id(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
|
||||||
logging.info(f"@{update.message.from_user.username} : {update.message.from_user.id}")
|
logging.info(f"@{update.message.from_user.username} : {update.message.from_user.id}")
|
||||||
|
|||||||
Reference in New Issue
Block a user