Как стать автором
Обновить

«Карманный синоптик за час». Пишем Telegram-бота для мониторинга погоды на Python

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров27K
Всего голосов 48: ↑38 и ↓10+41
Комментарии16

Комментарии 16

Встречал похожий - MeteoBot наказывается.

Для кого статья? Если для школьников, изучающих Python, то после фразы "Далее подключимся к серверу по SSH, создадим виртуальное окружение для бота и загрузим его удобным способом. " они ничего не поймут. Распишите поподробнее плиз, тогда от статьи будет образовательная польза

Я школьник и мне все пон) ну вроде можно клонированием репы с гита сделать. Но тут видно, что автор использует scp, тк ему нужно было перенести всего один файл. Впрочем, для тех, кто не умеет читать со скриншотов, оставлю ссыль

и вот опять, я уже не знаю что за такое делать

try:
    # куча кода, который может вызвать очень разные исключения
    # но except конечно же будет общий и даже умолчит, а что именно
    # за ошибка была
except:
    await message.reply("Проверьте название города!")

скриншоты с кали, запуск от root, тоже характерный показатель

Я согласен, что это упущение автора статьи, но тут же акцент на другом - привлечь идейно не особо разбирающегося но интересующегося к тому, что какие-то прикладные полезные вещи можно без проблем реализовать, и это очень здорово. Было бы здорово, наверное, видеть сразу грамотно написанный код, без подобного рода перехватов исключений, но я всё равно не пойму что к чему сразу, без подробных уточнений, это, скорее, материал других статей

Создание целого нового бота под каждый пшик - фигня.

А вот за ссылку на api.openweather спасибо, добавил в своего служебного бота /w

Запуск синхронного кода (requests) из асинхронного контекста, это очень, очень плохо.

вот же, а я даже слона и не заметил ;) реально же качество кода ниже плинтуса, а куча плюсов я так понимаю из-за поддержки компании, Selectel фу быть таким!

Кстати, да. Странно, есть ведь асинхронный httpx, которого запихнуть в этот код не составит труда

Пользуясь случаем хочу поделиться своим творением: https://t.me/visualweatherbot

:)

P. S. инлайн режим тоже имеется, для него изначально бот и писался

Привет, Максим. Спасибо за статью! Смотрю твой канал уже давно. Можешь подсказать, когда будут новые видеоролики по этичному хакингу, тестированию систем на безопасность?

Обычным ботом уже никого не удивишь. Думаю, что в такие проекты стоит вносить как минимум новые фичи от тг, допустим webapp.

VDS за 900 ₽/Мес для бота погоды, когда можно арендовать за ~ 200 ₽/ Мес это конечно мощно =)

Соглашусь с некоторыми комментариями выше, что всё-таки хочется качество кода повыше!

Проверял с

python 3.11.3
aiogram 2.25.1
requests 2.30.0

Даже отклик на команду /start не работает.

Я бы сделал пару поправок

Во-первых это код с try и except

try:
    # Какой-то код здесь
except Exception as error # уберём эту общую ошибку, которая не даст понять
   print(error) # в чём проблема и напишем то, что я написал

Во-вторых это дата, которая не отображает локальное время

import datetime
from datetime import timezone, timedelta 
# и остальные библиотеки, указанные в статье 
try:
    # код, который был в статье тут
    time_zone = data["timezone"]

    tz = timezone(timedelta(seconds=time_zone))
    # вуаля, и бот отображает локальное время в конкретном городе
    await message.reply(f"{datetime.datetime.now(tz).strftime('%Y-%m-%d %H:%M')}" # и так далее
except Exception as error:
    print(error)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий