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

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

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

Похожие вопросы