Мы с важной новостью: с 28 февраля 2025 года сервис Хабр Фриланс прекратит свою работу.

Купить услуги можно до 28 февраля 2025, но пополнить баланс уже нельзя. Если на вашем счете остались средства, вы можете потратить их на небольшие услуги — служба поддержки готова поделиться бонусами, на случай, если средств немного не хватает.
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