• Как в Python использовать инфу из переменной w_info в функции def answer(call):?

    @o5a
    Можно сделать глобальный словарь данных (в данном простом случае только для ветра, но можно и все похожие данные в таком виде записывать), в который записывать данные по городу. Затем при нажатии кнопки "Ветер" просто брать уже готовые данные из этого словаря.
    # на верхнем уровне объявляем наш словарь
    wind_info = {}
    
    ...
        elif w1 > 33:
            w_info = 'Огромные разрушения, серьезно повреждены здания, строения и дома, деревья вырваны с корнями, растительность уничтожена.'
    # после определения w_info заносим эти данные в наш словарь
        wind_info[message.text] = w_info # т.к. message.text это наш город (вообще хорошо бы его сразу в отдельную переменную выделять, так код проще читается)

    Но нам нужно в колбеке для ветра как-то указать, по какому городу хотим получить информацию о ветре. Мы можем сам город передать в колбеке
    item_wind = types.InlineKeyboardButton(text = 'Ветер', callback_data = f'wind_{message.text}')

    а затем его извлечь в самом колбеке
    вместо старого
    elif call.data == 'wind':
    обрабатываем колбек вида "wind_Москва"
    elif call.data.startswith('wind'):
            # извлекаем название города
            city = call.data.split('_',1)[1]
            # и берем нашу информацию из словаря данных по ветру
            w_info = wind_info[city]
            bot.send_message(call.message.chat.id, w_info)
    Ответ написан
    1 комментарий
  • Как из функции one перенести данные из переменной qwe в функцию two?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    bot.register_next_step_handler(message, two, qwe)

    def two(message, qwe):
    Ответ написан
    6 комментариев
  • Как удалить клавиатуру в Telegram?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Имеет по умолчанию клавиатуру это как? Библиотека дописывает рандомные кнопки к сообщениям что ли

    reply_markup=types.ReplyKeyboardRemove()
    Ответ написан
    3 комментария
  • Как получить из deg ветра в градусах, названия север, восток, юг?

    @kisaa
    winddirections = ("северный", "северо-восточный", "восточный", "юго-восточный", "южный", "юго-западный", "западный", "северо-западный")
    direction = int((degrees + 22.5) // 45 % 8)
    print(winddirections[direction])
    Ответ написан
    Комментировать
  • После ввода неправильного названия в бота погоды на pythone, выскакивает ошибка,что с этим делать?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Использовать конструкцию try - except.
    Рабочий код:
    import telebot
    import pyowm
    
    owm = pyowm.OWM('key', language = "ru")
    bot = telebot.TeleBot('token')
    
    @bot.message_handler(content_types=['text'])
    def send_echo(message):
    	try:
    		observation = owm.weather_at_place( message.text )
    		w = observation.get_weather()
    		temp = w.get_temperature('celsius')["temp"]
    		hum = w.get_humidity()
    		time = w.get_reference_time(timeformat='iso')
    		wind = w.get_wind()["speed"]
    
    		answer ="В городе " + message.text + " сейчас " + w.get_detailed_status() + "\n"
    		answer += "Температура сейчас в районе " + str(temp) + "\n\n" + "\nСкорость ветра: " + str(wind) + "м/с" + "\n" + "\nВлажность: " + str(hum) + "%" + "\n" + "\nВремя: " + str(time) + "\n"
    
    		if temp < 11:
    			answer += "Сейчас очень холодно."
    		elif temp < 20:
    			answer += "Сейчас прохладно, лучше одеться потеплее."
    		else:
    			answer += "Температура в норме!"
    
    		bot.send_message(message.chat.id, answer)
    	except:
    		bot.send_message(message.chat.id,'Ошибка! Город не найден.')
    bot.polling( none_stop = True)
    input()

    5e494983ac97a904403016.png
    Ответ написан