1. Как создать свой Telegram-бот для SMM с помощью aiogram 3
    1. …
    2. Как создать свой Telegram-бот для SMM с помощью aiogram 3
    AdvancedTelegram

    Как создать свой Telegram-бот для SMM с помощью aiogram 3

    Полный гайд по созданию Telegram-бота на aiogram 3: установка окружения, хендлеры, клавиатуры, FSM для заказов и деплой на сервер.

    25 min0 wyświetleńAdvanced

    Poradnik tekstowy

    Полный гайд по созданию Telegram-бота для SMM на aiogram 3: установка, хендлеры, клавиатуры, FSM для заказов, деплой на сервер.

    Как создать свой Telegram-бот для SMM с помощью aiogram 3

    aiogram 3 — современный асинхронный фреймворк для Telegram-ботов на Python. В этом туториале создадим полноценного SMM-бота с приёмом заказов, FSM для многошаговых сценариев и интеграцией с SMM-панелью по API. Подходит для разработчиков с опытом Python. Полный код можно развернуть за 2–3 часа.

    Установка окружения

    Требуется Python 3.11+ и виртуальное окружение:

    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    # или venv\\Scripts\\activate на Windows
    
    pip install aiogram==3.13.1 pydantic aiosqlite aiohttp
    

    Создайте структуру проекта:

    smm_bot/
    ├── bot.py
    ├── config.py
    ├── handlers/
    │   ├── __init__.py
    │   ├── start.py
    │   └── order.py
    ├── keyboards/
    │   ├── __init__.py
    │   └── reply.py
    └── states/
        └── order.py
    

    Базовая структура бота

    # config.py
    import os
    from dataclasses import dataclass
    
    @dataclass
    class Config:
        bot_token: str = os.getenv("BOT_TOKEN", "")
        admin_id: int = int(os.getenv("ADMIN_ID", "0"))
        smm_api_url: str = "https://smmboost.io/api/v2"
        smm_api_key: str = os.getenv("SMM_API_KEY", "")
    
    config = Config()
    
    # bot.py
    import asyncio
    import logging
    from aiogram import Bot, Dispatcher
    from aiogram.client.default import DefaultBotProperties
    from aiogram.enums import ParseMode
    from aiogram.fsm.storage.memory import MemoryStorage
    from config import config
    from handlers import start, order
    
    async def main():
        logging.basicConfig(level=logging.INFO)
        bot = Bot(
            token=config.bot_token,
            default=DefaultBotProperties(parse_mode=ParseMode.HTML)
        )
        dp = Dispatcher(storage=MemoryStorage())
        
        dp.include_router(start.router)
        dp.include_router(order.router)
        
        await bot.delete_webhook(drop_pending_updates=True)
        await dp.start_polling(bot)
    
    if __name__ == "__main__":
        asyncio.run(main())
    

    Хендлеры команд

    # handlers/start.py
    from aiogram import Router, types, F
    from aiogram.filters import CommandStart
    from keyboards.reply import main_menu
    
    router = Router()
    
    @router.message(CommandStart())
    async def cmd_start(message: types.Message):
        await message.answer(
            "👋 Привет! Я SMM-бот.\\n"
            "Здесь вы можете заказать подписчиков, лайки и просмотры.\\n\\n"
            "Выберите услугу:",
            reply_markup=main_menu()
        )
    
    @router.message(F.text == "📋 Мои заказы")
    async def my_orders(message: types.Message):
        # здесь запрос к БД или API панели
        await message.answer("У вас пока нет заказов. Создайте первый!")
    

    Клавиатуры

    # keyboards/reply.py
    from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
    from aiogram.utils.keyboard import ReplyKeyboardBuilder
    
    def main_menu() -> ReplyKeyboardMarkup:
        builder = ReplyKeyboardBuilder()
        builder.add(KeyboardButton(text="📷 Instagram"))
        builder.add(KeyboardButton(text="✈️ Telegram"))
        builder.add(KeyboardButton(text="▶️ YouTube"))
        builder.add(KeyboardButton(text="🎵 TikTok"))
        builder.add(KeyboardButton(text="📋 Мои заказы"))
        builder.add(KeyboardButton(text="💼 Баланс"))
        builder.adjust(2, 2, 2)
        return builder.as_markup(resize_keyboard=True)
    

    FSM для заказов

    FSM (Finite State Machine) — для многошаговых сценариев:

    # states/order.py
    from aiogram.fsm.state import State, StatesGroup
    
    class OrderFSM(StatesGroup):
        platform = State()
        service = State()
        link = State()
        quantity = State()
        confirm = State()
    
    # handlers/order.py
    from aiogram import Router, types, F
    from aiogram.fsm.context import FSMContext
    from states.order import OrderFSM
    
    router = Router()
    
    @router.message(F.text == "📷 Instagram")
    async def start_order(message: types.Message, state: FSMContext):
        await state.set_state(OrderFSM.service)
        await message.answer(
            "Выберите услугу:\\n"
            "1. Подписчики\\n2. Лайки\\n3. Просмотры Reels\\n4. Комментарии"
        )
    
    @router.message(OrderFSM.service)
    async def process_service(message: types.Message, state: FSMContext):
        await state.update_data(service=message.text)
        await state.set_state(OrderFSM.link)
        await message.answer("Отправьте ссылку на профиль/пост:")
    
    @router.message(OrderFSM.link)
    async def process_link(message: types.Message, state: FSMContext):
        if "instagram.com" not in message.text:
            await message.answer("❌ Неверная ссылка. Попробуйте снова.")
            return
        await state.update_data(link=message.text)
        await state.set_state(OrderFSM.quantity)
        await message.answer("Укажите количество (от 100 до 100000):")
    
    @router.message(OrderFSM.quantity)
    async def process_quantity(message: types.Message, state: FSMContext):
        if not message.text.isdigit():
            await message.answer("❌ Введите число.")
            return
        qty = int(message.text)
        if not (100 <= qty <= 100000):
            await message.answer("❌ Допустимо от 100 до 100000.")
            return
        data = await state.get_data()
        price = qty * 0.08  # 80 ₽ за 1000
        await state.update_data(quantity=qty, price=price)
        await state.set_state(OrderFSM.confirm)
        await message.answer(
            f"📋 Заказ:\\nУслуга: {data['service']}\\nСсылка: {data['link']}\\n"
            f"Количество: {qty}\\nСтоимость: {price:.2f} ₽\\n\\nПодтвердить? (Да/Нет)"
        )
    
    @router.message(OrderFSM.confirm, F.text.lower() == "да")
    async def confirm_order(message: types.Message, state: FSMContext):
        data = await state.get_data()
        # здесь вызов API SMM-панели
        order_id = await create_smm_order(data)
        await state.clear()
        await message.answer(f"✅ Заказ #{order_id} создан! Статус можно проверить в «Мои заказы».")
    
    async def create_smm_order(data: dict) -> str:
        # интеграция с API панели
        import aiohttp
        from config import config
        async with aiohttp.ClientSession() as session:
            payload = {
                "key": config.smm_api_key,
                "action": "add",
                "service": 12,  # ID услуги
                "link": data["link"],
                "quantity": data["quantity"]
            }
            async with session.post(config.smm_api_url, data=payload) as resp:
                result = await resp.json()
                return result.get("order", "unknown")
    

    Деплой

    Для продакшена используйте systemd на VPS или Docker:

    # Dockerfile
    FROM python:3.12-slim
    WORKDIR /app
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    COPY . .
    CMD ["python", "bot.py"]
    
    # Запуск на VPS через systemd
    sudo nano /etc/systemd/system/smmbot.service
    
    [Unit]
    Description=SMM Telegram Bot
    After=network.target
    
    [Service]
    User=deploy
    WorkingDirectory=/home/deploy/smm_bot
    ExecStart=/home/deploy/smm_bot/venv/bin/python bot.py
    Restart=always
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    
    sudo systemctl enable smmbot && sudo systemctl start smmbot
    

    Тестирование и отладка

    Перед запуском бота в продакшен проведите тестирование:

    1. Локальное тестирование. Запустите бота на тестовом аккаунте (создайте второго бота через BotFather с токеном для тестов). Пройдите все сценарии: /start, выбор услуги, ввод ссылки, количества, подтверждение, оплата.

    2. Проверка edge-cases. Что будет, если пользователь введёт текст вместо числа? Неверную ссылку? Нажмёт «Назад» в середине сценария? Обработайте все эти случаи — иначе бот «упадёт» с ошибкой.

    3. Тестирование под нагрузкой. Если ожидаете 100+ одновременных пользователей — протестируйте через locust или pytest-asyncio. aiogram держит 1000+ RPS на одном процессе.

    4. Логирование. Подключите Sentry для отслеживания ошибок:

    import sentry_sdk
    sentry_sdk.init(dsn="YOUR_SENTRY_DSN", traces_sample_rate=1.0)
    

    5. Мониторинг. Настройте уведомления в админ-чат при падении бота. Проверяйте раз в день — systemctl status smmbot.

    6. Резервное копирование. Если используете SQLite/PostgreSQL — настройте ежедневный бэкап через cron.

    Итог

    За 2–3 часа вы получаете полноценного Telegram-бота для SMM на aiogram 3 с FSM для заказов, клавиатурами и интеграцией с панелью по API. Для продакшена замените MemoryStorage на RedisStorage (для сохранения состояния при рестарте), добавьте базу данных (SQLite/PostgreSQL) для хранения заказов и пользователей, и настройте логирование через Sentry для отслеживания ошибок.

    Что дальше

    • Добавьте оплату через ЮKassa или крипту (CryptoBot API)
    • Реализуйте реферальную систему с начислением бонусов
    • Подключите админ-панель для операторов (отдельный чат с командами)
    • Добавьте уведомления о смене статуса заказа через webhook
    • Интегрируйте с Google Analytics 4 через Measurement Protocol
    • Настройте A/B тестирование сообщений для повышения конверсии

    Czy to było pomocne?

    Pana opinie pomagają nam ulepszać poradniki.

    Co inni jeszcze wyszukują

    • panel smm
    • panel smm gdańsk
    • jak działa panel smm
    • tani panel smm kraków
    • panel smm łódź polska
    • co to panel smm kraków
    • panel smm polska poznań
    • panel smm kraków poznań
    • panel smm łódź warszawa
    • panel smm kraków wrocław
    • panel smm polska warszawa
    • tutorial panel smm lublin
    • jak używać panelu smm łódź
    • jak działa panel smm lublin
    • panel smm vs agencja polska
    • jak używać panelu smm gdańsk
    • jak używać panelu smm wrocław
    • najlepszy panel smm 2024 poznań
    • tani panel smm vs premium polska
    • jak zarabiać na panelu smm kraków
    • nakrytka vs inne panele smm kraków
    • nakrytka vs inne panele smm wrocław
    • panel smm vs organiczny wzrost polska
    • porównanie najlepszych paneli smm 2026

    O co pytają inni

    jak działa panel smm
    Tak, usługa działa — to standardowa metoda, z której korzystają agencje, blogerzy i marketerzy.
    co to panel smm
    Nakrytka.vip to panel SMM do wzrostu w mediach społecznościowych: obserwujący, polubienia, wyświetlenia i komentarze na 10 platformach.
    jak używać panelu smm
    Odpowiedź jest w /faq i /services. Jeśli nie znajdziesz, skontaktuj się z pomocą — odpowiadamy w ciągu 1 godziny.
    jak zarabiać na panelu smm
    Odpowiedź jest w /faq i /services. Jeśli nie znajdziesz, skontaktuj się z pomocą — odpowiadamy w ciągu 1 godziny.
    czy panel smm jest bezpieczny
    Odpowiedź jest w /faq i /services. Jeśli nie znajdziesz, skontaktuj się z pomocą — odpowiadamy w ciągu 1 godziny.

    Panel SMM nowej generacji — 2026. Obserwujący, lajki i wyświetlenia dla ponad 30 platform społecznościowych. Autostart, niskie ceny, wsparcie 24/7.

    Usługi

    Sekcje

    Wsparcie

    Otrzymuj aktualności, rabaty i poradniki SMM. Bez spamu.

    Prawne

    © 2026 NAKRYTKA.VIP. Wszelkie prawa zastrzeżone. Stworzone z ❤ SMM.

    Wsparcie 24/7

    Globalna wyszukiwarka

    Znajdź usługi, artykuły, poradniki i strony