Telegram-боти18 травня 2026 р.8 хв

    Telegram-бот з PostgreSQL: як спроектувати БД, щоб не переробляти

    Найчастіша помилка в Telegram-ботах — БД, спроектована на коліні. Через 6 місяців і 10k користувачів починаються повільні запити, дедлоки і переписування з нуля.

    Базова схема, з якої ми починаємо

    -- users CREATE TABLE users ( id BIGSERIAL PRIMARY KEY, telegram_id BIGINT UNIQUE NOT NULL,  -- BIGINT! не INT username TEXT, first_name TEXT, last_name TEXT, language_code VARCHAR(10), is_bot BOOLEAN DEFAULT FALSE, is_blocked BOOLEAN DEFAULT FALSE,    -- юзер заблокував бот created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW() ); CREATE INDEX idx_users_telegram_id ON users(telegram_id); -- messages (для аудиту і аналітики) CREATE TABLE messages ( id BIGSERIAL PRIMARY KEY, user_id BIGINT REFERENCES users(id), direction VARCHAR(3) CHECK (direction IN ('IN', 'OUT')), text TEXT, payload JSONB,                       -- ButtonClicks, callbacks created_at TIMESTAMPTZ DEFAULT NOW() ); CREATE INDEX idx_messages_user_created ON messages(user_id, created_at DESC); -- fsm_states (якщо не Redis) CREATE TABLE fsm_states ( user_id BIGINT PRIMARY KEY REFERENCES users(id), state TEXT, data JSONB DEFAULT '{{}}'::jsonb, updated_at TIMESTAMPTZ DEFAULT NOW() );

    5 типових помилок

    1. telegram_id як INT — після 2 млрд айдішників бот падає. Завжди BIGINT.
    2. Немає is_blocked — продовжуєте слати повідомлення, ловите 403 Forbidden, Telegram банить бот за спам.
    3. Немає індексу на (user_id, created_at) — пагінація історії стає Seq Scan через мільйони рядків.
    4. FSM-state у пам'яті — рестарт бота і всі юзери в підвішеному стані. Зберігайте в Redis або БД.
    5. Немає updated_at тригера — не знаєш, коли користувач востаннє писав. Робить аналітику неможливою.

    Що додаємо для продакшну

    • Партиціонування messages по місяцях (PostgreSQL 16 native partitioning)
    • pg_trgm для повнотекстового пошуку по історії
    • JSONB для callback_data — гнучкість + GIN-індекс
    • Materialized views для дашборду адміна
    • Бекапи pg_dump щодня + WAL-G у S3

    Проектуємо БД та розробляємо ботів під ключ — /services/telegram-bots. Детально про стек — тут.

    Потрібна допомога з проектом?

    Зв'яжіться з нами для безкоштовної консультації

    Розрахувати проект

    Пов'язані послуги

    Читайте також

    Telegram-боти

    Telegram-бот для онлайн-запису: барбершоп, салон краси, СТО

    Клієнт записується за 30 секунд без дзвінків. -70% часу адміна, +40% повторних візитів.

    Telegram-боти

    Telegram-бот для ресторану: меню, доставка, замовлення за 5 кліків

    Без комісії Glovo 30%. Замовлення прямо з Telegram, доставка вашими кур'єрами або інтеграція.

    Telegram-боти

    Telegram-бот на Python (aiogram 3): архітектура, БД, деплой 2026

    aiogram 3 + PostgreSQL + Redis + Docker — стек, який витримує 10k+ користувачів без падінь.

    Telegram-боти

    Telegram-бот на Node.js (grammY) vs Python (aiogram): що обрати

    TypeScript + grammY чи Python + aiogram? Розкладаємо за 5 критеріями. Спойлер: залежить від продукту.

    Telegram-боти

    ChatGPT API в Telegram-боті: як підключити і скільки коштує

    Бот-консультант, що відповідає по вашій базі знань. Підключаємо за тиждень, ціна API від $5/міс.

    Telegram-боти

    Telegram-бот з інтеграцією CRM: KeyCRM, Бітрікс24, Pipedrive

    Лід з бота автоматично у воронку CRM, менеджер відповідає з кабінету, історія єдина. 0 копіпасту.