Не правильно работа.т if и elif c использованием Telebot Python
Бот в телеграмме, предназначенный для проведения тайного санты. Сам алгоритм работает прекрасно. Однако вместе с библиотекой Telebot происходит, что-то непонятное. Выводит только первое сообщение независимо от полученных данных. `
import telebot
token = 'токен'
bot = telebot.TeleBot(token)
@bot.message_handler(commands=['start'])
def start_message(message):
sti= open('12367.webp','rb')
bot.send_sticker(message.chat.id, sti)
bot.send_message(message.chat.id, 'как тебя зовут? \n\n(<i>Имя Фамилия</i>)',parse_mode='HTML')
@bot.message_handler(content_types=['text'])
def send_text1(message):
if message.text == 'Рома':
bot.send_message(message.from_user.id, ' <b>Рома</b>, привет!',parse_mode='HTML')
elif message.text.lower() == 'Катя':
bot.send_message(message.from_user.id, '<b>Екатерина</b>, привет!,parse_mode='HTML')
elif message.text.lower() == 'Ксения':
bot.send_message(message.from_user.id, '<b>Ксюша</b>, привет!,parse_mode='HTML')
else:
bot.send_message(message.chat.id, 'Ты уверен? \n\n Ты точно написал свое имя правильно?')
bot.polling(none_stop=True)
`
При замене elif на if, выводит все 3 за раз. При отдельной функции для каждого человека программа не работает алгоритм проверял без библиотеки, он рабочий, не работает из-зща Telebot, а как чинить не знаю, прошу помочь, т.к. сроки горят.
Ответы (1 шт):
Смотрите, в первом случае вы проверяете такое условие:
if message.text == 'Рома':
и здесь всё хорошо. А вот в двух других случаях ваши условия выглядят иначе:
elif message.text.lower() == 'Катя':
elif message.text.lower() == 'Ксения':
Здесь вы приводите введёный пользователем текст к нижнему регистру, прежде чем сравнить его. Соответственно, в нём уже не осталось никаких заглавных букв, и вне зависимости от того, что ввёл пользователь, получившаяся строка никогда не будет равны ни "Катя" (с заглавной буквой), ни "Ксения" (тоже с заглавной буквой). И эти два условия не сработают никогда.