agus1111 commited on
Commit
4ddff16
·
verified ·
1 Parent(s): 73b5769

Update bot_core.py

Browse files
Files changed (1) hide show
  1. 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
- # 2) 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 (skip kalau pesan berasal dari channel/grup tertentu)
46
- # Bisa isi campuran @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,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 dengan username sumber
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
- # kalau ID numerik, kita simpan sebagai string 'id:-100123...' agar bisa dibedakan
248
- _SKIP_SOURCES.add(f"id:{ns}")
249
 
250
- # ========= EVENT HANDLER =========
251
- @events.register(events.NewMessage(chats=SOURCE_CHATS))
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: