@CoolGaming
Начинающий программист,пишу ботов

Как исправить код для бота телеграм?

Приветствую всех! Прошу помочь с кодом, можете сказать как подправить код, чтоб бот на команду "/weather Москва" отсылал погоду в Москве, а не писал, что "Город не найден"
import telebot 
import pyowm
bot = telebot.TeleBot("token")
owm = pyowm.OWM("token2", language='ru')

@bot.message_handler(commands=["weather"])
def send_weather(message):
    try:
        observation = owm.weather_at_place(message.text)  
        weather = observation.get_weather()
        temp = weather.get_temperature('celsius')['temp']

        answer = 'В городе ' + message.text + ' сейчас ' + weather.get_detailed_status() + '\n'
        answer += 'Температура в районе ' + str(round(temp)) + ' градусов' + '\n\n'

        if temp < 5:
            answer += 'Очень холодно, оденься потеплее ☺️'
        elif temp < 15:
            answer += 'Прохладно, лучше оденься '
        else:
            answer += 'Не холодно, можешь хоть в трусах идти '

        bot.send_message(message.chat.id, observation)
    except pyowm.exceptions.api_response_error.NotFoundError:
        bot.send_message(message.chat.id, 'Город не найден ')

bot.polling(none_stop=True)


Спасибо за помощь!! Прошу одаренных проходить мимо,если вы не можете дать нормальную формулировку ответа
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
@o5a
1. message.text содержит полный текст сообщения, соответственно для запроса погоды вы его полностью и передаете, а owm не может найти погоду в городе с названием "/weather Москва". Можно просто порезать через split(maxsplit=1), чтобы не разрезать город с пробелами в названии.

2. commands=["/weather"] не надо указывать слэш при указании команды, иначе его придется дублировать
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
0ralo
@0ralo
Начинающий питонист
Код нечитабилен и не приложена ошибка, но судя по всему, вы передаёте функции поиска погоды не "Москва", а "/weather Москва".Поэтому она и не может найти такой город
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы