Представьте бота как конвейер из трёх шагов:
- 🧑 Пользователь пишет сообщение
- 🤖 Бот (ваше приложение) получает событие от Telegram
- 🖥 Ваш сервер решает, что ответить, и шлёт ответ обратно
Мини‑схема: Пользователь ➜ Telegram ➜ Ваш сервер ➜ Telegram ➜ Пользователь
🔍Что происходит под капотом по шагам
- Пользователь отправляет сообщение боту в чате.
- Telegram формирует «update» (кто, что, когда, вложения).
- Ваше приложение получает update:
- Long Polling - «спрашиваем» у Telegram новые события.
- Webhook - Telegram сам постучится к вам на URL.
- Логика: парсим текст/кнопки, выбираем ответ, при необходимости ходим в БД или API.
- Отправляем ответ через Bot API (sendMessage, sendPhoto и т.д.).
- Telegram доставляет его пользователю.
✅ Почему это просто
Бот - это токен + ваше приложение. Вся магия - в коде на сервере.
Достаточно одного файла и простого хостинга.
Масштабирование добавляется по мере роста: БД, кэш, очереди - позже.
Два способа получать события
- 🌀 Long Polling - проще для старта (без публичного домена, всего один скрипт).
- 🚀 Webhook - быстрее и экономичнее в проде (нужен URL/сервер).
Минимальный стек
Язык: Python / Node.js / Go - что ближе.
Для старта: Long Polling; для продакшна: Webhook.
Состояние: сначала словарь/файл, позже — SQLite/PostgreSQL.
Простейший пример: Long Polling на Python (без серверов) 🐍
import os, time, requests
TOKEN = os.getenv("TG_TOKEN")
if not TOKEN:
raise RuntimeError("Установите переменную окружения TG_TOKEN с токеном бота")
API = f"https://api.telegram.org/bot{TOKEN}"
def get_updates(offset=None):
r = requests.get(f"{API}/getUpdates", params={"offset": offset, "timeout": 25}, timeout=30)
r.raise_for_status()
return r.json().get("result", [])
def send(chat_id, text):
requests.post(f"{API}/sendMessage", json={"chat_id": chat_id, "text": text}, timeout=10)
print("Bot is running…")
offset = None
while True:
try:
for upd in get_updates(offset):
msg = upd.get("message") or {}
chat_id = msg.get("chat", {}).get("id")
text = msg.get("text", "")
if chat_id:
if text.startswith("/start"):
send(chat_id, "Привет! Я простой бот 🤖\nНапишите /help для подсказки.")
elif text.startswith("/help"):
send(chat_id, "Команды:\n/start — приветствие\n/help — справка")
else:
send(chat_id, f"Вы написали: {text} ✉️")
offset = upd["update_id"] + 1
except Exception as e:
print("Ошибка:", e)
time.sleep(2)
Нужен бот под задачу (продажи, запись, интеграции) - разработаю под ключ. Напишите мне в личные/в ответ на пост, обсудим детали. Или рассчитайте стоимость в моём бот‑калькуляторе @svyatoslav_devbot




Дискуссия