Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.51 KB | None | 0 0
  1. import telebot
  2. import requests
  3.  
  4. APPID = 'd699d894ac2c53930be1ee0df5f8d64d'
  5.  
  6. TOKEN = '833600167:AAFs3BiDmCGOc_kTqFyssj0nUmrOnT-wr9Y'
  7.  
  8. bot = telebot.TeleBot(TOKEN)
  9.  
  10. cities = {"абакан": "Abakan",
  11.           "альметьевск": "Almetyevsk",
  12.           "анадырь": "Anadyr",
  13.           "анапа": "Anapa",
  14.           "архангельск": "Arkhangelsk",
  15.           "астрахань": "Astrakhan",
  16.           "барнаул": "Barnaul",
  17.           "белгород": "Belgorod",
  18.           "беслан": "Beslan",
  19.           "бийск": "Biysk",
  20.           "биробиджан": "Birobidzhan",
  21.           "благовещенск": "Blagoveshchensk",
  22.           "бологое": "Bologoye",
  23.           "брянск": "Bryansk",
  24.           "великий новгород": "Velikiy Novgorod",
  25.           "великий устюг": "Velikiy Ustyug",
  26.           "владивосток": "Vladivostok",
  27.           "владикавказ": "Vladikavkaz",
  28.           "владимир": "Vladimir",
  29.           "волгоград": "Volgograd",
  30.           "вологда": "Vologda",
  31.           "воркута": "Vorkuta",
  32.           "воронеж": "Voronezh",
  33.           "гатчина": "Gatchina",
  34.           "гдов": "Gdov",
  35.           "геленджик": "Gelendzhik",
  36.           "горно-алтайск": "Gorno-Altaysk",
  37.           "грозный": "Grozny",
  38.           "гудермес": "Gudermes",
  39.           "гусь-хрустальный": "Gus-Khrustalny",
  40.           "дзержинск": "Dzerzhinsk",
  41.           "дмитров": "Dmitrov",
  42.           "дубна": "Dubna",
  43.           "ейск": "Yeysk",
  44.           "екатеринбург": "Yekaterinburg",
  45.           "елабуга": "Yelabuga",
  46.           "елец": "Yelets",
  47.           "ессентуки": "Yessentuki",
  48.           "златоуст": "Zlatoust",
  49.           "иваново": "Ivanovo",
  50.           "ижевск": "Izhevsk",
  51.           "иркутск": "Irkutsk",
  52.           "йошкар-ола": "Yoshkar-Ola",
  53.           "казань": "Kazan",
  54.           "калининград": "Kaliningrad",
  55.           "калуга": "Kaluga",
  56.           "кемерово": "Kemerovo",
  57.           "кисловодск": "Kislovodsk",
  58.           "комсомольск-на-амуре": "Komsomolsk-on-Amur",
  59.           "котлас": "Kotlas",
  60.           "краснодар": "Krasnodar",
  61.           "красноярск": "Krasnoyarsk",
  62.           "курган": "Kurgan",
  63.           "курск": "Kursk",
  64.           "кызыл": "Kyzyl",
  65.           "лениногорск": "Leninogorsk",
  66.           "ленск": "Lensk",
  67.           "липецк": "Lipetsk",
  68.           "луга": "Luga",
  69.           "любань": "Lyuban",
  70.           "люберцы": "Lyubertsy",
  71.           "магадан": "Magadan",
  72.           "майкоп": "Maykop",
  73.           "махачкала": "Makhachkala",
  74.           "миасс": "Miass",
  75.           "минеральные воды": "  Mineralnye Vody",
  76.           "мирный": "Mirny",
  77.           "москва": "Moscow",
  78.           "мурманск": "Murmansk",
  79.           "муром": "Murom",
  80.           "мытищи": "Mytishchi",
  81.           "набережные челны": "  Naberezhnye Chelny",
  82.           "надым": "Nadym",
  83.           "нальчик": "Nalchik",
  84.           "назрань": "Nazran",
  85.           "нарьян-мар": "Naryan-Mar",
  86.           "находка": "Nakhodka",
  87.           "нижневартовск": "Nizhnevartovsk",
  88.           "нижнекамск": "Nizhnekamsk",
  89.           "нижний новгород": "Nizhny Novgorod",
  90.           "нижний тагил": "Nizhny Tagil",
  91.           "новокузнецк": "Novokuznetsk",
  92.           "новосибирск": "Novosibirsk",
  93.           "новый уренгой": "Novy Urengoy",
  94.           "норильск": "Norilsk",
  95.           "обнинск": "Obninsk",
  96.           "октябрьский": "Oktyabrsky",
  97.           "омск": "Omsk",
  98.           "оренбург": "Orenburg",
  99.           "орехово-зуево": "Orekhovo-Zuyevo",
  100.           "орёл": "Oryol",
  101.           "пенза": "Penza",
  102.           "пермь": "Perm",
  103.           "петрозаводск": "Petrozavodsk",
  104.           "петропавловск-камчатский": "Petropavlovsk-Kamchatsky",
  105.           "подольск": "Podolsk",
  106.           "псков": "Pskov",
  107.           "пятигорск": "Pyatigorsk",
  108.           "ростов-на-дону": "Rostov-on-Don",
  109.           "рыбинск": "Rybinsk",
  110.           "рязань": "Ryazan",
  111.           "салехард": "Salekhard",
  112.           "самара": "Samara",
  113.           "санкт-петербург": "Saint Petersburg",
  114.           "саранск": "Saransk",
  115.           "саратов": "Saratov",
  116.           "северодвинск": "Severodvinsk",
  117.           "смоленск": "Smolensk",
  118.           "соль-илецк": "Sol-Iletsk",
  119.           "сочи": "Sochi",
  120.           "ставрополь": "Stavropol",
  121.           "сургут": "Surgut",
  122.           "сыктывкар": "Syktyvkar",
  123.           "тамбов": "Tambov",
  124.           "тверь": "Tver",
  125.           "тобольск": "Tobolsk",
  126.           "тольятти": "Tolyatti",
  127.           "томск": "Tomsk",
  128.           "туапсе": "Tuapse",
  129.           "тула": "Tula",
  130.           "тында": "Tynda",
  131.           "тюмень": "Tyumen",
  132.           "улан-уде": "Ulan-Ude",
  133.           "ульяновск": "Ulyanovsk",
  134.           "уфа": "Ufa",
  135.           "хабаровск": "Khabarovsk",
  136.           "ханты-мансийск": "Khanty-Mansiysk",
  137.           "чебаркуль": "Chebarkul",
  138.           "чебоксары": "Cheboksary",
  139.           "челябинск": "Chelyabinsk",
  140.           "череповец": "Cherepovets",
  141.           "черкесск": "Cherkessk",
  142.           "чистополь": "Chistopol",
  143.           "чита": "Chita",
  144.           "шадринск": "Shadrinsk",
  145.           "шатура": "Shatura",
  146.           "шуя": "Shuya",
  147.           "элиста": "Elista",
  148.           "энгельс": "Engels",
  149.           "южно-сахалинск": "Yuzhno-Sakhalinsk",
  150.           "якутск": "Yakutsk",
  151.           "ярославль": "Yaroslavl"}
  152.  
  153. def weather(city):
  154.     try:
  155.         res = requests.get("http://api.openweathermap.org/data/2.5/weather",
  156.                      params={'q': (city + ',ru'), 'units': 'metric', 'lang': 'ru', 'APPID': APPID})
  157.         data = res.json()
  158.         answer = str(data['weather'][0]['description']) + '\n' + str(data['main']['temp']) + ' ℃'
  159.     except Exception as e:
  160.         answer = "Exception (weather): " + str(e)
  161.     return answer
  162.  
  163. def coord(lat, lon):
  164.     try:
  165.         res = requests.get("http://api.openweathermap.org/data/2.5/weather",
  166.                            params={'lat': str(lat), 'lon': str(lon), 'units': 'metric', 'lang': 'ru', 'APPID': APPID})
  167.         data = res.json()
  168.         answer = str(data['weather'][0]['description']) + '\n' + str(data['main']['temp']) + ' ℃' + '\n' + str(data['name'])
  169.     except Exception as e:
  170.         answer = "Exception (weather): " + str(e)
  171.     return answer
  172.  
  173. @bot.message_handler(commands=['start'])
  174. def handle_start(message):
  175.     user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
  176.     user_markup.row('/start', '/stop')
  177.     #user_markup.row('Погода')
  178.     bot.send_message(message.from_user.id, "Напишите нужный вам город или отправьте геопозицию и получите сводку погоды.", reply_markup = user_markup)
  179.    
  180. @bot.message_handler(commands=['stop'])
  181. def handle_stop(message):
  182.     hide_markup = telebot.types.ReplyKeyboardRemove()
  183.     bot.send_message(message.from_user.id, "...", reply_markup = hide_markup)
  184.    
  185. @bot.message_handler(content_types=['location'])
  186. def handle_location(message):
  187.     answer = coord(message.location.latitude, message.location.longitude)
  188.     bot.send_message(message.from_user.id, answer)
  189.    
  190. @bot.message_handler(content_types=['text'])
  191. def handle_text(message):
  192.     msgl = message.text.lower()
  193.    
  194. #     if msgl == "погода в москве":
  195.    
  196.     if msgl in cities:
  197.       city = cities[msgl] #из словаря берем инглиш название и даем функции
  198.       answer = weather(city)
  199.  
  200.       bot.send_message(message.from_user.id, answer)
  201.     else:
  202.       bot.send_message(message.chat.id, "города нет в списке")
  203.  
  204.  
  205.  
  206.  
  207. bot.polling(none_stop = True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement