Магазин переведён на модульную архитектуру
Большой shop_cog.py был разделён на понятные файлы без потери функций магазина, форума и синхронизации с сайтом.
Магазин стал проще поддерживать: логика, база данных, настройки, embeds, views и модалки теперь лежат отдельно. Внешне для клиентов всё осталось привычным, но внутри код стал профессиональнее и безопаснее для будущих правок.
Почему мы это сделали
Раньше весь магазин находился в одном огромном файле. Любая маленькая правка могла затронуть лишние части: кнопки, базу, форумные темы, выдачу ролей или синхронизацию сайта. После разделения каждая зона отвечает только за свою задачу.
- Меньше риска случайно сломать магазин при изменении дизайна.
- Проще находить нужный код: кнопки отдельно, база отдельно, embeds отдельно.
- Будущие обновления можно делать точечно, без переписывания всего файла.
- Форумный каталог, заявки, балансы и личные дела сохранили совместимость.
Что изменилось внутри
Главный файл cogs/shop_cog.py теперь работает как входная точка. Он подключает ShopCog из папки cogs/shop, где код разложен по назначению.
- cogs/shop/cog.py — основная логика Cog и команды.
- cogs/shop/database.py — SQLite, балансы, покупки, история, выдачи.
- cogs/shop/views.py — кнопки, меню, staff-панели и форумная покупка.
- cogs/shop/embeds.py — внешний вид Discord-сообщений.
- cogs/shop/settings.py — настройки сайта, JSON, deploy_requested и hash-синхронизация.
- cogs/shop/utils.py — безопасные функции, цвета, ID, текст, даты.
- cogs/shop/modals.py — модальные окна Discord.
Что осталось без изменений для пользователей
Игроки и staff не должны почувствовать поломок. Панель магазина, каталог, заявки на покупку, авто-выдача ролей/доступов, личные дела и логи продолжают работать по старой логике.
- Старые настройки серверов сохраняются по guild_id.
- Старые базы данных не удаляются и не пересоздаются.
- Кнопки магазина остаются persistent после перезапуска.
- Если модуль отключён на сайте, Discord-панель показывает безопасный disabled-статус.
Что стало лучше
Теперь при будущей правке мы сможем менять только конкретную часть. Например, дизайн карточек меняется в embeds.py, кнопки — в views.py, работа с базой — в database.py.
- Быстрее искать ошибки.
- Меньше конфликтов при обновлениях через GitHub.
- Проще переносить такую структуру на другие модули HELPER.
- Код стал ближе к профессиональной структуре production-проекта.
Файлы
cogs/shop_cog.pyлёгкий loader для старой системы загрузки cog-файловcogs/shop/cog.pyосновной класс ShopCog, команды и deploycogs/shop/database.pySQLite, покупки, балансы, выдачи и историяcogs/shop/views.pyкнопки, select-меню, staff-панели, форумный buycogs/shop/settings.pyнастройки сайта, hash, module_states, JSONcogs/shop/embeds.pyкрасивые Discord embed-сообщенияcogs/shop/modals.pyмодальные окнаcogs/shop/utils.pyобщие безопасные утилитыПроверки
- python3 -m py_compile cogs/shop_cog.py cogs/shop/*.py — успешно
- import cogs.shop_cog — успешно
- ShopCog import — успешно
- helperbot.service после перезапуска активен
- shop_ready split_module=True в логах