# coding: utf-8
"""Python 3. Учебный бот без хранения переписки. Прочитайте код до запуска.
Токен задаётся переменной окружения TELEGRAM_BOT_TOKEN. Не публикуйте токен.
Для проверки answer импортируйте модуль: сеть включается только в main().
"""
import json
import os
import urllib.request
import urllib.parse
import urllib.error

def answer(text):
    command = text.strip().split(maxsplit=1)[0] if text.strip() else ""
    if command == "/start":
        return "Привет! Это учебный бот. Напиши /help."
    if command == "/help":
        return "Команды: /start и /help. Личные данные не присылай."
    return "Пока я понимаю только /start и /help."

def main():
    token = os.environ.get("TELEGRAM_BOT_TOKEN", "").strip()
    if not token:
        print("Сначала задайте TELEGRAM_BOT_TOKEN. Не присылайте токен другим людям.")
        return
    base = "https://api.telegram.org/bot" + token + "/"
    def request(method, params):
        data = urllib.parse.urlencode(params).encode()
        with urllib.request.urlopen(base + method, data=data, timeout=40) as response:
            payload = json.load(response)
        if not payload.get("ok"):
            raise RuntimeError("Telegram вернул ошибку; проверьте настройки бота.")
        return payload["result"]
    offset = 0
    print("Учебный бот запущен. Для остановки нажмите Ctrl+C.")
    try:
        while True:
            updates = request("getUpdates", {"offset": offset, "timeout": 25,
                "allowed_updates": json.dumps(["message"])})
            for update in updates:
                offset = update["update_id"] + 1
                message = update.get("message", {})
                text = message.get("text")
                chat = message.get("chat", {})
                if not isinstance(text, str) or chat.get("type") != "private":
                    continue
                request("sendMessage", {"chat_id": chat["id"], "text": answer(text[:500])})
    except KeyboardInterrupt:
        print("Бот остановлен.")
    except urllib.error.HTTPError as error:
        print("Ошибка HTTP:", error.code, ". Секрет и содержимое переписки не выводятся.")
    except (urllib.error.URLError, TimeoutError, RuntimeError, ValueError, KeyError):
        print("Не удалось продолжить. Проверьте сеть и настройки. Токен не выводится.")

if __name__ == "__main__":
    main()
