{"id":410859,"date":"2024-06-29T21:37:48","date_gmt":"2024-06-29T21:37:48","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=410859"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=410859","title":{"rendered":"<span>\u041f\u043e\u0433\u043e\u0434\u0430 \u0431\u043e\u0442 \u043d\u0430 python<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0430 \u0442\u0435\u043c\u0443 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u0431\u043e\u0442\u043e\u0432 \u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043d\u043e \u043f\u043e\u0433\u043e\u0434\u0430 \u0431\u043e\u0442\u0430 \u044f \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0438 \u0441\u0432\u043e\u0438\u0445 \u0431\u0440\u0430\u0442\u044c\u0435\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0431\u043e\u0442 \u043d\u0430 Python.<\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e Pycharm \u043e\u0442 \u043d\u0430\u0448\u0435\u0439 \u043f\u0438\u0442\u0435\u0440\u0441\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u0430 \u043a\u0430\u043a \u0442\u0440\u0438 \u0440\u0443\u0431\u043b\u044f \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043d\u0435\u0439 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0443.<\/p>\n<p>\u041f\u043e\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f Pycharm, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u044b:<\/p>\n<ol>\n<li>\n<p>\u0434\u043b\u044f \u0431\u043e\u0442\u0430 \u043e\u0442 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c\u0430, <\/p>\n<\/li>\n<li>\n<p>\u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a api accuweather<\/p>\n<\/li>\n<li>\n<p>\u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a api yandex.weather<\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u0442\u0430\u043a, \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430 \u043e\u0442 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c\u0430 \u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c @BotFather \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c-\u0431\u043e\u0442\u0430 \u043f\u043e\u043b\u043d\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435).<\/p>\n<p>\u00a0\u041f\u043e accuweather \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/developer.accuweather.com\/\" rel=\"noopener noreferrer nofollow\">https:\/\/developer.accuweather.com\/<\/a> \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <strong>My Apps<\/strong> \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, <strong>App Name<\/strong> \u044d\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u043c\u044f, \u0434\u0430\u043b\u0435\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <strong>Limited Trial<\/strong>, <strong>Where will the API be used<\/strong>? \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c Other, <strong>What will you be creating with this API<\/strong>? \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c Internal App \u0438 Weather App, <strong>What programming language is your APP written in?<\/strong> \u2013 Python, <strong>Is this for Business to Business or Business to Consumer use?<\/strong> &#8212; Business to Consumer, <strong>Is this Worldwide or Country specific use?<\/strong> \u2013 Worldwide, \u0438\u043b\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Russia \u0438\u043b\u0438 \u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 <strong>What is the public launch date?<\/strong> \u0422\u0443\u0442 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0430\u0442\u0430 \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0418 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <strong>Create App<\/strong>. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043f\u0430\u0434\u0435\u0442\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 My Apps \u0449\u0435\u043b\u043a\u043d\u0443\u0432 \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 API Key \u043e\u043d \u0442\u043e \u0412\u0430\u043c \u0438 \u043d\u0443\u0436\u0435\u043d!<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043a\u0435\u043d \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430. \u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u043d\u0435\u0442 \u043f\u043e\u0447\u0442\u044b \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430, \u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0441\u0430\u0439\u0442 <a href=\"https:\/\/developer.tech.yandex.ru\/services\/\" rel=\"noopener noreferrer nofollow\">https:\/\/developer.tech.yandex.ru\/services\/<\/a> \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c API. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c API \u042f\u043d\u0434\u0435\u043a\u0441.\u041f\u043e\u0433\u043e\u0434\u044b \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u0441 \u0432\u0432\u043e\u0434\u043e\u043c \u0444\u0430\u043c\u0438\u043b\u0438\u0438 \u0438\u043c\u0435\u043d\u0438, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u0433\u043e\u0440\u043e\u0434 \u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0442\u0430\u0440\u0438\u0444 \u043f\u043e\u0433\u043e\u0434\u0430 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c. \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a API, \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 KEY #1 \u0432\u043e\u0442 \u043e\u043d \u0442\u043e \u0412\u0430\u043c \u0438 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<p>\u0412\u0441\u0435 \u0442\u043e\u043a\u0435\u043d\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b, \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c pycharm \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 Main.py \u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438: <\/p>\n<p>\u0412 \u043d\u0438\u0436\u043d\u0435\u043c \u0440\u044f\u0434\u0443 \u043e\u043a\u043d\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 Python Packages,\u00a0 \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u0432\u0432\u043e\u0434\u0438\u043c requests \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c install, \u0442\u043e\u0436\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0434\u043b\u044f pyTelegramBotAPI \u0438 geopy.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0432 main.py \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0442\u043e\u043a\u0435\u043d\u044b:<\/p>\n<pre><code class=\"python\">import json import telebot import requests as req from geopy import geocoders from os import environ   token = environ['token_bot'] token_accu = environ['token_accu'] token_yandex = environ['token_yandex']<\/code><\/pre>\n<p>\u0412\u0441\u0435 \u0432\u0441\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u0434\u0435\u043b\u0430\u043d\u0430, \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u043e\u0442\u0430<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u043e\u0442 accuweather \u043d\u0443\u0436\u0435\u043d \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0433\u043e\u0440\u043e\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b \u0435\u0433\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0442\u0430\u043a \u0436\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0433\u043e\u0440\u043e\u0434\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043a \u044f\u043d\u0434\u0435\u043a\u0441\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0447\u0435\u0440\u0435\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 geopy:<\/p>\n<pre><code class=\"python\">def geo_pos(city: str):     geolocator = geocoders.Nominatim(user_agent=\"telebot\")     latitude = str(geolocator.geocode(city).latitude)     longitude = str(geolocator.geocode(city).longitude)     return latitude, longitude<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u0434 \u0433\u043e\u0440\u043e\u0434\u0430:<\/p>\n<pre><code class=\"python\">def code_location(latitude: str, longitude: str, token_accu: str):     url_location_key = f'http:\/\/dataservice.accuweather.com\/locations\/v1\/cities\/geoposition\/search?apikey={token_accu}&amp;q={latitude},{longitude}&amp;language=ru'     resp_loc = req.get(url_location_key, headers={\"APIKey\": token_accu})     json_data = json.loads(resp_loc.text)     code = json_data['Key']     return code<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u0445\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0430\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438 \u0442\u043e\u043a\u0435\u043d, \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u201cf\u201d \u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 url \u0438 \u0441 \u043d\u0443\u0436\u043d\u044b\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c. \u0425\u043e\u0442\u044c resp_loc.text \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c python \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e json-\u043e\u0431\u044a\u0435\u043a\u0442, \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u2018Key\u2019 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u0434 \u0433\u043e\u0440\u043e\u0434\u0430.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0443\u0436\u0435 \u043a\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430:<\/p>\n<pre><code class=\"python\">def weather(cod_loc: str, token_accu: str):     url_weather = f'http:\/\/dataservice.accuweather.com\/forecasts\/v1\/hourly\/12hour\/{cod_loc}?apikey={token_accu}&amp;language=ru&amp;metric=True'     response = req.get(url_weather, headers={\"APIKey\": token_accu})     json_data = json.loads(response.text)     dict_weather = dict()     dict_weather['link'] = json_data[0]['MobileLink']     dict_weather['\u0441\u0435\u0439\u0447\u0430\u0441'] = {'temp': json_data[0]['Temperature']['Value'], 'sky': json_data[0]['IconPhrase']}     for i in range(len(json_data):1:):         time = '\u0447\u0435\u0440\u0435\u0437' + str(i) + '\u0447'         dict_weather[time] = {'temp': json_data[i]['Temperature']['Value'], 'sky': json_data[i]['IconPhrase']} return dict_weather<\/code><\/pre>\n<p>\u041f\u043e \u043a\u043b\u044e\u0447\u0443 \u2018link\u2019 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043d\u043e\u0437, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u043f\u043e\u0433\u043e\u0434\u0443 \u0441\u0435\u0439\u0447\u0430\u0441, \u0434\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0447\u0430\u0441\u044b \u0438 \u0442\u0430\u043a \u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u0435.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0433\u043e\u0434\u0443 \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430:<\/p>\n<pre><code class=\"python\">def yandex_weather(latitude, longitude, token_yandex: str):     url_yandex = f'https:\/\/api.weather.yandex.ru\/v2\/informers\/?lat={latitude}&amp;lon={longitude}&amp;[lang=ru_RU]'     yandex_req = req.get(url_yandex, headers={'X-Yandex-API-Key': token_yandex}, verify=False)     conditions = {'clear': '\u044f\u0441\u043d\u043e', 'partly-cloudy': '\u043c\u0430\u043b\u043e\u043e\u0431\u043b\u0430\u0447\u043d\u043e', 'cloudy': '\u043e\u0431\u043b\u0430\u0447\u043d\u043e \u0441 \u043f\u0440\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c\u0438',                   'overcast': '\u043f\u0430\u0441\u043c\u0443\u0440\u043d\u043e', 'drizzle': '\u043c\u043e\u0440\u043e\u0441\u044c', 'light-rain': '\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0434\u043e\u0436\u0434\u044c',                   'rain': '\u0434\u043e\u0436\u0434\u044c', 'moderate-rain': '\u0443\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u044b\u0439', 'heavy-rain': '\u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0436\u0434\u044c',                   'continuous-heavy-rain': '\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0436\u0434\u044c', 'showers': '\u043b\u0438\u0432\u0435\u043d\u044c',                   'wet-snow': '\u0434\u043e\u0436\u0434\u044c \u0441\u043e \u0441\u043d\u0435\u0433\u043e\u043c', 'light-snow': '\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043d\u0435\u0433', 'snow': '\u0441\u043d\u0435\u0433',                   'snow-showers': '\u0441\u043d\u0435\u0433\u043e\u043f\u0430\u0434', 'hail': '\u0433\u0440\u0430\u0434', 'thunderstorm': '\u0433\u0440\u043e\u0437\u0430',                   'thunderstorm-with-rain': '\u0434\u043e\u0436\u0434\u044c \u0441 \u0433\u0440\u043e\u0437\u043e\u0439', 'thunderstorm-with-hail': '\u0433\u0440\u043e\u0437\u0430 \u0441 \u0433\u0440\u0430\u0434\u043e\u043c'                   }     wind_dir = {'nw': '\u0441\u0435\u0432\u0435\u0440\u043e-\u0437\u0430\u043f\u0430\u0434\u043d\u043e\u0435', 'n': '\u0441\u0435\u0432\u0435\u0440\u043d\u043e\u0435', 'ne': '\u0441\u0435\u0432\u0435\u0440\u043e-\u0432\u043e\u0441\u0442\u043e\u0447\u043d\u043e\u0435', 'e': '\u0432\u043e\u0441\u0442\u043e\u0447\u043d\u043e\u0435',                 'se': '\u044e\u0433\u043e-\u0432\u043e\u0441\u0442\u043e\u0447\u043d\u043e\u0435', 's': '\u044e\u0436\u043d\u043e\u0435', 'sw': '\u044e\u0433\u043e-\u0437\u0430\u043f\u0430\u0434\u043d\u043e\u0435', 'w': '\u0437\u0430\u043f\u0430\u0434\u043d\u043e\u0435', '\u0441': '\u0448\u0442\u0438\u043b\u044c'}      yandex_json = json.loads(yandex_req.text)     yandex_json['fact']['condition'] = conditions[yandex_json['fact']['condition']]     yandex_json['fact']['wind_dir'] = wind_dir[yandex_json['fact']['wind_dir']]     for parts in yandex_json['forecast']['parts']:         parts['condition'] = conditions[parts['condition']]         parts['wind_dir'] = wind_dir[parts['wind_dir']]      pogoda = dict()     params = ['condition', 'wind_dir', 'pressure_mm', 'humidity']     for parts in yandex_json['forecast']['parts']:         pogoda[parts['part_name']] = dict()         pogoda[parts['part_name']]['temp'] = parts['temp_avg']         for param in params:             pogoda[parts['part_name']][param] = parts[param]      pogoda['fact'] = dict()     pogoda['fact']['temp'] = yandex_json['fact']['temp']     for param in params:         pogoda['fact'][param] = yandex_json['fact'][param]      pogoda['link'] = yandex_json['info']['url']     return pogoda<\/code><\/pre>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e, \u043d\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0442\u0440\u0430 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435\u0431\u0430 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u0438 conditions \u0438 wind_dir \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430. \u0412 \u043e\u0442\u0432\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0433\u043e\u0434\u0430 \u0438 \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0434\u0432\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 (\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u043d\u043e \u0432 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a). \u00a0\u0421\u0440\u0430\u0437\u0443 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u0435 \u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0442\u0440\u0430 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435\u0431\u0430. \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0437 \u0432\u0441\u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430. \u041f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u043a\u043e\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 api \u044f\u043d\u0434\u0435\u043a\u0441\u0430 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e 50 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0443\u0442\u043a\u0438.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u044b. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0430\u043a\u043a\u0443\u0432\u0435\u0437\u0435\u0440:<\/p>\n<pre><code class=\"python\">def print_weather(dict_weather, message):     bot.send_message(message.from_user.id, f'\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0435 \u0434\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0412\u0430\u0448\u0435 \u0441\u0438\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e!'                                            f' \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 {dict_weather[\"\u0441\u0435\u0439\u0447\u0430\u0441\"][\"temp\"]}!'                                            f' \u0410 \u043d\u0430 \u043d\u0435\u0431\u0435 {dict_weather[\"\u0441\u0435\u0439\u0447\u0430\u0441\"][\"sky\"]}.'                                            f' \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0442\u0440\u0438 \u0447\u0430\u0441\u0430 {dict_weather[\"\u0447\u0435\u0440\u0435\u04373\u0447\"][\"temp\"]}!'                                            f' \u0410 \u043d\u0430 \u043d\u0435\u0431\u0435 {dict_weather[\"\u0447\u0435\u0440\u0435\u04373\u0447\"][\"sky\"]}.'                                            f' \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0448\u0435\u0441\u0442\u044c \u0447\u0430\u0441\u043e\u0432 {dict_weather[\"\u0447\u0435\u0440\u0435\u04376\u0447\"][\"temp\"]}!'                                            f' \u0410 \u043d\u0430 \u043d\u0435\u0431\u0435 {dict_weather[\"\u0447\u0435\u0440\u0435\u04376\u0447\"][\"sky\"]}.'                                            f' \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u0432\u044f\u0442\u044c \u0447\u0430\u0441\u043e\u0432 {dict_weather[\"\u0447\u0435\u0440\u0435\u04379\u0447\"][\"temp\"]}!'                                            f' \u0410 \u043d\u0430 \u043d\u0435\u0431\u0435 {dict_weather[\"\u0447\u0435\u0440\u0435\u04379\u0447\"][\"sky\"]}.')     bot.send_message(message.from_user.id, f' \u0410 \u0437\u0434\u0435\u0441\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 '                                            f'{dict_weather[\"link\"]}')<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 weather \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c. \u0412 \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0442\u043e\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 weather. \u00a0\u0412 \u043a\u043e\u043d\u0446\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043d\u043e\u0437.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u0433\u043e\u0434\u043e\u0439 \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430:<\/p>\n<pre><code class=\"python\">def print_yandex_weather(dict_weather_yandex, message):     day = {'night': '\u043d\u043e\u0447\u044c\u044e', 'morning': '\u0443\u0442\u0440\u043e\u043c', 'day': '\u0434\u043d\u0435\u043c', 'evening': '\u0432\u0435\u0447\u0435\u0440\u043e\u043c', 'fact': '\u0441\u0435\u0439\u0447\u0430\u0441'}     bot.send_message(message.from_user.id, f'\u0410 \u044f\u043d\u0434\u0435\u043a\u0441 \u0433\u043e\u0432\u043e\u0440\u0438\u0442:')     for i in dict_weather_yandex.keys():         if i != 'link':             time_day = day[i]             bot.send_message(message.from_user.id, f'\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 {time_day} {dict_weather_yandex[i][\"temp\"]}'                                                    f', \u043d\u0430 \u043d\u0435\u0431\u0435 {dict_weather_yandex[i][\"condition\"]}')      bot.send_message(message.from_user.id, f' \u0410 \u0437\u0434\u0435\u0441\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 '                                            f'{dict_weather_yandex[\"link\"]}')<\/code><\/pre>\n<p>\u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a \u0436\u0435 \u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0445\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 yandex_weather \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c. \u0417\u0434\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043d\u044f, \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0434\u0430\u043b\u0435\u0435 \u0437\u0430\u0434\u0430\u0435\u043c \u0446\u0438\u043a\u043b \u043f\u043e \u043a\u043b\u044e\u0447\u0430\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0438\u0437 \u0432\u044b\u0445\u043e\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 yandex_weather \u0435\u0441\u043b\u0438 \u043a\u043b\u044e\u0447 \u043d\u0435 link \u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435: \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 {\u0432\u0440\u0435\u043c\u044f \u0434\u043d\u044f}, \u043d\u0430 \u043d\u0435\u0431\u0435 {\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435\u0431\u0430}. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u044f\u043d\u0434\u0435\u043a\u0441 (\u044d\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u044f\u043d\u0434\u0435\u043a\u0441\u0430).<\/p>\n<p>\u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043e\u0431\u043e\u0431\u0449\u0430\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<pre><code class=\"python\">def big_weather(message, city):     latitude, longitude = geo_pos(city)     cod_loc = code_location(latitude, longitude, token_accu)     you_weather = weather(cod_loc, token_accu)     print_weather(you_weather, message)     yandex_weather_x = yandex_weather(latitude, longitude, token_yandex)     print_yandex_weather(yandex_weather_x, message)<\/code><\/pre>\n<p>\u0412 \u043d\u0435\u0435 \u043c\u044b \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0438 \u0433\u043e\u0440\u043e\u0434. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c accuweather \u0438 \u043f\u0438\u0448\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u043d\u0435\u0433\u043e, \u043f\u043e\u0442\u043e\u043c \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430.<\/p>\n<p>\u041d\u0443\u0436\u043d\u0430 \u0435\u0449\u0451 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0433\u043e\u0440\u043e\u0434\u043e\u0432:<\/p>\n<pre><code class=\"python\">def add_city(message):     try:         latitude, longitude = geo_pos(message.text.lower().split('\u0433\u043e\u0440\u043e\u0434 ')[1])         global cities         cities[message.from_user.id] = message.text.lower().split('\u0433\u043e\u0440\u043e\u0434 ')[1]         with open('cities.json', 'w') as f:             f.write(json.dumps(cities))         return cities, 0     except Exception as err:         return cities, 1<\/code><\/pre>\n<p>\u0421\u043f\u0435\u0440\u0432\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u0433\u043e\u0440\u043e\u0434\u0430 \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043e\u043a \u0442\u043e \u0432\u0441\u0435 \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u043b\u043e\u0432\u0430 \u0433\u043e\u0440\u043e\u0434 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c cities \u043f\u043e\u0434 \u043a\u043b\u044e\u0447\u043e\u043c id \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u044f, \u043d\u043e \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043b\u044e\u0434\u0438 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438.<\/p>\n<p>\u0422\u0430\u043a \u0432\u0441\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u044b \u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"python\">@bot.message_handler(command=['start', 'help']) def send_welcome(message):     bot.reply_to(message, f'\u042f \u043f\u043e\u0433\u043e\u0434\u0430\u0431\u043e\u0442, \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0441\u044c\u044f, {message.from_user.first_name}')<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0438.<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u0438 \u0441\u0430\u043c\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<pre><code class=\"python\">bot.message_handler(content_types=['text']) def get_text_messages(message):     global cities     if message.text.lower() == '\u043f\u0440\u0438\u0432\u0435\u0442' or message.text.lower() == '\u0437\u0434\u043e\u0440\u043e\u0432\u0430':         bot.send_message(message.from_user.id,                          f'\u041e \u0432\u0435\u043b\u0438\u043a\u0438\u0439 \u0438 \u043c\u043e\u0433\u0443\u0447\u0438\u0439 {message.from_user.first_name}! \u041f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u042f \u0434\u043e\u043b\u043e\u0436\u0443 '                          f' \u0412\u0430\u043c \u043e \u043f\u043e\u0433\u043e\u0434\u0435! \u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435  \u0441\u043b\u043e\u0432\u043e \"\u043f\u043e\u0433\u043e\u0434\u0430\" \u0438 \u044f \u043d\u0430\u043f\u0438\u0448\u0443 \u043f\u043e\u0433\u043e\u0434\u0443 \u0432 \u0412\u0430\u0448\u0435\u043c'                          f' \"\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c\" \u0433\u043e\u0440\u043e\u0434\u0435 \u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0440\u043e\u0434\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0412\u044b \u0441\u0435\u0439\u0447\u0430\u0441')     elif message.text.lower() == '\u043f\u043e\u0433\u043e\u0434\u0430':         if message.from_user.id in cities.keys():             city = cities[message.from_user.id]             bot.send_message(message.from_user.id, f'\u041e \u0432\u0435\u043b\u0438\u043a\u0438\u0439 \u0438 \u043c\u043e\u0433\u0443\u0447\u0438\u0439 {message.from_user.first_name}!'                                                    f' \u0422\u0432\u043e\u0439 \u0433\u043e\u0440\u043e\u0434 {city}')             big_weather(message, city)          else:             bot.send_message(message.from_user.id, f'\u041e \u0432\u0435\u043b\u0438\u043a\u0438\u0439 \u0438 \u043c\u043e\u0433\u0443\u0447\u0438\u0439 {message.from_user.first_name}!'                                                    f' \u042f \u043d\u0435 \u0437\u043d\u0430\u044e \u0412\u0430\u0448 \u0433\u043e\u0440\u043e\u0434! \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0448\u0438:'                                                    f'\"\u041c\u043e\u0439 \u0433\u043e\u0440\u043e\u0434 *****\" \u0438 \u044f \u0437\u0430\u043f\u043e\u043c\u043d\u044e \u0442\u0432\u043e\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0433\u043e\u0440\u043e\u0434!')     elif message.text.lower()[:9] == '\u043c\u043e\u0439 \u0433\u043e\u0440\u043e\u0434':         cities, flag = add_city(message)         if flag == 0:             bot.send_message(message.from_user.id, f'\u041e \u0432\u0435\u043b\u0438\u043a\u0438\u0439 \u0438 \u043c\u043e\u0433\u0443\u0447\u0438\u0439 {message.from_user.first_name}!'                                                    f' \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u0437\u043d\u0430\u044e \u0412\u0430\u0448 \u0433\u043e\u0440\u043e\u0434! \u044d\u0442\u043e'                                                    f' {cities[str(message.from_user.id)]}')         else:             bot.send_message(message.from_user.id, f'\u041e \u0432\u0435\u043b\u0438\u043a\u0438\u0439 \u0438 \u043c\u043e\u0433\u0443\u0447\u0438\u0439 {message.from_user.first_name}!'                                                    f' \u0427\u0442\u043e \u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a :(')     else:         try:             city = message.text             bot.send_message(message.from_user.id, f'\u041f\u0440\u0438\u0432\u0435\u0442 {message.from_user.first_name}! \u0422\u0432\u043e\u0439 \u0433\u043e\u0440\u043e\u0434 {city}')             big_weather(message, city)             except AttributeError as err:             bot.send_message(message.from_user.id, f'{message.from_user.first_name}! \u041d\u0435 \u0432\u0435\u043b\u0438 \u043a\u0430\u0437\u043d\u0438\u0442\u044c,'                                                    f' \u0432\u0435\u043b\u0438 \u0441\u043b\u043e\u0432\u043e \u043c\u043e\u043b\u0432\u0438\u0442\u044c! \u042f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u0442\u0430\u043a\u043e\u0433\u043e \u0433\u043e\u0440\u043e\u0434\u0430!'                                                    f'\u0418 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0448\u0438\u0431\u043a\u0443 {err}, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0433\u043e\u0440\u043e\u0434') <\/code><\/pre>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0435\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u043a\u0430\u0437\u0430\u043b \u00ab\u043f\u0440\u0438\u0432\u0435\u0442\u00bb \u0438\u043b\u0438 \u00ab\u0437\u0434\u0430\u0440\u043e\u0432\u0430\u00bb \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u0430\u0435\u043c\u0441\u044f \u0438 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c, \u0442\u043e \u0447\u0442\u043e \u043c\u044b \u0436\u0434\u0435\u043c \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>\u00a0\u0415\u0441\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u00ab\u043f\u043e\u0433\u043e\u0434\u0430\u00bb \u0442\u043e \u0443\u0442\u043e\u0447\u043d\u044f\u0435\u043c\u0441\u044f \u0435\u0441\u0442\u044c \u043b\u0438 \u043e\u043d \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0438 \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c, \u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0440\u043e\u0434\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e big_weather.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u0442, \u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0435\u043c\u0443 \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0433\u043e\u0440\u043e\u0434.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u00ab\u041c\u043e\u0439 \u0433\u043e\u0440\u043e\u0434 *****\u00bb, \u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0418 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u0447\u0442\u043e \u0433\u043e\u0440\u043e\u0434 \u0437\u0430\u043f\u0438\u0441\u0430\u043d, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a, \u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u043e\u0431 \u044d\u0442\u043e\u043c.<\/p>\n<p>\u0412\u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0440\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u0433\u043e\u0440\u043e\u0434\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c \u043e\u0431 \u044d\u0442\u043e\u043c.<\/p>\n<p>\u043d\u0443 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 (\u044d\u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0441\u0430\u043c\u043e\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435):<\/p>\n<pre><code class=\"python\">bot = telebot.TeleBot(token)  with open('cities.json', encoding='utf-8') as f:     cities = json.load(f)      bot.polling(none_stop=True)<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 bot, \u043f\u043e\u0442\u043e\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c json \u0444\u0430\u0439\u043b \u0441 \u0430\u0440\u0445\u0438\u0432\u043e\u043c \u0433\u043e\u0440\u043e\u0434\u043e\u0432 \u0438 id \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0431\u043e\u0442\u0430. <\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0433\u0438\u0441\u043c\u0435\u0442\u0435\u043e \u0438\u043b\u0438 rp5, \u043d\u043e \u0443 \u044d\u0442\u0438\u0445 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0435\u0439 \u043d\u0435\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 L.<\/p>\n<p><a href=\"https:\/\/github.com\/gerelDan\/tele_karamaz_weather\" rel=\"noopener noreferrer nofollow\">\u0412\u043e\u0442 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 gitHub<\/a>.<\/p>\n<p>\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u044f \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0430\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u043b \u043d\u0430 \u0434\u0436\u0438\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u0442\u0430\u0446\u0438\u044f \u0444\u0430\u043a\u0442\u0430. \u044d\u0442\u043e \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f 3,19 \u0440\u0443\u0431\u043b\u0435\u0439 \u0432 \u0434\u0435\u043d\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/eb7\/21d\/49e\/eb721d49eda1e0725d7e26973206ec8b.jpg\" width=\"1098\" height=\"385\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eb7\/21d\/49e\/eb721d49eda1e0725d7e26973206ec8b.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 google. \u0414\u043b\u044f \u0446\u0435\u043b\u0435\u0439 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u0431\u043e\u0442\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0434\u0435\u0448\u0435\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/0c0\/309\/07c\/0c030907cc39bcb2021997513d4a7534.jpg\" width=\"1098\" height=\"546\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0c0\/309\/07c\/0c030907cc39bcb2021997513d4a7534.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u044b\u0431\u0435\u0440\u0435\u043c \u043e\u0441\u044c<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/674\/026\/0ad\/6740260ad0ed2e648857b22201e713e8.jpg\" width=\"1119\" height=\"124\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/674\/026\/0ad\/6740260ad0ed2e648857b22201e713e8.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0418 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0412\u0430\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0435\u0433\u043e \u043c\u0435\u043d\u044e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/6b7\/8c0\/9aa\/6b78c09aa1a652ca857105d5d1e83706.jpg\" width=\"1119\" height=\"629\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b7\/8c0\/9aa\/6b78c09aa1a652ca857105d5d1e83706.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0431\u0437\u043e\u0440 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0435\u0433\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f ssh \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f root (\u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e).<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/4a6\/090\/147\/4a6090147d255687d201060c0496aff3.jpg\" width=\"482\" height=\"291\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a6\/090\/147\/4a6090147d255687d201060c0496aff3.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e SSH \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 putty \u043e\u043d\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u0432\u0438\u0434\u0438\u043c \u043e\u043a\u043d\u043e:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/7dd\/901\/d2f\/7dd901d2faa9e6d4e31936a979412cfb.jpg\" width=\"453\" height=\"442\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7dd\/901\/d2f\/7dd901d2faa9e6d4e31936a979412cfb.jpg\" data-blurred=\"true\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 host-name \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0445\u043e\u0441\u0442 \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 \u0434\u0436\u0438\u043d\u043e \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f, \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432\u0432\u043e\u0434\u0438\u043c \u043b\u043e\u0433\u0438\u043d root \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c enter \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0432\u0432\u043e\u0434\u0438\u043c \u043f\u0430\u0440\u043e\u043b\u044c \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0437\u0430\u0434\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435.<\/p>\n<p>\u0422\u0430\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c python \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0438\u0448\u0435\u043c<\/p>\n<p><code>sudo apt install python3<\/code><\/p>\n<p>\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c pip<\/p>\n<p><code>sudo apt install python3-pip<\/code><\/p>\n<p> \u0414\u0430\u043b\u0435\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435:<\/p>\n<p><code>pip install requests<\/code><\/p>\n<p><code>pip install geopy<\/code><\/p>\n<p><code>pip install pyTelegramBotAPI<\/code><\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <code>cd \/usr\/bin\/<\/code><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <code>mkdir telegrambot\/<\/code><\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0432\u0438\u043d\u0434\u043e\u0432\u0441 <\/p>\n<p><code>pscp -P (\u0437\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442 \u0434\u0436\u0438\u043d\u043e) C:\\(\u043f\u0443\u0442\u044c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443)\\ root@\"\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430\":\/usr\/bin\/telegrambot\/<\/code><\/p>\n<p>\u041e\u043d \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442 \u0432\u0432\u0435\u0441\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c, \u0432\u0432\u043e\u0434\u0438\u043c \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 root.<\/p>\n<p>\u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043e\u043a\u043d\u043e putty \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0442\u043e \u0432\u0441\u0435 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 ls.<\/p>\n<p>\u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u043f\u0438\u0441\u0430\u043b \u0447\u0442\u043e \u0442\u043e\u043a\u0435\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b. \u041c\u043d\u0435 \u043f\u0440\u043e\u0449\u0435 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0432\u0438\u043d\u0434\u044b \u043f\u0438\u0448\u0435\u043c: <code>pscp -P (\u0437\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442 \u0434\u0436\u0438\u043d\u043e) root@\"\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430\":\/etc\/environment<\/code> <code>C:\\(\u043f\u0443\u0442\u044c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443)\\environment<\/code><\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0431\u043b\u043e\u043a\u043d\u043e\u0442\u043e\u043c \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0438 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0448\u0438 \u043f\u0435\u0440\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u0436\u0434\u0443\u044e \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435:<\/p>\n<p>token_bot=\u0432\u0430\u0448 \u0442\u043e\u043a\u0435\u043d \u0434\u043b\u044f \u0431\u043e\u0442\u0430 <\/p>\n<p>token_accu=\u0432\u0430\u0448 \u0442\u043e\u043a\u0435\u043d \u0434\u043b\u044f accuweather<\/p>\n<p>token_yandex=\u0432\u0430\u0448 \u0442\u043e\u043a\u0435\u043d \u0434\u043b\u044f \u044f\u043d\u0434\u0435\u043a\u0441\u0430<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043e\u0431\u0440\u0430\u0442\u043d\u043e:  <code>pscp -P (\u0437\u0434\u0435\u0441\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0440\u0442 \u0434\u0436\u0438\u043d\u043e) C:\\(\u043f\u0443\u0442\u044c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443)\\environment root@\"\u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430\":\/etc\/environment<\/code><\/p>\n<\/li>\n<\/ol>\n<p>\u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c putty \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0441\u043d\u043e\u0432\u0430. \u0412\u0445\u043e\u0434\u0438\u043c \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u0435\u0435. \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u044b \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0432\u0432\u043e\u0434\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 export. \u0414\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f \u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0412\u0430\u0448\u0438.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c python3 <code>\/usr\/bin\/telegrambot\/<\/code>main.py<\/p>\n<p>\u0412\u0441\u0435, \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c \u0431\u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/584134\/\"> https:\/\/habr.com\/ru\/articles\/584134\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0430 \u0442\u0435\u043c\u0443 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c \u0431\u043e\u0442\u043e\u0432 \u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043d\u043e \u043f\u043e\u0433\u043e\u0434\u0430 \u0431\u043e\u0442\u0430 \u044f \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043b \u0438 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0438 \u0441\u0432\u043e\u0438\u0445 \u0431\u0440\u0430\u0442\u044c\u0435\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0431\u043e\u0442 \u043d\u0430 Python.<\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u0430 \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e Pycharm \u043e\u0442 \u043d\u0430\u0448\u0435\u0439 \u043f\u0438\u0442\u0435\u0440\u0441\u043a\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u0430 \u043a\u0430\u043a \u0442\u0440\u0438 \u0440\u0443\u0431\u043b\u044f \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043d\u0435\u0439 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0443.<\/p>\n<p>\u041f\u043e\u043a\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f Pycharm, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u044b:<\/p>\n<ol>\n<li>\n<p>\u0434\u043b\u044f \u0431\u043e\u0442\u0430 \u043e\u0442 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c\u0430, <\/p>\n<\/li>\n<li>\n<p>\u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a api accuweather<\/p>\n<\/li>\n<li>\n<p>\u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a api yandex.weather<\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u0442\u0430\u043a, \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0430 \u043e\u0442 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c\u0430 \u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c @BotFather \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 (\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u043c-\u0431\u043e\u0442\u0430 \u043f\u043e\u043b\u043d\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435).<\/p>\n<p>\u00a0\u041f\u043e accuweather \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/developer.accuweather.com\/\" rel=\"noopener noreferrer nofollow\">https:\/\/developer.accuweather.com\/<\/a> \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0435 <strong>My Apps<\/strong> \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, <strong>App Name<\/strong> \u044d\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u043c\u044f, \u0434\u0430\u043b\u0435\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <strong>Limited Trial<\/strong>, <strong>Where will the API be used<\/strong>? \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c Other, <strong>What will you be creating with this API<\/strong>? \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c Internal App \u0438 Weather App, <strong>What programming language is your APP written in?<\/strong> \u2013 Python, <strong>Is this for Business to Business or Business to Consumer use?<\/strong> &#8212; Business to Consumer, <strong>Is this Worldwide or Country specific use?<\/strong> \u2013 Worldwide, \u0438\u043b\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Russia \u0438\u043b\u0438 \u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 <strong>What is the public launch date?<\/strong> \u0422\u0443\u0442 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0430\u0442\u0430 \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0418 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <strong>Create App<\/strong>. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u043f\u0430\u0434\u0435\u0442\u0435 \u0432\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0443 My Apps \u0449\u0435\u043b\u043a\u043d\u0443\u0432 \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 API Key \u043e\u043d \u0442\u043e \u0412\u0430\u043c \u0438 \u043d\u0443\u0436\u0435\u043d!<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043a\u0435\u043d \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430. \u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u043d\u0435\u0442 \u043f\u043e\u0447\u0442\u044b \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430, \u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0441\u0430\u0439\u0442 <a href=\"https:\/\/developer.tech.yandex.ru\/services\/\" rel=\"noopener noreferrer nofollow\">https:\/\/developer.tech.yandex.ru\/services\/<\/a> \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c API. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c API \u042f\u043d\u0434\u0435\u043a\u0441.\u041f\u043e\u0433\u043e\u0434\u044b \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u0441 \u0432\u0432\u043e\u0434\u043e\u043c \u0444\u0430\u043c\u0438\u043b\u0438\u0438 \u0438\u043c\u0435\u043d\u0438, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430, \u0433\u043e\u0440\u043e\u0434 \u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0442\u0430\u0440\u0438\u0444 \u043f\u043e\u0433\u043e\u0434\u0430 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c. \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a API, \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 KEY #1 \u0432\u043e\u0442 \u043e\u043d \u0442\u043e \u0412\u0430\u043c \u0438 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<p>\u0412\u0441\u0435 \u0442\u043e\u043a\u0435\u043d\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b, \u043e\u0431 \u044d\u0442\u043e\u043c \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c pycharm \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 Main.py \u0438 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438: <\/p>\n<p>\u0412 \u043d\u0438\u0436\u043d\u0435\u043c \u0440\u044f\u0434\u0443 \u043e\u043a\u043d\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 Python Packages,\u00a0 \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u0432\u0432\u043e\u0434\u0438\u043c requests \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c install, \u0442\u043e\u0436\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c \u0434\u043b\u044f pyTelegramBotAPI \u0438 geopy.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0432 main.py \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0442\u043e\u043a\u0435\u043d\u044b:<\/p>\n<pre><code class=\"python\">import json import telebot import requests as req from geopy import geocoders from os import environ   token = environ['token_bot'] token_accu = environ['token_accu'] token_yandex = environ['token_yandex']<\/code><\/pre>\n<p>\u0412\u0441\u0435 \u0432\u0441\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0441\u0434\u0435\u043b\u0430\u043d\u0430, \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u043e\u0442\u0430<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u043e\u0442 accuweather \u043d\u0443\u0436\u0435\u043d \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u0433\u043e\u0440\u043e\u0434\u0430, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0443\u0436\u043d\u044b \u0435\u0433\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0442\u0430\u043a \u0436\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0433\u043e\u0440\u043e\u0434\u0430 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u043a \u044f\u043d\u0434\u0435\u043a\u0441\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0447\u0435\u0440\u0435\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 geopy:<\/p>\n<pre><code class=\"python\">def geo_pos(city: str):     geolocator = geocoders.Nominatim(user_agent=\"telebot\")     latitude = str(geolocator.geocode(city).latitude)     longitude = str(geolocator.geocode(city).longitude)     return latitude, longitude<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u0434 \u0433\u043e\u0440\u043e\u0434\u0430:<\/p>\n<pre><code class=\"python\">def code_location(latitude: str, longitude: str, token_accu: str):     url_location_key = f'http:\/\/dataservice.accuweather.com\/locations\/v1\/cities\/geoposition\/search?apikey={token_accu}&amp;q={latitude},{longitude}&amp;language=ru'     resp_loc = req.get(url_location_key, headers={\"APIKey\": token_accu})     json_data = json.loads(resp_loc.text)     code = json_data['Key']     return code<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u0445\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0430\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438 \u0442\u043e\u043a\u0435\u043d, \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u201cf\u201d \u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 url \u0438 \u0441 \u043d\u0443\u0436\u043d\u044b\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c. \u0425\u043e\u0442\u044c resp_loc.text \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c python \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e json-\u043e\u0431\u044a\u0435\u043a\u0442, \u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u2018Key\u2019 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043e\u0434 \u0433\u043e\u0440\u043e\u0434\u0430.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0443\u0436\u0435 \u043a\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430:<\/p>\n<pre><code class=\"python\">def weather(cod_loc: str, token_accu: str):     url_weather = f'http:\/\/dataservice.accuweather.com\/forecasts\/v1\/hourly\/12hour\/{cod_loc}?apikey={token_accu}&amp;language=ru&amp;metric=True'     response = req.get(url_weather, headers={\"APIKey\": token_accu})     json_data = json.loads(response.text)     dict_weather = dict()     dict_weather['link'] = json_data[0]['MobileLink']     dict_weather['\u0441\u0435\u0439\u0447\u0430\u0441'] = {'temp': json_data[0]['Temperature']['Value'], 'sky': json_data[0]['IconPhrase']}     for i in range(len(json_data):1:):         time = '\u0447\u0435\u0440\u0435\u0437' + str(i) + '\u0447'         dict_weather[time] = {'temp': json_data[i]['Temperature']['Value'], 'sky': json_data[i]['IconPhrase']} return dict_weather<\/code><\/pre>\n<p>\u041f\u043e \u043a\u043b\u044e\u0447\u0443 \u2018link\u2019 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043d\u043e\u0437, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u043f\u043e\u0433\u043e\u0434\u0443 \u0441\u0435\u0439\u0447\u0430\u0441, \u0434\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u0447\u0430\u0441\u044b \u0438 \u0442\u0430\u043a \u0436\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u0435.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0433\u043e\u0434\u0443 \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430:<\/p>\n<pre><code class=\"python\">def yandex_weather(latitude, longitude, token_yandex: str):     url_yandex = f'https:\/\/api.weather.yandex.ru\/v2\/informers\/?lat={latitude}&amp;lon={longitude}&amp;[lang=ru_RU]'     yandex_req = req.get(url_yandex, headers={'X-Yandex-API-Key': token_yandex}, verify=False)     conditions = {'clear': '\u044f\u0441\u043d\u043e', 'partly-cloudy': '\u043c\u0430\u043b\u043e\u043e\u0431\u043b\u0430\u0447\u043d\u043e', 'cloudy': '\u043e\u0431\u043b\u0430\u0447\u043d\u043e \u0441 \u043f\u0440\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c\u0438',                   'overcast': '\u043f\u0430\u0441\u043c\u0443\u0440\u043d\u043e', 'drizzle': '\u043c\u043e\u0440\u043e\u0441\u044c', 'light-rain': '\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0434\u043e\u0436\u0434\u044c',                   'rain': '\u0434\u043e\u0436\u0434\u044c', 'moderate-rain': '\u0443\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0441\u0438\u043b\u044c\u043d\u044b\u0439', 'heavy-rain': '\u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0436\u0434\u044c',                   'continuous-heavy-rain': '\u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0434\u043e\u0436\u0434\u044c', 'showers': '\u043b\u0438\u0432\u0435\u043d\u044c',                   'wet-snow': '\u0434\u043e\u0436\u0434\u044c \u0441\u043e \u0441\u043d\u0435\u0433\u043e\u043c', 'light-snow': '\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043d\u0435\u0433', 'snow': '\u0441\u043d\u0435\u0433',                   'snow-showers': '\u0441\u043d\u0435\u0433\u043e\u043f\u0430\u0434', 'hail': '\u0433\u0440\u0430\u0434', 'thunderstorm': '\u0433\u0440\u043e\u0437\u0430',                   'thunderstorm-with-rain': '\u0434\u043e\u0436\u0434\u044c \u0441 \u0433\u0440\u043e\u0437\u043e\u0439', 'thunderstorm-with-hail': '\u0433\u0440\u043e\u0437\u0430 \u0441 \u0433\u0440\u0430\u0434\u043e\u043c'                   }     wind_dir = {'nw': '\u0441\u0435\u0432\u0435\u0440\u043e-\u0437\u0430\u043f\u0430\u0434\u043d\u043e\u0435', 'n': '\u0441\u0435\u0432\u0435\u0440\u043d\u043e\u0435', 'ne': '\u0441\u0435\u0432\u0435\u0440\u043e-\u0432\u043e\u0441\u0442\u043e\u0447\u043d\u043e\u0435', 'e': '\u0432\u043e\u0441\u0442\u043e\u0447\u043d\u043e\u0435',                 'se': '\u044e\u0433\u043e-\u0432\u043e\u0441\u0442\u043e\u0447\u043d\u043e\u0435', 's': '\u044e\u0436\u043d\u043e\u0435', 'sw': '\u044e\u0433\u043e-\u0437\u0430\u043f\u0430\u0434\u043d\u043e\u0435', 'w': '\u0437\u0430\u043f\u0430\u0434\u043d\u043e\u0435', '\u0441': '\u0448\u0442\u0438\u043b\u044c'}      yandex_json = json.loads(yandex_req.text)     yandex_json['fact']['condition'] = conditions[yandex_json['fact']['condition']]     yandex_json['fact']['wind_dir'] = wind_dir[yandex_json['fact']['wind_dir']]     for parts in yandex_json['forecast']['parts']:         parts['condition'] = conditions[parts['condition']]         parts['wind_dir'] = wind_dir[parts['wind_dir']]      pogoda = dict()     params = ['condition', 'wind_dir', 'pressure_mm', 'humidity']     for parts in yandex_json['forecast']['parts']:         pogoda[parts['part_name']] = dict()         pogoda[parts['part_name']]['temp'] = parts['temp_avg']         for param in params:             pogoda[parts['part_name']][param] = parts[param]      pogoda['fact'] = dict()     pogoda['fact']['temp'] = yandex_json['fact']['temp']     for param in params:         pogoda['fact'][param] = yandex_json['fact'][param]      pogoda['link'] = yandex_json['info']['url']     return pogoda<\/code><\/pre>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e, \u043d\u043e \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0442\u0440\u0430 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435\u0431\u0430 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u0438 conditions \u0438 wind_dir \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430. \u0412 \u043e\u0442\u0432\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0433\u043e\u0434\u0430 \u0438 \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0434\u0432\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 (\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u043d\u043e \u0432 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a). \u00a0\u0421\u0440\u0430\u0437\u0443 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u0435 \u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0442\u0440\u0430 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435\u0431\u0430. \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438 \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0437 \u0432\u0441\u0435\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430. \u041f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u043a\u043e\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 api \u044f\u043d\u0434\u0435\u043a\u0441\u0430 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e 50 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0443\u0442\u043a\u0438.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043c \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u043e\u043c \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u044b. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0430\u043a\u043a\u0443\u0432\u0435\u0437\u0435\u0440:<\/p>\n<pre><code class=\"python\">def print_weather(dict_weather, message):     bot.send_message(message.from_user.id, f'\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u0435 \u0434\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0412\u0430\u0448\u0435 \u0441\u0438\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e!'                                            f' \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0441\u0435\u0439\u0447\u0430\u0441 {dict_weather[\"\u0441\u0435\u0439\u0447\u0430\u0441\"][\"temp\"]}!'                                            f' \u0410 \u043d\u0430 \u043d\u0435\u0431\u0435 {dict_weather[\"\u0441\u0435\u0439\u0447\u0430\u0441\"][\"sky\"]}.'                                            f' \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0442\u0440\u0438 \u0447\u0430\u0441\u0430 {dict_weather[\"\u0447\u0435\u0440\u0435\u04373\u0447\"][\"temp\"]}!'                                            f' \u0410 \u043d\u0430 \u043d\u0435\u0431\u0435 {dict_weather[\"\u0447\u0435\u0440\u0435\u04373\u0447\"][\"sky\"]}.'                                            f' \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0448\u0435\u0441\u0442\u044c \u0447\u0430\u0441\u043e\u0432 {dict_weather[\"\u0447\u0435\u0440\u0435\u04376\u0447\"][\"temp\"]}!'                                            f' \u0410 \u043d\u0430 \u043d\u0435\u0431\u0435 {dict_weather[\"\u0447\u0435\u0440\u0435\u04376\u0447\"][\"sky\"]}.'                                            f' \u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u0432\u044f\u0442\u044c \u0447\u0430\u0441\u043e\u0432 {dict_weather[\"\u0447\u0435\u0440\u0435\u04379\u0447\"][\"temp\"]}!'                                            f' \u0410 \u043d\u0430 \u043d\u0435\u0431\u0435 {dict_weather[\"\u0447\u0435\u0440\u0435\u04379\u0447\"][\"sky\"]}.')     bot.send_message(message.from_user.id, f' \u0410 \u0437\u0434\u0435\u0441\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 '                                            f'{dict_weather[\"link\"]}')<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 weather \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c. \u0412 \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0442\u043e\u0442 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 weather. \u00a0\u0412 \u043a\u043e\u043d\u0446\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043d\u043e\u0437.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441 \u043f\u043e\u0433\u043e\u0434\u043e\u0439 \u043e\u0442 \u044f\u043d\u0434\u0435\u043a\u0441\u0430:<\/p>\n<pre><code class=\"python\">def print_yandex_weather(dict_weather_yandex, message):     day = {'night': '\u043d\u043e\u0447\u044c\u044e', 'morning': '\u0443\u0442\u0440\u043e\u043c', 'day': '\u0434\u043d\u0435\u043c', 'evening': '\u0432\u0435\u0447\u0435\u0440\u043e\u043c', 'fact': '\u0441\u0435\u0439\u0447\u0430\u0441'}     bot.send_message(message.from_user.id, f'\u0410 \u044f\u043d\u0434\u0435\u043a\u0441 \u0433\u043e\u0432\u043e\u0440\u0438\u0442:')     for i in dict_weather_yandex.keys():         if i != 'link':             time_day = day[i]             bot.send_message(message.from_user.id, f'\u0422\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 {time_day} {dict_weather_yandex[i][\"temp\"]}'                                                    f', \u043d\u0430 \u043d\u0435\u0431\u0435 {dict_weather_yandex[i][\"condition\"]}')      bot.send_message(message.from_user.id, f' \u0410 \u0437\u0434\u0435\u0441\u044c \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 '                                            f'{dict_weather_yandex[\"link\"]}')<\/code><\/pre>\n<p>\u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a \u0436\u0435 \u0441\u043a\u0430\u0440\u043c\u043b\u0438\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0445\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 yandex_weather \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c. \u0417\u0434\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043d\u044f, \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0434\u0430\u043b\u0435\u0435 \u0437\u0430\u0434\u0430\u0435\u043c \u0446\u0438\u043a\u043b \u043f\u043e \u043a\u043b\u044e\u0447\u0430\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0438\u0437 \u0432\u044b\u0445\u043e\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 yandex_weather \u0435\u0441\u043b\u0438 \u043a\u043b\u044e\u0447 \u043d\u0435 link \u0442\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435: \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 {\u0432\u0440\u0435\u043c\u044f \u0434\u043d\u044f}, \u043d\u0430 \u043d\u0435\u0431\u0435 {\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435\u0431\u0430}. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u044f\u043d\u0434\u0435\u043a\u0441 (\u044d\u0442\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u044f\u043d\u0434\u0435\u043a\u0441\u0430).<\/p>\n<p>\u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 <\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-410859","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/410859","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=410859"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/410859\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=410859"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=410859"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=410859"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}