Быстрый старт
Этот урок проведёт вас от нуля до работающего Telegram-бота, развёрнутого на Cloudflare Workers.
Что понадобится
Заголовок раздела «Что понадобится»- Аккаунт Cloudflare
- Node.js ≥ 18 (для
wrangler) - Python ≥ 3.10
- Токен Telegram-бота от @BotFather
1. Создаём проект
Заголовок раздела «1. Создаём проект»mkdir my-bot && cd my-botnpm init -ynpm install wrangler@latestСоздайте wrangler.toml:
name = "my-bot"main = "src/entry.py"compatibility_date = "2025-12-25"compatibility_flags = ["python_workers"]
[observability]enabled = true2. Устанавливаем EdgeBot
Заголовок раздела «2. Устанавливаем EdgeBot»Создайте pyproject.toml:
[project]name = "my-bot"version = "0.1.0"requires-python = ">=3.10"dependencies = ["edgebot"]3. Точка входа
Заголовок раздела «3. Точка входа»Создайте src/entry.py:
from json import dumpsfrom workers import Response, WorkerEntrypointfrom edgebot import Bot, Context
bot = Bot("", parse_mode="Markdown")
@bot.on_command("/start")async def start(ctx: Context): await ctx.send("Привет! Я эхо-бот 🤖")
@bot.on_messageasync def echo(ctx: Context): await ctx.reply(f"📝 {ctx.text}")
class Default(WorkerEntrypoint): def __init__(self, ctx, env): super().__init__(ctx, env) self.bot = bot self.bot.token = env.BOT_TOKEN self.bot.env(env).ctx(ctx)
async def fetch(self, request): secret = request.headers.get("X-Telegram-Bot-Api-Secret-Token") if not secret or secret != self.env.WEBHOOK_TOKEN: return Response(dumps({"error": "unauthorized"}), status=401)
update = await request.json() await self.bot.process_update(update) return Response(dumps({"ok": True}))4. Секреты и деплой
Заголовок раздела «4. Секреты и деплой»# Сохраняем секретыecho "YOUR_BOT_TOKEN" | npx wrangler secret put BOT_TOKENecho "YOUR_RANDOM_SECRET" | npx wrangler secret put WEBHOOK_TOKEN
# Деплойnpx wrangler deploy5. Устанавливаем Webhook
Заголовок раздела «5. Устанавливаем Webhook»После деплоя выполните запрос к Telegram API (замените значения):
curl "https://api.telegram.org/botYOUR_BOT_TOKEN/setWebhook" \ -d "url=https://my-bot.YOUR_SUBDOMAIN.workers.dev" \ -d "secret_token=YOUR_RANDOM_SECRET"Что дальше
Заголовок раздела «Что дальше»- Обработка медиа — фото, видео, голосовые
- Inline-клавиатуры — кнопки под сообщениями
- Хранение данных в KV — сохранение состояния
- UI-компоненты — экраны с автомаршрутизацией