Задать вопрос
@stulevtoday
Дурак, глупо, но самокритично.

Не выполняется сохранение и возврат переменной из функции aiogram. Что делать?

'запрос локации пользователя'

@dp.message_handler(content_types = ['location'])
    async def handle_location(message: types.Message):
        lat = round(message.location.latitude, 3)
        lon = round(message.location.longitude, 3)
        location = []
        location.append(lat), location.append(lon)
        reply = "Широта:  {}\nДолгота: {}".format(lat, lon)
        await message.answer(reply, reply_markup = types.ReplyKeyboardRemove())
        await bot.send_message(message.from_user.id,
                               'Теперь мы видим, где ты находишься) \n'
                               'Выбери действие и узнаешь погоду в своем городе ',
                               reply_markup = get_weather_keyboard())
        return location
    
'не возвращает location' 

    @dp.message_handler(commands = ['locate_me'])
    async def cmd_locate_me(message: types.Message):
        reply = "Нажмите здесь, чтобы поделиться геопозицией"
        await message.answer(reply, reply_markup = get_location_keyboard())
    
'вызов функции с погодой'
'возвращает None, т.к. функция handle_location не возвращает location'

    @dp.message_handler(content_types = ['text'])
    async def weather(message: types.Message):
        if message.text == 'Погода сейчас':
            reply_current = current_weather(handle_location)
            await message.answer(message.from_user.id, reply_current)
        if message.text == 'Погода на сегодня':
            reply_today = today_weather(handle_location)
            await message.answer(message.from_user.id, reply_today)
        if message.text == 'Погода на завтра':
            reply_tomorrow = tomorrow_weather(handle_location)
            await message.answer(message.from_user.id, reply_tomorrow)
        if message.text == 'Погода на 4 дня':
            reply_week = week_weather(handle_location)
            await message.answer(message.from_user.id, reply_week)
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
@Vabots
Я бы тебе посоветовал записывать локацию пользователя в базу данных по типу user_id, location
user_id - message.chat.id
А в том моменте, где ты пробиваешь weather опять же обращаться в базу данных, находить по фильтру айди пользователя и локацию. И брать уже локацию.

Либо же совет, попробуй сделать через State, если не знаешь, могу подсказать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽