Перейти к содержимому

Быстрый старт

Этот урок проведёт вас от нуля до работающего Telegram-бота, развёрнутого на Cloudflare Workers.

  • Аккаунт Cloudflare
  • Node.js ≥ 18 (для wrangler)
  • Python ≥ 3.10
  • Токен Telegram-бота от @BotFather
Окно терминала
mkdir my-bot && cd my-bot
npm init -y
npm install wrangler@latest

Создайте wrangler.toml:

name = "my-bot"
main = "src/entry.py"
compatibility_date = "2025-12-25"
compatibility_flags = ["python_workers"]
[observability]
enabled = true

Создайте pyproject.toml:

[project]
name = "my-bot"
version = "0.1.0"
requires-python = ">=3.10"
dependencies = ["edgebot"]

Создайте src/entry.py:

from json import dumps
from workers import Response, WorkerEntrypoint
from edgebot import Bot, Context
bot = Bot("", parse_mode="Markdown")
@bot.on_command("/start")
async def start(ctx: Context):
await ctx.send("Привет! Я эхо-бот 🤖")
@bot.on_message
async 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}))
Окно терминала
# Сохраняем секреты
echo "YOUR_BOT_TOKEN" | npx wrangler secret put BOT_TOKEN
echo "YOUR_RANDOM_SECRET" | npx wrangler secret put WEBHOOK_TOKEN
# Деплой
npx wrangler deploy

После деплоя выполните запрос к 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"