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",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.2",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "vitest run",
|
||||
|
||||
@@ -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<boolean>}
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user