@ bot.message_handler () içindeki lamda işlevi telebot python'da düzgün çalışmıyor

Sep 18 2020

Telebot kullanarak bir telgraf botu oluşturmak için python betiğinde aşağıdaki kod satırını uygulamaya çalıştım.

@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')

Yukarıdaki kod bana bir sözdizimi hatası veriyor.

@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')

Bu kod sözdizimi hatasını çözüyor, ancak yine de benim yapmasını istediğim şeyi yapmıyor. Bir kullanıcı '/ test bir metin' gönderdiğinde, bunu tanımlamak ve bundan sonra bazı eylemler yapmak istiyorum.

Python'da nispeten yeniyim ve bu benim telebot ve lambda işlevlerini ilk kez kullanıyorum. Lütfen bana yardım et

  1. 1. kodun neden bana sözdizimi hatası verdiğini tanımlama.
  2. Bu startswith ('/ test') nasıl doğru şekilde uygulanır? Şimdiden çok teşekkür ederim.

Yanıtlar

2 go2nirvana Sep 18 2020 at 08:05

Üçlü operatörün izlenmesi gereken belirli bir sözdizimi olduğundan:

<value if True> if <condition> else <value if False>

İlk örnekte yaptığınız şey:

<value if True> if <condition>

Ayrıca yaptığın gibi yapmak zorunda değilsin

True if msg.text.startswith('/test') else False

.startswith()boolkendi kendine döner .

Dekoratörün ne yaptığı belli değil, ama neden fonksiyonun içini kontrol etmiyorsunuz?

@bot.message_handler
def test_start(message):
    if msg.startswith('/test'):
        msg=bot.send_message(message.chat.id,'This is feature is under developement')