Бот погоды в телеграм. Вывод погоды через /weather
Пытаюсь настроить телеграм бота на пайтоне. Хочу сделать так, чтобы прогноз погоды выводился не при вводе названия города, а после команды /weather Например:
/weather
-Где хотим узнать погоду?
-Санкт-Петербург
-"ответ бота...."
Однако он либо не воспринимает тект, после вопроса, либо отвечает сразу после вопроса и выдаёт ошибку, которая должна писаться, если пользователь не правильно ввёл название города
Вот код бота:
import telebot
from telebot import types
from bs4 import BeautifulSoup
import requests
bot = telebot.TeleBot("***", parse_mode='html')
from pyowm.owm import OWM
from pyowm.utils.config import get_default_config
import datetime
#language
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM('***', config_dict)
#bot-welcome
@bot.message_handler(commands=['start'])
def welcome(message):
if message.text == '/start':
sti = open('C:/Python/img/olaf-hey.webp', 'rb')
bot.send_sticker(message.chat.id, sti)
bot.send_message(message.chat.id,'Добро пожаловать, {0.first_name}! \nЯ - <b>{1.first_name}</b>, твой персональный ассистент.\n/help - список моих возможностей'.format(message.from_user, bot.get_me()))
#bot-help
@bot.message_handler(commands=['help'])
def help(message):
if message.text == '/help@PPTlo_bot' or '/help':
sti = open('C:/Python/img/olaf-help.webp', 'rb')
bot.send_sticker(message.chat.id, sti)
bot.send_message(message.chat.id, 'Вот список моих возможностей:\n/weather\n/hi - приветствие\n/joke - поведать анекдот\n/ppt - узнать расписание занятий\n/music - самые популярные песни за последнюю неделю\n/mood - поднять себе настроение\n/bus - узнать расписание автобусов')
#bot-joke
@bot.message_handler(commands=['joke'])
def joke(message):
if message.text == '/joke@PPTlo_bot' or '/joke':
sti = open('C:/Python/img/olaf-joke.webp', 'rb')
bot.send_sticker(message.chat.id, sti)
bot.send_message(message.chat.id, 'Колобок повесился')
#bot-hello
@bot.message_handler(commands=['hi'])
def hi(message):
if message.text == '/hi@PPTlo_bot' or '/hi':
bot.send_message(message.chat.id, 'Приветствую, /help - для вывода моих возможностей')
#bot-weather
@bot.message_handler(commands=['weather'])
def weather(message):
if message.text == '/weather@PPTlo_bot' or '/weather':
bot.send_message(message.chat.id, 'В каком населённом пункте хотим узнать погоду?')
bot.message_handler(content_types=['text'])
try:
mgr = owm.weather_manager()
observation = mgr.weather_at_place(message.text)
w = observation.weather
temp = w.temperature('celsius')['temp']
today = datetime.datetime.today()
#answers-weather
answer = 'Сегодня, ' + (today.strftime("%d/%m/%Y")) + ' ' + 'в городе ' + message.text + ' ' + w.detailed_status + '\n'
answer += 'Температура в районе ' + str(temp) + ' по Цельсию.' + '\n\n'
if temp < 5:
answer += 'Сейчас на улице холодно, одевайся тепло!'
elif temp < 17:
answer += 'Сейчас на улице прохладно, одевайся потеплее!'
else:
answer += 'Погода просто каеф! Одевайся как душе угодно!'
bot.send_message(message.chat.id, answer)
except:
bot.send_message(message.chat.id, 'Я ещё не знаю такого города :(\nДавай посмотрим погоду в другом месте?')
bot.polling( none_stop = True )