Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Разработчик

Telegram SHOP

Добавлено 08 янв 2025 в 10:03


Цель:

Создание интерактивного Telegram-бота для развлечения, который позволяет пользователям зарабатывать и тратить виртуальные "поцелуи" на различные забавные услуги.


Основные функции:
  1. Регистрация пользователей:

    • При первом запуске бот регистрирует пользователя в базе данных.
    • Новым пользователям автоматически начисляется начальный баланс в 100 поцелуев.
  2. Меню товаров и услуг:

    • Пользователь может открыть меню с помощью команды /menu.
    • Меню содержит список забавных "услуг" с указанием стоимости в поцелуях.
  3. Управление корзиной:
    • Пользователь может добавлять услуги в корзину.
    • В корзине доступны:
      • Просмотр списка выбранных товаров.
      • Очистка корзины.
      • Оплата.
  4. Оплата и исполнение заказа:
    • Если у пользователя достаточно поцелуев, он может оплатить корзину.
    • После оплаты бот:
      • Списывает соответствующую сумму с баланса.
      • Отправляет заказ в чат администратора (исполнителя).
  5. Баланс пользователя:
Пользователь может видеть свой текущий баланс в поцелуях.

Техническая реализация:
  1. Технологии и инструменты:

    • Язык программирования: Python.
    • Библиотека: pyTelegramBotAPI для работы с Telegram API.
    • СУБД: SQLite для хранения данных пользователей и корзин.
  2. Особенности реализации базы данных:

    • Используется Singleton-паттерн для управления подключением к базе данных.
    • Потокобезопасное использование базы данных с помощью threading.local.
  3. Архитектура кода:

    • UserDatabase: Класс для управления пользователями, их балансом и корзинами.
    • Menu: Класс для хранения списка товаров и генерации текстового меню.
    • Основная логика обработки команд и сообщений реализована в обработчиках Telegram-бота.
  4. Обработка состояния пользователя:

    • Используется словарь user_states для отслеживания текущего действия пользователя (выбор товара, работа с корзиной и т.д.).
0d52f4ef8a