Spaces:
Sleeping
Sleeping
Update bot_core.py
Browse files- bot_core.py +9 -12
bot_core.py
CHANGED
|
@@ -38,12 +38,12 @@ RETRY_OVERALL_TIMEOUT = float(os.environ.get("RETRY_OVERALL_TIMEOUT", "60"))
|
|
| 38 |
DEDUP_TTL_MINUTES = int(os.environ.get("DEDUP_TTL_MINUTES", "600")) # 10 jam
|
| 39 |
MIN_MCAP_USD = float(os.environ.get("MIN_MCAP_USD", "70000")) # batas minimal MC
|
| 40 |
|
| 41 |
-
#
|
| 42 |
SKIP_CALLERS_ENV = os.environ.get("SKIP_CALLERS", "")
|
| 43 |
_SKIP_CALLERS = [h.lstrip("@").strip().lower() for h in SKIP_CALLERS_ENV.split(",") if h.strip()]
|
| 44 |
|
| 45 |
-
# (Opsional)
|
| 46 |
-
# Bisa
|
| 47 |
SKIP_SOURCES_ENV = os.environ.get("SKIP_SOURCES", "")
|
| 48 |
_SKIP_SOURCES_RAW = [s.strip() for s in SKIP_SOURCES_ENV.split(",") if s.strip()]
|
| 49 |
|
|
@@ -236,31 +236,28 @@ def _accept_ca(addr: str, current_source: str) -> bool:
|
|
| 236 |
# ========= Siapkan daftar chats untuk decorator (harus normalisasi dulu) =========
|
| 237 |
SOURCE_CHATS = [_normalize_chat(s) for s in SOURCE_CHATS_RAW]
|
| 238 |
|
| 239 |
-
# (Opsional) normalisasi SKIP_SOURCES untuk dibandingkan
|
| 240 |
_SKIP_SOURCES = set()
|
| 241 |
for s in _SKIP_SOURCES_RAW:
|
| 242 |
ns = _normalize_chat(s)
|
| 243 |
-
# hanya handle username atau ID; untuk perbandingan cepat, kita simpan username lower
|
| 244 |
if isinstance(ns, str):
|
| 245 |
-
_SKIP_SOURCES.add(_normalize_handle(ns))
|
| 246 |
else:
|
| 247 |
-
#
|
| 248 |
-
_SKIP_SOURCES.add(f"id:{ns}")
|
| 249 |
|
| 250 |
-
# ========= EVENT HANDLER =========
|
| 251 |
-
@
|
| 252 |
async def on_message_from_sources(event: events.NewMessage.Event):
|
| 253 |
src_label = _label_chat_from_event(event)
|
| 254 |
txt = (event.raw_text or "").strip()
|
| 255 |
logger.info("EVNT| pesan baru dari %s", src_label)
|
| 256 |
|
| 257 |
-
# (Opsional) Skip berdasarkan sumber chat
|
| 258 |
if _SKIP_SOURCES:
|
| 259 |
src_user = _event_source_username(event) # '' kalau tidak ada username
|
| 260 |
if src_user and _normalize_handle(src_user) in _SKIP_SOURCES:
|
| 261 |
logger.info("SKIP| sumber @%s ter-blacklist via SKIP_SOURCES", src_user)
|
| 262 |
return
|
| 263 |
-
# Kalau sumber berupa ID numerik:
|
| 264 |
if not src_user:
|
| 265 |
try:
|
| 266 |
if f"id:{event.chat_id}" in _SKIP_SOURCES:
|
|
|
|
| 38 |
DEDUP_TTL_MINUTES = int(os.environ.get("DEDUP_TTL_MINUTES", "600")) # 10 jam
|
| 39 |
MIN_MCAP_USD = float(os.environ.get("MIN_MCAP_USD", "70000")) # batas minimal MC
|
| 40 |
|
| 41 |
+
# Blacklist caller di isi pesan (contoh: SKIP_CALLERS="@joko,@spamcaller")
|
| 42 |
SKIP_CALLERS_ENV = os.environ.get("SKIP_CALLERS", "")
|
| 43 |
_SKIP_CALLERS = [h.lstrip("@").strip().lower() for h in SKIP_CALLERS_ENV.split(",") if h.strip()]
|
| 44 |
|
| 45 |
+
# (Opsional) blacklist sumber chat (channel/grup) → skip semua pesan dari sumber ini
|
| 46 |
+
# Bisa campur @username, t.me/username, t.me/c/<id>, atau -100...
|
| 47 |
SKIP_SOURCES_ENV = os.environ.get("SKIP_SOURCES", "")
|
| 48 |
_SKIP_SOURCES_RAW = [s.strip() for s in SKIP_SOURCES_ENV.split(",") if s.strip()]
|
| 49 |
|
|
|
|
| 236 |
# ========= Siapkan daftar chats untuk decorator (harus normalisasi dulu) =========
|
| 237 |
SOURCE_CHATS = [_normalize_chat(s) for s in SOURCE_CHATS_RAW]
|
| 238 |
|
| 239 |
+
# (Opsional) normalisasi SKIP_SOURCES untuk dibandingkan cepat
|
| 240 |
_SKIP_SOURCES = set()
|
| 241 |
for s in _SKIP_SOURCES_RAW:
|
| 242 |
ns = _normalize_chat(s)
|
|
|
|
| 243 |
if isinstance(ns, str):
|
| 244 |
+
_SKIP_SOURCES.add(_normalize_handle(ns)) # username lower
|
| 245 |
else:
|
| 246 |
+
_SKIP_SOURCES.add(f"id:{ns}") # ID numerik sebagai 'id:-100...'
|
|
|
|
| 247 |
|
| 248 |
+
# ========= EVENT HANDLER (TERDAFTAR KE CLIENT) =========
|
| 249 |
+
@client.on(events.NewMessage(chats=SOURCE_CHATS))
|
| 250 |
async def on_message_from_sources(event: events.NewMessage.Event):
|
| 251 |
src_label = _label_chat_from_event(event)
|
| 252 |
txt = (event.raw_text or "").strip()
|
| 253 |
logger.info("EVNT| pesan baru dari %s", src_label)
|
| 254 |
|
| 255 |
+
# (Opsional) Skip berdasarkan sumber chat (channel/grup)
|
| 256 |
if _SKIP_SOURCES:
|
| 257 |
src_user = _event_source_username(event) # '' kalau tidak ada username
|
| 258 |
if src_user and _normalize_handle(src_user) in _SKIP_SOURCES:
|
| 259 |
logger.info("SKIP| sumber @%s ter-blacklist via SKIP_SOURCES", src_user)
|
| 260 |
return
|
|
|
|
| 261 |
if not src_user:
|
| 262 |
try:
|
| 263 |
if f"id:{event.chat_id}" in _SKIP_SOURCES:
|