К содержимому
Hub
Stol band qilish boti

Stol band qilish boti

Botlar2026Pythonaiogram 3SQLiteTelegramFSM

Restoran uchun Telegram bot: mehmon sana, vaqt va stolni tanlaydi, administrator chatda tasdiqlaydi. Ikki marta band qilish bazada bloklangan.

Mehmon stol band qiladigan, administrator esa chatda tasdiqlaydigan yoki rad etadigan bot.

Asosiy yechim — ikki marta band qilishdan himoya. Yozishdan oldin so'rov bilan tekshirish ishonchsiz: tekshiruv bilan yozuv orasiga ikkinchi mehmon ulgurib qoladi. Shuning uchun qoida bazaning o'zida: stol, sana va vaqt bo'yicha qisman unikal indeks, bekor qilinganlari hisobga olinmaydi.

Python 3.11, aiogram 3, SQLite.

Qanday qurilgan

Loyihaning haqiqiy kodidan parcha — ichida nima borligini ko'rish uchun.

Repozitoriy
SQL
CREATE TABLE IF NOT EXISTS bookings (    id         INTEGER PRIMARY KEY AUTOINCREMENT,    user_id    INTEGER NOT NULL,    username   TEXT,    table_id   INTEGER NOT NULL REFERENCES tables(id),    book_date  TEXT    NOT NULL,    book_time  TEXT    NOT NULL,    guests     INTEGER NOT NULL,    status     TEXT    NOT NULL DEFAULT 'pending');-- Один столик нельзя занять дважды на один и тот же слот.-- Отменённые брони из проверки исключаются.---- Проверять занятость запросом перед вставкой ненадёжно: между-- проверкой и записью успевает вклиниться второй гость. Здесь-- запрет живёт в самой базе, и обойти его нельзя.CREATE UNIQUE INDEX IF NOT EXISTS idx_booking_slot    ON bookings (table_id, book_date, book_time)    WHERE status <> 'cancelled';CREATE INDEX IF NOT EXISTS idx_booking_user ON bookings (user_id);CREATE INDEX IF NOT EXISTS idx_booking_date ON bookings (book_date);
Bog'lanish

Loyiha uchun ariza

Shaklni to'ldiring — tafsilotlar va muddatlarni muhokama qilamiz.

Loyiha bo'yicha: Stol band qilish boti
Keyingi loyiha

TechnoMarket — texnika do'koni