import network
import urequests
import ujson
import time
import usocket
# Данные Wi-Fi
WIFI_SSID = "Wokwi-GUEST" # Замените на свои данные
WIFI_PASSWORD = "" # Пароль (если есть)
# Токен Telegram-бота
BOT_TOKEN = "7511833549:AAEtaRjU7bflgyu6pDy1tOxg_U5bxfifivI"
# ID чата (можно узнать через @userinfobot)
CHAT_ID = "ВАШ_CHAT_ID"
# URL API Telegram
BASE_URL = f"https://api.telegram.org/bot{BOT_TOKEN}"
# URL страницы с погодой в Уфе
WEATHER_URL = "https://www.gismeteo.ru/weather-ufa-4588/"
# Функция подключения к Wi-Fi
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
print("Подключение к Wi-Fi...")
while not wlan.isconnected():
time.sleep(1)
print("Wi-Fi подключен:", wlan.ifconfig())
# Функция для получения температуры с Gismeteo
def get_temperature():
try:
response = urequests.get(WEATHER_URL)
html = response.text
response.close()
# Ищем тег с температурой (примерный парсинг)
start_idx = html.find("<temperature-value")
if start_idx != -1:
value_start = html.find('value="', start_idx) + 7
value_end = html.find('"', value_start)
temperature = html[value_start:value_end]
return temperature + "°C"
return "Ошибка получения температуры"
except Exception as e:
return f"Ошибка: {str(e)}"
# Функция отправки сообщения в Telegram
def send_message(text):
url = f"{BASE_URL}/sendMessage"
payload = {"chat_id": CHAT_ID, "text": text}
try:
response = urequests.post(url, json=payload)
response.close()
except Exception as e:
print(f"Ошибка отправки: {str(e)}")
# Функция получения последних сообщений
def get_updates():
url = f"{BASE_URL}/getUpdates"
try:
response = urequests.get(url)
data = response.json()
response.close()
return data["result"]
except Exception as e:
print(f"Ошибка получения сообщений: {str(e)}")
return []
# Основной цикл бота
def run_bot():
last_update_id = 0
while True:
updates = get_updates()
for update in updates:
update_id = update["update_id"]
if update_id > last_update_id:
last_update_id = update_id
if "message" in update and "text" in update["message"]:
text = update["message"]["text"]
if text == "/start":
send_message("Привет! Напиши 'Погода в Уфе', чтобы узнать температуру.")
elif text == "Погода в Уфе":
temp = get_temperature()
send_message(f"Температура в Уфе сейчас: {temp}")
time.sleep(5) # Проверка новых сообщений раз в 5 секунд
# Запуск
connect_wifi()
send_message("✅ Бот запущен!")
run_bot()