Telegram Support Bot System

Асинхронний Telegram-бот для автоматизації служби технічної підтримки. Дозволяє користувачам створювати тікети, а операторам обробляти їх у спільному середовищі з розподілом навантаження.

Stable Open Source Python 3.10+

🚀 Основний Функціонал

👤 Для Користувача

  • Створення заявки однією командою.
  • Відстеження статусу заявки.
  • Прямий діалог з оператором через бота.

👨‍💻 Для Оператора

  • Ticket Claiming: Система "захоплення" заявки (/take_id) для уникнення дублювання відповідей.
  • Queue: Перегляд черги відкритих тікетів.
  • Stats: Аналітика виконаної роботи.

🛠 Технічний Стек

  • Core: Python 3.10+, asyncio
  • Framework: aiogram 3.x (Routers, Dispatcher, Webhook/Polling)
  • Database: SQLite + aiosqlite (для неблокуючих запитів)
  • State Management: Aiogram FSM (Finite State Machine)

💾 Структура Бази Даних

Використовується таблиця tickets для зберігання всіх звернень.

SQL Schema
CREATE TABLE IF NOT EXISTS tickets (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id INTEGER NOT NULL,
    username TEXT,
    issue TEXT NOT NULL,
    status TEXT DEFAULT 'open', -- 'open', 'in_progress', 'closed'
    operator_id INTEGER DEFAULT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

🎮 Список Команд

User Commands

Команда Опис
/start Привітання та інструкція.
/ticket Почати процес створення нової заявки (запуск FSM).

Operator Commands

Команда Опис
/admin Відкрити панель адміністратора.
/list Показати список всіх відкритих тікетів (ID, Користувач, Проблема).
/take_{id} Взяти тікет в роботу. Бот переходить в режим діалогу з конкретним користувачем.
/stats Показати загальну статистику (всього/закрито).

📂 Структура Проекту

📦 support-bot
 ┣ 📂 handlers
 ┃ ┣ 📜 admin.py     # Логіка операторів (list, take, reply)
 ┃ ┣ 📜 user.py      # Логіка користувачів (create ticket)
 ┃ ┗ 📜 __init__.py
 ┣ 📜 bot.py         # Точка входу (Entry point)
 ┣ 📜 config.py      # Налаштування
 ┣ 📜 database.py    # Асинхронні запити до SQLite
 ┗ 📜 requirements.txt