La función de lamda en @ bot.message_handler () no funciona correctamente en Telebot Python
Intenté implementar la siguiente línea de código en el script de Python para la construcción de un bot de telegrama usando telebot.
@bot.message_handler(func=lambda msg:True if msg.text.startswith('/test'))
def test_start(message):
msg=bot.send_message(message.chat.id,'This is feature is under developement')
El código anterior me da un error de sintaxis.
@bot.message_handler(func=lambda msg:True if msg.text.startswith('/test') else False)
def test_start(message):
msg=bot.send_message(message.chat.id,'This is feature is under developement')
Este código resuelve el error de sintaxis, pero aún así, no hace lo que quiero que haga. Cuando un usuario envía '/ probar algún texto', quiero identificar esto y realizar algunas acciones después de eso.
Soy relativamente nuevo en Python y esta es la primera vez que uso las funciones telebot y lambda. Así que por favor ayúdame a entrar
- identificando por qué el primer código me dio un error de sintaxis.
- Cómo implementar esto comienza con ('/ test') correctamente. Muchas gracias de antemano.
Respuestas
Debido a que el operador ternario tiene una sintaxis específica, debe seguirse:
<value if True> if <condition> else <value if False>
Lo que hizo en la primera muestra es:
<value if True> if <condition>
Además, no tienes que hacerlo como lo hiciste
True if msg.text.startswith('/test') else False
.startswith()regresa boolpor su cuenta.
No está claro qué hace el decorador, pero ¿por qué no realiza la verificación dentro de la función?
@bot.message_handler
def test_start(message):
if msg.startswith('/test'):
msg=bot.send_message(message.chat.id,'This is feature is under developement')