@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)
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
@Vabots
Я бы тебе посоветовал записывать локацию пользователя в базу данных по типу user_id, location
user_id - message.chat.id
А в том моменте, где ты пробиваешь weather опять же обращаться в базу данных, находить по фильтру айди пользователя и локацию. И брать уже локацию.

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

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

Войти через центр авторизации
Похожие вопросы