Форум › Форумы › ГЛАВНЫЙ ФОРУМ › Проблема с await
- В этой теме 2 ответа, 3 участника, последнее обновление 2 месяца, 1 неделя назад сделано
BarmonIT.
-
АвторЗаписи
-
05.01.2026 в 11:01 #98
TipTopУчастникИз-за 49 строчки пишет следующее: SyntaxError: expected ‘except’ or ‘finally’ block. Я прям молодняк в питоне
import requests import datetime from aiogram import Bot,types from aiogram.dispatcher import Dispatcher from aiogram.utils import executor from config import open_weather_token bot = Bot('6230098529:AAGDVMa1GJkiO69Aft1PTHyyuCqNInqbImc') dp = Dispatcher(bot) @dp.message_handler(commands=['start']) async def start_command(message: types.Message): await message.reply('Привет, напиши свой город') async def get_weather(message: types.Message): code_to_smile = { "Clear": "Ясно \U00002600", "Clouds": "Облачно \U00002601", "Rain": "Дождь \U00002614", "Drizzle": "Дождь \U00002614", "Thunderstorm": "Гроза \U000026A1", "Snow": "Снег \U0001F328", "Mist": "Туман \U0001F32B" } try: r = requests.get( f"http://api.openweathermap.org/data/2.5/weather?q={message.text}&appid={open_weather_token}&units=metric" ) data = r.json() city = data["name"] cur_weather = data["main"]["temp"] weather_description = data["weather"][0]["main"] if weather_description in code_to_smile: wd = code_to_smile[weather_description] else: wd = "Выгляни в окно и посмотри что там, я не знаю" humidity = data["main"]["humidity"] pressure = data["main"]["pressure"] wind = data["wind"]["speed"] sunrise_timestamp = datetime.datetime.fromtimestamp(data["sys"]["sunrise"]) sunset_timestamp = datetime.datetime.fromtimestamp(data["sys"]["sunset"]) length_of_the_day = datetime.datetime.fromtimestamp(data["sys"]["sunset"]) - datetime.datetime.fromtimestamp( data["sys"]["sunrise"]) await message.reply(f"{datetime.datetime.now().strftime('%Y-%m-%m %H:%M')}\n" f"Погода в твоем городе {city}\n" f"Температура: {cur_weather}°С\n" f"Влажность: {humidity}%\n" f"Давление : {pressure} мм.рт.ст\n" f"Ветер: {wind} мегаладонов в секунду\n" f"Время восхода: {sunrise_timestamp}\n" f"Время заката: {sunset_timestamp}\n" f"Длина дня: {length_of_the_day}" ) if __name__ == '__main__': executor.start_polling(dp)16.04.2026 в 08:17 #138
NiemoУчастникОшибка в том, что у тебя try: есть, а except или finally нет. Нужно добавить обработку ошибок после try:.
Добавь после строки с await message.reply(…) вот этот блок (с тем же отступом, что и try):
python
except Exception as e:
await message.reply(f”Ошибка: {e}\nПроверь название города”)
И не забудь задекорировать функцию get_weather хэндлером сообщений, например:python
@dp.message_handler()
async def get_weather(message: types.Message):
# твой код13.05.2026 в 09:49 #159
BarmonITУчастникОшибка в строке 49 возникает, потому что у вас есть try:, но после него нет блока except или finally. Добавьте обработку ошибок после await message.reply(…) например, except Exception as e: и внутри отправку сообщения пользователю. И не забудьте повесить на функцию get_weather декоратор @dp.message_handler(), иначе бот не будет её вызывать при вводе города.
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.