Add bot.py
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user