Бот был сделан от скуки специально для Cweto4ek. Функционал бота: показывает погоду Спойлер Что потребуется: 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() 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, потом вводите город в котором нужно узнать погоду и бот выдаёт погоду
легенда, за час написал --- Сообщение объединено с предыдущим 28 фев 2025 python-telegram-bot[ext] и requests юзай лучше aiogram и aiohttp
Temmie, а кому он нужен? даже за сотку не купят, чисто поиграться на 1 раз. летом для себя решил сделать, потом положил болт и благодаря челику выше решил его доделать
Красава UWUw респект, крутой и полезный бот, мне даже кажется ты первый кто так сделал, нужно будет патент зарегестрировать
Апатия, Здравствуйте, я действительно не был первым кто его сделал, подобных ему уже много, но благодарю за замечание!
зайцевПлюсОдин, мой второй акк с которого тестил. в твоём случае будет отображаться то имя, которое установлено в тг
awaw, а можно сделать фичу, типа если на улице гололед то денчик падает когда слазиет(как в оригинале), а если без гололеда то денчик просто слазиет
обошел этим ботом модерацию тг, но менты все таки нагрянули в хату. я им показал этого бота и они ушли. респект тсу