Загрузка...

[Tg] tg bot for viewing weather

Thread in Python created by awaw Feb 28, 2025. (bumped Jun 1, 2025) 665 views

  1. awaw
    awaw Topic starter Feb 28, 2025 ну купи парсер чатов тг lolz.live/threads/9046721 11,294 Oct 8, 2017
    Бот был сделан от скуки специально для avatarCweto4ek.
    Функционал бота: показывает погоду :stoneebalo:
    [IMG]
    Что потребуется:
    Python 3.7 и выше (я использовал 3.11)
    Библиотеки: python-telegram-bot[ext] и requests
    Аккаунт OpenWeatherMap для получения API

    Python
    import logging
    import requests
    from telegram import Update
    from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
    from datetime import datetime

    logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
    logger = logging.getLogger(__name__)

    TELEGRAM_TOKEN = "апи тг бота" # апи из botfather
    OPENWEATHER_API_KEY = "апи openweathermap" #апи брать тут https://home.openweathermap.org/api_keys?
    OPENWEATHER_URL = "http://api.openweathermap.org/data/2.5/weather"

    def get_weather(city):
    try:
    params = {
    'q': city,
    'appid': OPENWEATHER_API_KEY,
    'units': 'metric',
    'lang': 'ru'
    }
    response = requests.get(OPENWEATHER_URL, params=params)
    data = response.json()

    if response.status_code == 200:
    weather = data['weather'][0]['description']
    temperature = data['main']['temp']
    humidity = data['main']['humidity']
    wind_speed = data['wind']['speed']

    return (f"Текущая погода в {city}:\n"
    f"{weather.capitalize()}\n"
    f"Температура: {temperature}°C\n"
    f"Влажность: {humidity}%\n"
    f"Скорость ветра: {wind_speed} м/с\n")
    else:
    return "город не найден"
    except Exception as e:
    logger.error(f"ошибка при получении погоды: {e}")
    return "произошла ошибка при получении погоды."

    async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    user = update.effective_user
    await update.message.reply_html(
    rf"Привет, {user.first_name}, выбери город чтобы узнать погоду",
    )

    async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    city = update.message.text
    weather_info = get_weather(city)
    await update.message.reply_text(weather_info)

    def main() -> None:
    application = Application.builder().token(TELEGRAM_TOKEN).build()

    application.add_handler(CommandHandler("start", start))
    application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))

    application.run_polling()

    if __name__ == "__main__":
    main()
    Как пользоваться:
    1. Создаёте бота через Telegram: BOTFATHER
    2. В любой редактор (я использую VS Code) вписываете код выше
    3. В строке в кавычках TELEGRAM_TOKEN = "апи тг бота" вписываете API ключ из botfather, в строке OPENWEATHER_API_KEY - API из openweathermap
    4. Запускаете скрипт и открываете бота
    5. Пишете /start, потом вводите город в котором нужно узнать погоду и бот выдаёт погоду
     
  2. InfernLife
    легенда, за час написал
    The post was merged to previous Feb 28, 2025
    python-telegram-bot[ext] и requests

    юзай лучше aiogram и aiohttp
     
    1. awaw Topic starter
      avatarInfernLife, фактически доделал то, на что забил ещё летом :) [IMG]
    2. голос
      avatarInfernLife, это мнение толпы или собственное?
    3. InfernLife
  3. Cweto4ek
    Cweto4ek Feb 28, 2025 Яндекс Плюс инвайты:
    Telegram: View @Flowerinvites
    :catpls:
    57 Feb 21, 2025
    О, работает
    Спасибо, avatarawaw , оцениваю на 10/10 :+rep:
     
  4. Temmie
    Норм бот почему бесплатно а не продаешь
     
    1. awaw Topic starter
      avatarTemmie, а кому он нужен? даже за сотку не купят, чисто поиграться на 1 раз. летом для себя решил сделать, потом положил болт и благодаря челику выше решил его доделать [IMG]
    2. Temmie
      avatarawaw , ясно теряешь выгоду
    3. awaw Topic starter
      avatarTemmie, Где потерянная выгода - там и я [IMG]
  5. Апатия
    Красава UWUw респект, крутой и полезный бот, мне даже кажется ты первый кто так сделал, нужно будет патент зарегестрировать
     
    1. awaw Topic starter
      avatarАпатия, Здравствуйте, я действительно не был первым кто его сделал, подобных ему уже много, но благодарю за замечание! [IMG]
  6. зайцевПлюсОдин
    а кто такой Денис ?
     
    1. View previous comments (1)
    2. зайцевПлюсОдин
      avatarCweto4ek, а денчик слазиет ?
    3. awaw Topic starter
      avatarзайцевПлюсОдин, мой второй акк с которого тестил. в твоём случае будет отображаться то имя, которое установлено в тг :pepesmile:
    4. зайцевПлюсОдин
      avatarawaw , а можно сделать фичу, типа если на улице гололед то денчик падает когда слазиет(как в оригинале), а если без гололеда то денчик просто слазиет
  7. phisher
    обошел этим ботом модерацию тг, но менты все таки нагрянули в хату. я им показал этого бота и они ушли. респект тсу
     
  8. Солнцеестояние
    Солнцеестояние Feb 28, 2025 Разработка -
    Free development from a professional |...
    40 Oct 7, 2023
    ЧЕ ЗА ХУЙНЕЯ
     
  9. Y4sperMaglot
    Y4sperMaglot Feb 28, 2025 Кретин 7,345 Sep 8, 2021
    Разъёб :+rep:
     
  10. LIMP
    LIMP Jun 1, 2025 Discover L.I.M.P. say it 242 Aug 17, 2020
    спасибо, давно искал что-то подобное
     
Loading...