2026-05-19 14:07:04 +07:00
2026-05-18 18:35:09 +07:00
2026-05-14 16:15:58 +07:00
2026-05-14 19:18:44 +07:00
2026-05-15 00:12:14 +07:00
2026-05-18 22:07:11 +07:00
2026-05-14 18:23:50 +07:00
2026-05-19 14:07:04 +07:00
2026-05-19 13:36:37 +07:00
2026-05-14 16:15:58 +07:00
2026-05-19 13:57:15 +07:00
2026-05-14 16:15:58 +07:00
2026-05-16 15:51:19 +07:00
2026-05-14 16:15:58 +07:00
2026-05-19 12:56:38 +07:00
2026-05-18 23:18:57 +07:00
2026-05-14 16:15:58 +07:00
2026-05-14 16:15:58 +07:00
2026-05-18 18:35:09 +07:00
2026-05-14 16:15:58 +07:00
2026-05-18 23:02:30 +07:00
2026-05-14 16:15:58 +07:00
2026-05-14 16:15:58 +07:00
2026-05-14 19:18:44 +07:00
2026-05-18 22:36:13 +07:00
2026-05-16 15:51:19 +07:00
2026-05-14 16:15:58 +07:00

PythonBot Backend

Бэкенд сервис с FastAPI + Telegram Bot и асинхронной очередью задач.

Возможности

  • 🚀 FastAPI REST API с авто-документацией (Swagger)
  • 🤖 Telegram бот для создания и мониторинга задач
  • Асинхронная очередь задач с воркерами
  • 🔔 Уведомления о завершении задач в Telegram

Структура проекта

PythonBot/
├── Bot.py          # Точка входа — запускает FastAPI + Telegram бота
├── main.py         # FastAPI приложение + эндпоинты
├── bot.py          # Telegram бот (aiogram)
├── tasks.py        # Очередь задач + воркеры
├── config.py       # Настройки (pydantic-settings)
├── requirements.txt
├── .env.example
└── README.md

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

1. Установка зависимостей

pip install -r requirements.txt

2. Настройка

cp .env.example .env
# Отредактируйте .env — укажите BOT_TOKEN от @BotFather

3. Запуск

python Bot.py

Сервис запустится на http://localhost:8000

API эндпоинты

Метод Путь Описание
POST /tasks Создать задачу
GET /tasks Список задач (фильтр: ?status=pending)
GET /tasks/{id} Статус задачи
POST /tasks/{id}/cancel Отменить задачу
GET /health Проверка здоровья

Примеры запросов

# Создать echo-задачу
curl -X POST http://localhost:8000/tasks \
  -H "Content-Type: application/json" \
  -d '{"name": "My Echo", "task_type": "echo", "params": {"message": "Hello!"}}'

# Создать задачу решения капчи
curl -X POST http://localhost:8000/tasks \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Solve CF Turnstile",
    "task_type": "captcha_solve",
    "params": {
      "url": "https://example.com/page-with-captcha",
      "captcha_type": "cloudflare_turnstile"
    }
  }'

# Список задач
curl http://localhost:8000/tasks

# Статус задачи
curl http://localhost:8000/tasks/{task_id}

# Swagger UI
open http://localhost:8000/docs

Telegram бот

Получите токен у @BotFather и укажите в .env:

BOT_TOKEN=123456:ABC-DEF...

Команды бота

Команда Описание
/start Приветствие + список команд
/echo <текст> Создать echo-задачу
/delay <текст> [сек] Отложенное сообщение
/sum <a> <b> Сумма двух чисел
/captcha <url> [тип] Решение капчи на странице
/tasks Список ваших задач
/task <id> Статус задачи
/help Справка

Типы задач

Тип Параметры Описание
echo message: str Вернуть сообщение
delayed_message message: str, delay: int Ответить через N секунд
sum a: int, b: int Сложить два числа
captcha_solve url: str, captcha_type: str Решить капчу на странице

Добавление своих задач

  1. Опишите асинхронную функцию в main.py:
async def my_task(arg1: str, arg2: int) -> str:
    await asyncio.sleep(2)
    return f"Result: {arg1} {arg2}"
  1. Добавьте в реестр в main.py:
TASK_REGISTRY = {
    "echo": echo_task,
    "delayed_message": delayed_task,
    "sum": sum_task,
    "my_task": my_task,  # ←
}
  1. Обновите фабрику create_task() аналогично.

Конфигурация

Переменная По умолчанию Описание
HOST 0.0.0.0 Хост FastAPI
PORT 8000 Порт FastAPI
DEBUG false Режим разработки (reload)
BOT_TOKEN `` Токен Telegram бота
MAX_WORKERS 3 Количество воркеров
TASK_TIMEOUT 300 Таймаут задачи (сек)
CAPTCHA_SOLVER click Тип решателя: click | 2captcha | 10captcha
CAPTCHA_MAX_ATTEMPTS 3 Макс. попыток решения
CAPTCHA_ATTEMPT_DELAY 5 Задержка между попытками (сек)
TWO_CAPTCHA_API_KEY `` API ключ 2Captcha
TEN_CAPTCHA_API_KEY `` API ключ 10Captcha

Лиценхия

MIT

S
Description
No description provided
Readme 1 MiB
Languages
Python 100%