A função lamda em @ bot.message_handler () não está funcionando corretamente no telebot python
Tentei implementar a seguinte linha de código em script python para a construção de um 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')
O código acima me dá um erro de sintaxe.
@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 resolve o erro de sintaxe, mas ainda assim, não faz o que eu quero. Quando um usuário envia '/ test some text', quero identificar isso e fazer algumas ações depois disso.
Sou relativamente novo em python e esta é minha primeira vez usando funções telebot e lambda. Então por favor me ajude em
- identificando porque o primeiro código me deu um erro de sintaxe.
- Como implementar este startswith ('/ test') corretamente. Muito obrigado antecipadamente.
Respostas
Como o operador ternário tem uma sintaxe específica, ela deve ser seguida:
<value if True> if <condition> else <value if False>
O que você fez na primeira amostra é:
<value if True> if <condition>
Além disso, você não tem que fazer como fez
True if msg.text.startswith('/test') else False
.startswith()retorna boolpor conta própria.
Não está claro o que o decorador faz, mas por que você simplesmente não executa a verificação dentro da função?
@bot.message_handler
def test_start(message):
if msg.startswith('/test'):
msg=bot.send_message(message.chat.id,'This is feature is under developement')