Ошибка:
line 23, in <module>
weather = response.json()['fact']['prec_type']
~~~~~~~~~~~~~~~^^^^^^^^
KeyError: 'fact'
Код
import requests
import time
import telebot
# Указываем токен бота телеграм и чат-ид
bot_token = 'YOUR_BOT_TOKEN'
chat_id = 'YOUR_CHAT_ID'
# Инициализируем библиотеку для работы с телеграм ботом
bot = telebot.TeleBot(bot_token)
# Задаем начальные значения погоды и состояния
current_weather = None
current_state = None
# Бесконечный цикл проверки погоды
while True:
# Запрос погоды через Яндекс API
response = requests.get('https://api.weather.yandex.ru/v2/informers?lat=59.992330&lon=32.033880&lang=ru_RU',
headers={'X-Yandex-API-Key': 'YOUR_API_KEY'})
# Получаем данные о погоде и состоянии
weather = response.json()['fact']['prec_type']
state = response.json()['fact']['condition']
# Если погода на данный момент дождливая или грозовая и предыдущее значение было другим, то отправляем сообщение в телеграм
if (weather == 'rain' or state == 'thunderstorm') and current_weather != 'rain' and current_state != 'thunderstorm':
bot.send_message(chat_id, 'Сейчас ' + state + ' и идет дождь/гроза!')
# Если погода изменилась и текущее значение тоже было дождливым или грозовым, то отправляем сообщение о смене погоды
elif (weather != current_weather or state != current_state) and (current_weather == 'rain' or current_state == 'thunderstorm'):
bot.send_message(chat_id, 'Сейчас ' + state + ' и уже не идет дождь/гроза!')
# Обновляем текущее значение погоды и состояния
current_weather = weather
current_state = state
# Ждем 30 минут перед следующей проверкой погоды
time.sleep(1800)