From 9c57bc2da831153ca6ce17c6fa2e322c72f47a54 Mon Sep 17 00:00:00 2001 From: Leo <277007013+LeoR156@users.noreply.github.com> Date: Tue, 30 Jun 2026 18:22:52 +0500 Subject: [PATCH] Add bot.py --- tg.py | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tg.py diff --git a/tg.py b/tg.py new file mode 100644 index 0000000..0e8a2b9 --- /dev/null +++ b/tg.py @@ -0,0 +1,64 @@ +import os +import telebot +import requests + +# 1. Забираем токены из переменных окружения (вспоминаем флаг -e в Docker!) +TG_TOKEN = os.getenv("TG_TOKEN") +WEATHER_API_KEY = os.getenv("WEATHER_API_KEY") + +# Проверка, что переменные действительно переданы +if not TG_TOKEN or not WEATHER_API_KEY: + print("ВНИМАНИЕ: Не заданы переменные окружения TG_TOKEN или WEATHER_API_KEY!") + exit(1) + +bot = telebot.TeleBot(TG_TOKEN) + +# 2. Реакция на команду /start +@bot.message_handler(commands=['start', 'help']) +def send_welcome(message): + bot.reply_to(message, "Привет! 🌍 Напиши мне название любого города, и я пришлю прогноз погоды.") + +# 3. Реакция на любой другой текст (названия городов) +@bot.message_handler(func=lambda message: True) +def get_weather(message): + city = message.text.strip() + url = "https://api.openweathermap.org/data/2.5/weather" + + params = { + "q": city, + "appid": WEATHER_API_KEY, + "units": "metric", + "lang": "ru" + } + + try: + response = requests.get(url, params=params) + + # Если API вернуло код 200 (Всё Ок) + if response.status_code == 200: + data = response.json() + temp = data["main"]["temp"] + desc = data["weather"][0]["description"] + + # Формируем красивый ответ + answer = f"🌡 Погода в городе {city.capitalize()}:\n" + answer += f"Температура: {temp}°C\n" + answer += f"На улице {desc}." + + bot.send_message(message.chat.id, answer) + + # Если API вернуло код 404 (Город не найден) + elif response.status_code == 404: + bot.send_message(message.chat.id, f"❌ Город '{city}' не найден. Проверь опечатку!") + + else: + bot.send_message(message.chat.id, "⚠️ Ошибка связи с сервером погоды.") + print(f"Ошибка API: Код {response.status_code}") + + except Exception as e: + bot.send_message(message.chat.id, "🔌 Внутренняя ошибка бота.") + print(f"Ошибка кода: {e}") + +# Запуск постоянного опроса серверов Telegram +print("Бот запущен и ждет сообщений...") +bot.polling(none_stop=True)