fix(bot): единый источник активности — env SHOP_ACTIVATED приоритет над БД
All checks were successful
Release: multi-arch Docker images / build-push (push) Successful in 20m10s
All checks were successful
Release: multi-arch Docker images / build-push (push) Successful in 20m10s
Рассинхрон: панель Bbox пишет SHOP_ACTIVATED в env, но бот читал активность из БД site_settings (первично) → даже при true в панели бот отвечал 'Shop is not activated'. Теперь env — единый источник; БД — фоллбэк (для админки магазина, если env не задан). Кэш 30с сохранён. Версия v1.0.2.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "telegram-shop-bot",
|
"name": "telegram-shop-bot",
|
||||||
"version": "1.0.1",
|
"version": "1.0.2",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
|
|||||||
@@ -55,7 +55,10 @@ export async function getCommissionWallets() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the shop is activated.
|
* 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<boolean>}
|
* @returns {Promise<boolean>}
|
||||||
*/
|
*/
|
||||||
export async function getShopActivated() {
|
export async function getShopActivated() {
|
||||||
@@ -64,25 +67,26 @@ export async function getShopActivated() {
|
|||||||
return shopActivatedCache;
|
return shopActivatedCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
let activated;
|
||||||
const row = await db.getAsync(
|
// 1. env (панель Bbox / compose) — единый источник правды
|
||||||
"SELECT value FROM site_settings WHERE key = 'shop_activated'"
|
if (process.env.SHOP_ACTIVATED !== undefined) {
|
||||||
);
|
activated = process.env.SHOP_ACTIVATED !== 'false';
|
||||||
|
} else {
|
||||||
let activated;
|
// 2. БД site_settings (админка магазина может вести туда же)
|
||||||
if (row) {
|
try {
|
||||||
activated = row.value !== 'false';
|
const row = await db.getAsync(
|
||||||
} else {
|
"SELECT value FROM site_settings WHERE key = 'shop_activated'"
|
||||||
activated = process.env.SHOP_ACTIVATED !== 'false';
|
);
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user