Разработка мобильного чат-бота для Telegram

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Разработка мобильного чат-бота для Telegram
Простая
от 4 часов до 2 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Разработка мобильного чат-бота для Telegram

Telegram-бот для мобильного пользователя — это несколько сценариев: простой command-bot с меню, conversational-бот с NLP или полноценный Mini App с React/Vue интерфейсом внутри Telegram. Выбор архитектуры определяет весь стек.

Telegram Bot API: webhooks vs polling

Два способа получать обновления от Telegram: long polling (getUpdates) и webhooks. Для продакшена — только webhooks: Telegram шлёт POST на ваш HTTPS-эндпоинт при каждом сообщении, бот отвечает немедленно. Long polling — для разработки и тестирования на локальной машине через ngrok.

Webhook требует валидного TLS-сертификата (Let's Encrypt) и порта 443, 80, 88 или 8443. Telegram проверяет сертификат — self-signed не пройдёт без явной загрузки через setWebhook с параметром certificate.

# aiogram 3.x: регистрация webhook
from aiogram import Bot, Dispatcher
from aiogram.webhook.aiohttp_server import SimpleRequestHandler

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

async def on_startup():
    await bot.set_webhook(
        url=f"https://yourserver.com/webhook/{BOT_TOKEN}",
        drop_pending_updates=True  # Игнорировать накопившиеся сообщения при рестарте
    )

drop_pending_updates=True — важная деталь при рестарте бота: без неё он обработает все накопившиеся сообщения, что создаёт flood при деплое.

Inline keyboards и состояние диалога

Кнопки под сообщением (InlineKeyboardMarkup) — основной UI Telegram-бота. Каждая кнопка несёт callback_data до 64 байт. При сложных состояниях эти 64 байта быстро становятся ограничением.

Решение: хранить состояние в Redis с коротким callback_id:

import uuid, redis

r = redis.Redis()

async def create_callback(data: dict) -> str:
    callback_id = str(uuid.uuid4())[:8]
    r.setex(f"cb:{callback_id}", 3600, json.dumps(data))  # TTL 1 час
    return callback_id

async def resolve_callback(callback_id: str) -> dict | None:
    raw = r.get(f"cb:{callback_id}")
    return json.loads(raw) if raw else None

FSM (Finite State Machine) — стандарт для многошаговых диалогов: регистрация, заполнение формы, мастер настройки. В aiogramStatesGroup, в python-telegram-botConversationHandler.

Mini App: полноценный Web UI в Telegram

Telegram Mini App — это веб-приложение в WebView внутри Telegram. window.Telegram.WebApp объект предоставляет:

  • initData и initDataUnsafe — данные о пользователе (id, username)
  • MainButton — большая кнопка внизу экрана
  • sendData() — отправка данных боту
  • openLink(), openTelegramLink()

Для мобильного UX Mini App должен следовать colorScheme Telegram (тёмная/светлая тема), использовать CSS переменные --tg-theme-bg-color, --tg-theme-text-color и т.д.

const tg = window.Telegram.WebApp;
tg.ready();
tg.expand(); // Растянуть на весь экран

// Кнопка действия
tg.MainButton.setText("Подтвердить заказ");
tg.MainButton.show();
tg.MainButton.onClick(() => {
    tg.sendData(JSON.stringify({ action: "confirm", orderId: currentOrderId }));
});

// Цвета из темы Telegram
document.documentElement.style.setProperty(
    '--bg', tg.themeParams.bg_color || '#ffffff'
);

Деплой Mini App — статика на CDN или SSR на вашем сервере. HTTPS обязателен.

Авторизация и верификация initData

initData — строка с HMAC-подписью от Telegram. На сервере нужно проверять подпись перед доверием данным о пользователе:

import hmac, hashlib

def verify_telegram_init_data(init_data: str, bot_token: str) -> bool:
    secret_key = hmac.new(b"WebAppData", bot_token.encode(), hashlib.sha256).digest()
    data_check_string = "\n".join(
        f"{k}={v}" for k, v in sorted(parse_qs(init_data).items()) if k != "hash"
    )
    computed_hash = hmac.new(secret_key, data_check_string.encode(), hashlib.sha256).hexdigest()
    provided_hash = parse_qs(init_data).get("hash", [""])[0]
    return hmac.compare_digest(computed_hash, provided_hash)

Без этой проверки любой может подделать Telegram user ID в запросе к вашему API.

Процесс работы

Определение сценариев: command-bot, FSM-диалог или Mini App. Выбор серверного фреймворка (aiogram, grammy, python-telegram-bot). Настройка webhook с TLS. Реализация диалоговых сценариев. Для Mini App: разработка Web-интерфейса с поддержкой тем Telegram. Верификация initData на бэкенде. Деплой и мониторинг.

Ориентиры по срокам

Command-bot с меню и базовым FSM — 1–2 недели. Mini App с полноценным UI, авторизацией и серверным API — 4–8 недель.