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