Почему после цикла if не работает код?
После выбора 'Гороскоп на год' код не работает. Можете пожалуйста помочь с этим. Windows10,python 3.8
# -*- coding: utf8 -*-
import telebot
import requests
from bs4 import BeautifulSoup
from telebot import types
bot = telebot.TeleBot(token='my token')
URL = 'url'
HEADERS = {
'user_agent': 'bla bla bla'
}
response = requests.get(URL, headers=HEADERS)
soup = BeautifulSoup(response.text, 'html.parser')
horoscopes = soup.findAll('div', class_='horoscope_item floats_wrapper')
word=''
for i in horoscopes:
word += i.find('div', class_ = 'text_box').text
@bot.message_handler(commands=['start', 'help'])
def main(message):
bot.send_message(message.from_user.id,'Привет! Что ты хочешь узнать? Гороскоп на год или Гороскоп на сегодня?')
if message.text.lower() == 'Гороскоп на год':
bot.send_message(message.from_user.id, 'Какой у тебя гороскоп?Выбери:овен,телец,близнецы,рак,лев,дева,весы,скорпион,стрелец,козерог,водолей,рыбы')
if message.text.lower() == "овен":
bot.send_message(message.from_user.id,
"Его союз с Белой Металлической Крысой даст")
elif message.text.lower() == 'телец':
bot.send_message(message.from_user.id,
'Покровительница 2020 года – Белая Крыса – ')
elif message.text.lower() == 'близнецы':
bot.send_message(message.from_user.id,
'Все их душевные порывы, спонтанные ')
elif message.text.lower() == 'рак':
bot.send_message(message.from_user.id,
'Хозяйка года – Белая Крыса, несмотря на всю ')
elif message.text.lower() == 'лев':
bot.send_message(message.from_user.id,
'Будет и период высокого подъема, когда ')
elif message.text.lower() == 'скорпион':
bot.send_message(message.from_user.id,
'Скорпионы – люди с яркой харизмой и высокой ')
elif message.text.lower() == 'стрелец':
bot.send_message(message.from_user.id,
'Представителям этого знака зодиака, как ')
elif message.text.lower() == 'козерог':
bot.send_message(message.from_user.id,'Повелительница года не')
elif message.text.lower() == 'водолей':
bot.send_message(message.from_user.id,'Перед представителями ')
elif message.text.lower() == 'рыбы':
bot.send_message(message.from_user.id, 'В новый 2020 год Рыбы ')
else:
bot.send_message(message.from_user.id, 'Я тебя не понимаю! Напиши повторно.')
bot.polling(none_stop=True)
elif message.text.lower() == 'Гороскоп на сегодня':
bot.send_message(message.chat.id, 'Ваш гороскоп на сегодня:' + word)
if __name__ == '__main__':
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: kesha1225
→ Ссылка
Для приема ответа на вопрос бота надо сделать отдельный хендлер
@bot.message_handler(commands=['start', 'help'])
def main(message):
bot.send_message(message.from_user.id,'Привет! Что ты хочешь узнать? Гороскоп на год или Гороскоп на сегодня?')
@bot.message_handler(content_types=['text'])
def send_answer(message):
if message.text.lower() == 'Гороскоп на год':
bot.send_message(message.from_user.id, 'Какой у тебя гороскоп?Выбери:овен,телец,близнецы,рак,лев,дева,весы,скорпион,стрелец,козерог,водолей,рыбы')
elif message.text.lower() == "овен":
bot.send_message(message.from_user.id,
"Его союз с Белой Металлической Крысой даст")
elif message.text.lower() == 'телец':
bot.send_message(message.from_user.id,
'Покровительница 2020 года – Белая Крыса – ')
...
По хорошему надо на каждый вопрос делать свой хендлер.
@bot.message_handler(func=lambda message: message.text == 'Гороскоп на год')
...
@bot.message_handler(func=lambda message: message.text == 'овен')
...
