From 1c175014763f7719e47a7bb0f51c0692aa1a662d Mon Sep 17 00:00:00 2001 From: NW Date: Mon, 24 Aug 2026 21:08:08 +0100 Subject: [PATCH] =?UTF-8?q?fix(bot):=20=D0=B5=D0=B4=D0=B8=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=B8=D1=81=D1=82=D0=BE=D1=87=D0=BD=D0=B8=D0=BA=20?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20?= =?UTF-8?q?=E2=80=94=20env=20SHOP=5FACTIVATED=20=D0=BF=D1=80=D0=B8=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D1=82=D0=B5=D1=82=20=D0=BD=D0=B0=D0=B4=20=D0=91?= =?UTF-8?q?=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Рассинхрон: панель Bbox пишет SHOP_ACTIVATED в env, но бот читал активность из БД site_settings (первично) → даже при true в панели бот отвечал 'Shop is not activated'. Теперь env — единый источник; БД — фоллбэк (для админки магазина, если env не задан). Кэш 30с сохранён. Версия v1.0.2. --- package.json | 2 +- src/services/commissionService.js | 40 +++++++++++++++++-------------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 7f2c64c..eabe50d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "telegram-shop-bot", - "version": "1.0.1", + "version": "1.0.2", "type": "module", "scripts": { "test": "vitest run", diff --git a/src/services/commissionService.js b/src/services/commissionService.js index 69d877c..3c55fab 100644 --- a/src/services/commissionService.js +++ b/src/services/commissionService.js @@ -55,7 +55,10 @@ export async function getCommissionWallets() { /** * Check if the shop is activated. - * Reads site_settings.shop_activated; falls back to env SHOP_ACTIVATED !== 'false' (default true). + * Приоритет: env SHOP_ACTIVATED (единый источник — панель Bbox) → БД site_settings. + * Раньше БД была первичной, и смена «Магазин активирован» в панели (env) не + * влияла на бота (в БД оставалось старое значение) — рассинхрон «пишет true, + * а бот говорит not activated». Теперь env главный; БД — зеркало-фоллбэк. * @returns {Promise} */ export async function getShopActivated() { @@ -64,25 +67,26 @@ export async function getShopActivated() { return shopActivatedCache; } - try { - const row = await db.getAsync( - "SELECT value FROM site_settings WHERE key = 'shop_activated'" - ); - - let activated; - if (row) { - activated = row.value !== 'false'; - } else { - activated = process.env.SHOP_ACTIVATED !== 'false'; + let activated; + // 1. env (панель Bbox / compose) — единый источник правды + if (process.env.SHOP_ACTIVATED !== undefined) { + activated = process.env.SHOP_ACTIVATED !== 'false'; + } else { + // 2. БД site_settings (админка магазина может вести туда же) + try { + const row = await db.getAsync( + "SELECT value FROM site_settings WHERE key = 'shop_activated'" + ); + activated = row ? row.value !== 'false' : true; + } catch (err) { + logger.error({ err }, 'Failed to read shop_activated from site_settings'); + activated = true; } - - shopActivatedCache = activated; - shopActivatedCachedAt = now; - return activated; - } catch (err) { - logger.error({ err }, 'Failed to read shop_activated from site_settings'); - return process.env.SHOP_ACTIVATED !== 'false'; } + + shopActivatedCache = activated; + shopActivatedCachedAt = now; + return activated; } /**