Изучаю Python
Пробую писать телеграмм бота
При выполнении не понимает вот эту строчку
bot.send_message(message.chat.id,'Показывать текущую погоду или прогноз на ближайшие 3 часа? выбирай: ', reply_markup=keyboard)
if message.text == "Cейчас":
bot.register_next_step_handler(message, send_echo)
На любой ввод значения из бота идет по else. и соответственно не исполняется команда bot.register_next_step_handler(message, send_echo)
Что я делаю не так???
Пробую писать телеграмм бота
- Указать свою операционную систему (Windows)
- Указать версию Python ( 3.8)
- Вставьте фрагмент кода который у вас имеется на данный момент (Ниже)
Python:
import pyowm
import telebot
owm=pyowm.OWM('ХХХХХХХХХХХХХХХХХХХХХХХХХ', language = 'ru')
bot = telebot.TeleBot("ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ")
keyboard = telebot.types.ReplyKeyboardMarkup(True, True)
keyboard.row("Cейчас", "Через 3 часа")
@bot.message_handler(commands=['start'])
def start_message(message):
bot.send_message(message.chat.id,'Привет, я готов к работе! Напиши какой город ищем: ')
@bot.message_handler(content_types=['text'])
def send_text(message):
bot.send_message(message.chat.id,'Показывать текущую погоду или прогноз на ближайшие 3 часа? выбирай: ', reply_markup=keyboard)
if message.text.lower() == "сейчас":
bot.register_next_step_handler(message, send_echo)
elif message.text.lower() == "Через 3 часа":
bot.register_next_step_handler(message, send_text2)
else:
bot.register_next_step_handler(message, send_text2)
def send_echo(message):
try:
observation = owm.weather_at_place(message.text)
w = observation.get_weather()
temp=w.get_temperature('celsius')['temp']
wind=w.get_wind()['speed']
hum=w.get_humidity()
#rein=w.get_rain()
#snow=w.get_snow()
#icon=w.get_weather_icon_name()
#icon2=w.get_weather_icon_url()
answer = f"В городе {message.text} сейчас {w.get_detailed_status()} \n"
answer += f"Температура около {round(temp)} градусов\n\n"
#answer = f"{icon2}\n\n"
answer += f"Ветер: {wind} метров в секунду\n\n"
answer += f"Влажность: {hum} %\n\n"
#answer += f"Дождь: {rein} \n\n"
#answer += f"Снег: {snow} \n\n"
if temp <0:
answer += 'Мороз, надевай все что есть теплого дома )))'
elif temp<10:
answer += 'Очень холодно, оденься потеплее))'
elif temp<23:
answer += 'Прохладно, лучше оденься:)'
else:
answer += 'На улице комфортно, можно одевать летние вещи:)'
if wind <3:
answer += 'Слабый ветер. Практически не заметный'
elif wind <10:
answer += 'Ветер умеренный. Температура ощущается ниже чем есть'
elif wind <17:
answer += 'Ветер сильный. Может останешся дома?'
else:
answer += 'На улице шторм или УРАГАН. Сиди дома!'
bot.send_message(message.chat.id, answer)
except pyowm.exceptions.api_response_error.NotFoundError:
bot.send_message(message.chat.id, 'Такой город мне не известен, попробуй другой :(')
bot.send_message(message.chat.id,'Напиши какой город ищем: ')
def send_text2(message):
bot.send_message(message.chat.id,'Это еще не умею: ')
bot.send_message(message.chat.id,'Напиши какой город ищем: ')
bot.polling(none_stop = True)
При выполнении не понимает вот эту строчку
bot.send_message(message.chat.id,'Показывать текущую погоду или прогноз на ближайшие 3 часа? выбирай: ', reply_markup=keyboard)
if message.text == "Cейчас":
bot.register_next_step_handler(message, send_echo)
На любой ввод значения из бота идет по else. и соответственно не исполняется команда bot.register_next_step_handler(message, send_echo)
Что я делаю не так???
Последнее редактирование: