Какой способ лучше использовать в хендлерах pyTelegramBotAPI?
Когда боту нужно ответить на определенный текст сообщения обычно делают следующим образом, т.е. проверка делается в функции после хендлера:
@bot.message_handler()
def hi(message):
if message.text.lower() == 'привет':
bot.send_message(message.chat.id, 'Привет!')
Можно сделать по другому и все будет также работать:
@bot.message_handler(func = lambda message: message.text.lower() == 'привет')
def hi(message):
bot.send_message(message.chat.id, 'Привет!')
Оба способа работают, но какой из них более правильный и рациональный?
Ответы (1 шт):
ИМХО.
Собственно, первый вариант имеет смысл когда два разных условия требуют выполнение одного кода по началу или концу и вместо того чтобы делать 2 хендлера ты делаеш один но перед/после/в_какой-то_другой_момент выполняешь определенный код, (к примеру запись в БД нового юзера) а после проверяешь на условие по тексту.
Второй вариант лучше для понимания (опять же ИМХО), каждая функция делает свою работу, и вам не нужно показывать весь код ваших ифов
при условии что словите багу и побежите сюда искать ответ (хотя скорее всего придется).
Также не забывайте про порядок выполнение хендлеров, если вы запихаете все в один хендлер, то есть вероятность что вы запутаетесь(впрочем можно и наоборот). Пустые хендлеры в целом не очень хорошая практика, обычно их кидают в конец кода если они вообще есть.