Содержание

  1. Зачем бизнесу Telegram-бот
  2. Создание бота у @BotFather
  3. Первый бот на aiogram 3
  4. Кнопки и меню
  5. Сбор данных от пользователя
  6. Интеграция с CRM
  7. Деплой на сервер

Telegram — самый удобный канал для бизнес-ботов в России. 90 миллионов пользователей, мощный API, бесплатный хостинг логики на вашем сервере. Боты обрабатывают заявки, отвечают на вопросы, принимают заказы и уведомляют сотрудников — круглосуточно, без выходных.

1. Зачем бизнесу Telegram-бот

Telegram-боты решают реальные бизнес-задачи:

  • Приём заявок — клиент пишет боту, бот создаёт сделку в CRM и уведомляет менеджера
  • Поддержка клиентов — бот отвечает на типовые вопросы 24/7, сложные передаёт оператору
  • Уведомления сотрудников — алерты из систем мониторинга, новые заказы, дедлайны
  • Запись и бронирование — клиент выбирает время, бот записывает и напоминает
  • Внутренние инструменты — HR-боты, боты для склада, отчёты по команде
Факт: средний Telegram-бот для приёма заявок окупается за 3–4 недели. Если менеджер тратит 2 часа в день на обработку входящих — бот экономит это время полностью.

2. Создание бота у @BotFather

Все боты в Telegram создаются через официального бота @BotFather. Это занимает 2 минуты:

  1. Откройте Telegram и найдите @BotFather
  2. Отправьте команду /newbot
  3. Введите имя бота (например: «Поддержка Гиперсайт»)
  4. Введите username бота — должен заканчиваться на bot (например: gipersite_support_bot)
  5. Скопируйте токен — строка вида 7234567890:AAF...
Важно: токен — это пароль вашего бота. Никогда не публикуйте его в открытом коде, GitHub или мессенджерах. Храните в переменных окружения или .env файле.

3. Первый бот на aiogram 3

Aiogram — лучшая Python-библиотека для Telegram-ботов. Версия 3 использует asyncio и значительно быстрее предыдущих версий.

# pip install aiogram python-dotenv

import asyncio
from aiogram import Bot, Dispatcher, F
from aiogram.types import Message
from aiogram.filters import CommandStart, Command

# Токен из переменной окружения
import os
TOKEN = os.getenv('BOT_TOKEN')

bot = Bot(token=TOKEN)
dp = Dispatcher()

# Обработчик команды /start
@dp.message(CommandStart())
async def cmd_start(message: Message):
    await message.answer(
        f'Привет, {message.from_user.first_name}!\n\n'
        'Я бот компании Гиперсайт. Чем могу помочь?\n\n'
        '📋 /help — список команд\n'
        '📞 /contact — оставить заявку'
    )

# Обработчик команды /help
@dp.message(Command('help'))
async def cmd_help(message: Message):
    await message.answer(
        'Доступные команды:\n\n'
        '/start — начало работы\n'
        '/contact — оставить заявку\n'
        '/prices — прайс-лист'
    )

# Обработчик текстовых сообщений
@dp.message(F.text)
async def handle_text(message: Message):
    await message.answer(
        'Спасибо за сообщение! Менеджер ответит в течение 15 минут.\n'
        'Или позвоните: +7 (922) 290-23-72'
    )

async def main():
    await dp.start_polling(bot)

if __name__ == '__main__':
    asyncio.run(main())

4. Кнопки и меню

Кнопки делают бота удобным — пользователь не печатает команды, а нажимает нужное. В Telegram есть два типа кнопок: Reply-кнопки (под полем ввода) и Inline-кнопки (под сообщением).

from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton

# Reply-кнопки (отображаются как клавиатура)
main_keyboard = ReplyKeyboardMarkup(
    keyboard=[
        [KeyboardButton(text='📋 Оставить заявку'), KeyboardButton(text='💰 Прайс')],
        [KeyboardButton(text='📞 Связаться с менеджером')],
    ],
    resize_keyboard=True
)

# Inline-кнопки (под сообщением)
inline_kb = InlineKeyboardMarkup(inline_keyboard=[
    [
        InlineKeyboardButton(text='🐍 Python-автоматизация', callback_data='service_python'),
        InlineKeyboardButton(text='🤖 Боты', callback_data='service_bots'),
    ],
    [InlineKeyboardButton(text='📊 ETL и данные', callback_data='service_etl')],
])

@dp.message(CommandStart())
async def cmd_start(message: Message):
    await message.answer(
        'Привет! Выберите что вас интересует:',
        reply_markup=inline_kb
    )

# Обработчик нажатия Inline-кнопки
@dp.callback_query(F.data == 'service_python')
async def service_python(callback):
    await callback.message.answer(
        'Python-автоматизация от 15 000 ₽\n\n'
        'Подробнее: https://gipersite.ru/python-automation/'
    )
    await callback.answer()

5. Сбор данных от пользователя

Для сбора данных (имя, телефон, описание задачи) используем FSM — Finite State Machine. Бот ведёт пользователя по шагам.

from aiogram.fsm.context import FSMContext
from aiogram.fsm.state import State, StatesGroup

# Описываем состояния формы
class LeadForm(StatesGroup):
    name = State()
    phone = State()
    task = State()

@dp.message(Command('contact'))
async def start_form(message: Message, state: FSMContext):
    await state.set_state(LeadForm.name)
    await message.answer('Как вас зовут?')

@dp.message(LeadForm.name)
async def get_name(message: Message, state: FSMContext):
    await state.update_data(name=message.text)
    await state.set_state(LeadForm.phone)
    await message.answer('Укажите номер телефона:')

@dp.message(LeadForm.phone)
async def get_phone(message: Message, state: FSMContext):
    await state.update_data(phone=message.text)
    await state.set_state(LeadForm.task)
    await message.answer('Опишите вашу задачу:')

@dp.message(LeadForm.task)
async def get_task(message: Message, state: FSMContext):
    data = await state.get_data()
    await state.clear()
    # Сохраняем заявку (следующий шаг — отправка в CRM)
    await message.answer(
        f'Спасибо, {data["name"]}! Заявка принята.\n'
        'Перезвоним в течение 15 минут.'
    )

6. Интеграция с CRM

Когда пользователь заполнил форму — создаём сделку в amoCRM через API:

import aiohttp

async def create_amocrm_lead(name: str, phone: str, task: str):
    headers = {
        'Authorization': f'Bearer {AMO_TOKEN}',
        'Content-Type': 'application/json'
    }
    payload = [{
        'name': f'Заявка от {name}',
        '_embedded': {
            'contacts': [{
                'name': name,
                'custom_fields_values': [{
                    'field_code': 'PHONE',
                    'values': [{'value': phone}]
                }]
            }]
        },
        'custom_fields_values': [{
            'field_id': NOTE_FIELD_ID,
            'values': [{'value': task}]
        }]
    }]
    async with aiohttp.ClientSession() as session:
        async with session.post(
            f'https://{AMO_DOMAIN}/api/v4/leads/complex',
            json=payload, headers=headers
        ) as resp:
            return await resp.json()

7. Деплой на сервер

Бот должен работать постоянно — значит нужен сервер. Минимальный VPS стоит 300–500 ₽/мес и справляется с тысячами пользователей.

# Создаём systemd-сервис для автозапуска
# /etc/systemd/system/tg-bot.service

[Unit]
Description=Telegram Bot
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/bot
EnvironmentFile=/home/ubuntu/bot/.env
ExecStart=/home/ubuntu/bot/venv/bin/python main.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
# Активируем и запускаем
sudo systemctl daemon-reload
sudo systemctl enable tg-bot
sudo systemctl start tg-bot

# Проверяем статус
sudo systemctl status tg-bot

# Логи в реальном времени
sudo journalctl -u tg-bot -f
Совет по деплою: используйте webhook вместо polling для production. Webhook быстрее и потребляет меньше ресурсов. Aiogram 3 поддерживает webhook через aiohttp или FastAPI.

Нужен Telegram-бот для бизнеса?

Разрабатываем ботов под ключ: от простых уведомлений до ИИ-ассистентов с GPT-4. От 20 000 ₽, срок от 1 недели.

Обсудить проект