From e49f711b18af4ab868fc478a2df39cededb052ae Mon Sep 17 00:00:00 2001 From: reform Date: Mon, 26 Oct 2026 12:47:01 +0300 Subject: [PATCH] =?UTF-8?q?bot:=20/new=20=D0=B8=20/find=20=D1=87=D0=B8?= =?UTF-8?q?=D1=82=D0=B0=D1=8E=D1=82=20dict-=D0=B7=D0=B0=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B8,=20/stats=20=D1=81=D1=87=D0=B8=D1=82=D0=B0=D0=B5=D1=82?= =?UTF-8?q?=20=D0=B6=D0=B8=D0=B2=D1=8B=D0=B5=20=D0=B8=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D1=87=D0=BD=D0=B8=D0=BA=D0=B8;=20=D1=80=D0=B5=D0=B6=D0=B8?= =?UTF-8?q?=D0=BC=20OMNI=5FBOT=5FDRY=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D0=B1=D0=B5=D0=B7=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- omni/bot.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/omni/bot.py b/omni/bot.py index ded5819..38458f1 100644 --- a/omni/bot.py +++ b/omni/bot.py @@ -46,6 +46,9 @@ def _api(method, **params): def _send(chat_id, text, preview=True): text = text[:MAX_LEN] + if os.environ.get("OMNI_BOT_DRY"): + print("[DRY] " + text.replace("", "").replace("", "")[:1200]) + return {"ok": True} return _api("sendMessage", chat_id=chat_id, text=text, parse_mode="HTML", disable_web_page_preview="false" if preview else "true") @@ -78,8 +81,7 @@ def cmd_start(chat_id, arg): def cmd_new(chat_id, arg): n = int(arg) if arg.strip().isdigit() else 8 - rows = store.browse2(limit=min(n, 20), sort="fresh") - items = rows.get("items", rows) if isinstance(rows, dict) else rows + items, _total = store.browse2(limit=min(n, 20), sort="fresh") if not items: return _send(chat_id, "пусто") _send(chat_id, "последние %d:\n\n" % len(items) + "\n\n".join(fmt_item(i) for i in items)) @@ -103,7 +105,8 @@ def cmd_find(chat_id, arg): if not q: return _send(chat_id, "что искать?") rows = store.search(q, limit=8) - items = rows.get("items", rows) if isinstance(rows, dict) else rows + keys = ("provider", "kind", "source", "title", "score", "url") + items = [dict(zip(keys, r)) if not isinstance(r, dict) else r for r in rows] if not items: return _send(chat_id, "нет совпадений") _send(chat_id, "поиск: %s\n\n" % _esc(q) + "\n\n".join(fmt_item(i) for i in items)) @@ -160,7 +163,8 @@ def cmd_auto(chat_id, arg): def cmd_stats(chat_id, arg): s = store.stats() a = sources.all_sources() - alive = source_state.alive_count() if hasattr(source_state, "alive_count") else "?" + fl = source_state.flags() + alive = sum(1 for x in a if (fl.get(x.name, {}).get("items") or 0) > 0) _send(chat_id, "omni\nзаписей %s · источников %d · живых %s\nкатегорий %d · прогонов %s · с ценой %s" % ( s.get("items"), len(a), alive, len(sources.CATEGORIES), s.get("runs"), s.get("priced")))