Развертывание Telegram-бота на платформе Vercel возможно, но требует определённой подготовки и внимания к деталям. Вот пошаговое руководство, как это сделать на примере бота, использующего библиотеку aiogram.
### Шаг 1: Подготовка вашего проекта
1. **Создайте проект**:
Убедитесь, что ваш проект правильно структурирован. Обычно это выглядит так:
```
my-telegram-bot/
├── api.py # Взаимодействие с Telegram API
├── requirements.txt
└── vercel.json
```
В `api.py` будет основная логика вашего бота.
2. **Создайте `requirements.txt`**:
В этом файле указаны все библиотеки, необходимые для вашего бота. Например:
```plaintext
aiogram
fastapi
uvicorn
```
3. **Создайте `vercel.json`**:
Этот файл поможет Vercel понять, как обрабатывать ваш проект:
```json
{
"version": 2,
"builds": [
{
"src": "api.py",
"use": "@vercel/python"
}
],
"routes": [
{
"src": "/webhook",
"methods": ["POST"],
"dest": "api.py"
}
]
}
```
### Шаг 2: Написание кода бота
Пример кода для `api.py`, чтобы обрабатывать запросы от Telegram:
```python
from fastapi import FastAPI, Request
from aiogram import Bot, Dispatcher, types
import os
import logging
API_TOKEN = os.getenv('TELEGRAM_TOKEN')
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
app = FastAPI()
@app.post("/webhook")
async def webhook(request: Request):
json_data = await request.json()
update = types.Update(**json_data)
await dp.process_update(update)
return {"status": "ok"}
@dp.message_handler(commands=['start'])
async def start_command(message: types.Message):
await message.reply("Hello! I'm your bot.")
# Вебхук
async def set_webhook():
webhook_url = f'https://<your-vercel-url>/webhook'
await bot.set_webhook(webhook_url)
if __name__ == "__main__":
import asyncio
loop = asyncio.get_event_loop()
loop.run_until_complete(set_webhook())
```
### Шаг 3: Развертывание на Vercel
1. **Установите Vercel CLI**:
Убедитесь, что у вас установлен Vercel CLI. Если он не установлен, вы можете установить его с помощью npm:
```bash
npm i -g vercel
```
2. **Войдите в Vercel**:
Авторизуйтесь в Vercel:
```bash
vercel login
```
3. **Разверните проект**:
В директории вашего проекта выполните команду:
```bash
vercel
```
В процессе вам будет предложено выбрать проект и другие настройки.
4. **Настройте переменные среды**:
После развертывания вам нужно будет настроить переменные среды для вашего бота (например, `TELEGRAM_TOKEN`). Это можно сделать через панель управления Vercel или с помощью CLI:
```bash
vercel env add TELEGRAM_TOKEN
```
### Шаг 4: Тестирование
После успешного развертывания вы можете протестировать вашего бота, отправив команду `/start`. Убедитесь, что webhook настроен правильно и бот отвечает на сообщения.
### Примечания
- Платформа Vercel ограничивает продолжительность выполнения серверных функций (обычно 10 секунд), поэтому лучше использовать асинхронные обработчики.
- Убедитесь, что вы используете допустимый URL для вебхуков (например, HTTPS).
Теперь вы знаете, как развернуть вашего Telegram-бота на Vercel с использованием aiogram!