Всем привет, пишу простенького справочного телеграм-бота, который выдаёт заготовленные ответы на текстовые запросы пользователя. Запросы и ответы заключены в условиях конструкции if-elif-else. Вот скрипт:
import telebot
TOKEN = "TOKEN"
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=['start', 'go'])
def start_handler(message):
bot.send_message(message.chat.id, 'Привет, напиши тривиальное название химического вещества, а я посмотрю, что о нём знаю.')
@bot.message_handler(content_types=['text'])
def text_handler(message):
text = message.text.lower()
chat_id = message.chat.id
if text == 'привет' or 'привет)' or 'здравствуй' or 'здравствуйте' or 'здорово' or 'здравствуй)' or 'здравствуйте)' or 'ghbdtn' or 'plhfdcndeqnt' or 'plhfdcndeq':
bot.send_message(chat_id, 'Привет, меня зовут Врунишка - главный знаток химических названий... А если серьёзно, то я всего-навсего обычный бот, который любит химию.\n\n'
'Буду рад поделиться своими знаниями. Просто напиши название вещества, а я посмотрю в своей химической базе данных.')
elif text == 'как дела?':
bot.send_message(chat_id, 'Хорошо, а у тебя?')
elif text == 'бензол' or 'benzene' or 'бензен' or 'фениловый водород' or 'фенан' or 'фениленгидрид' or 'циклогекса-1,3,5-триен' or '1,3,5-циклогексатриен' or '[6]-аннулен' or '[6]аннулен':
bot.send_message(chat_id, 'Название ИЮПАК: бензол, циклогекса-1,3,5-триен\n'
'Прочие названия: бензен, фениловый водород, [6]-аннулен\n'
'На английском: benzene, phenane, phenylene hydride, 1,3,5-Cyclohexatriene, [6]Annulene\n\n'
'Брутто-формула: C\u2086H\u2086 \n'
'Молярная масса: 78,11 г/моль')
else:
bot.send_message(chat_id, 'Простите, я ваc не понял :(')
bot.polling(none_stop=True, interval=0)
Сначала всё работало, после добавления второго elif стало игнорироваться условие else, потом вообще на любой запрос пользователя бот отправляет сообщение из условия if, игнорируя всё остальное.
Копался на форумах, но всё, что удалось найти - это метод register_next_step_handler. Добавил две строчки кода перед elif:
if text == 'привет' or 'привет)' or 'здравствуй' or 'здравствуйте' or 'здорово' or 'здравствуй)' or 'здравствуйте)' or 'ghbdtn' or 'plhfdcndeqnt' or 'plhfdcndeq':
bot.send_message(chat_id, 'Привет, меня зовут Врунишка - главный знаток химических названий... А если серьёзно, то я всего-навсего обычный бот, который любит химию.\n\n'
'Буду рад поделиться своими знаниями. Просто напиши название вещества, а я посмотрю в своей химической базе данных.')
bot.register_next_step_handler(text, text_handler)
def text_handler(message):
elif text == 'как дела?':
bot.send_message(chat_id, 'Хорошо, а у тебя?')
Но теперь выдаёт ошибку:
File "C:\Program Files (x86)\Python projects\ChemBot\main.py", line 19
elif text == 'как дела?':
^^^^
SyntaxError: invalid syntax
Process finished with exit code 1
Что я делаю не так? Как исправить? Обязательно ли выносить все текстовые условия в отдельный файл .py или таблицу exel? Планируется добавить множественные условия elif, поэтому важно понять, почему не работает.
Telebot устанавливал через pipenv install pyTelegramBotAPI, перед этим pip install pipenv
Windows 10 22H2
Python 3.11
PyCharm Community Edition 2022.3.3
Сразу скажу, что я абсолютный ноль в программировании, в python в частности, но срочно нужно написать бота для защиты проекта. Помогите, пожалуйста, а то уже отчаиваюсь.