agus1111 commited on
Commit
9e6199e
·
verified ·
1 Parent(s): 3808952

Update botsignal.py

Browse files
Files changed (1) hide show
  1. botsignal.py +25 -10
botsignal.py CHANGED
@@ -1,4 +1,3 @@
1
- import asyncio
2
  import os
3
  import re
4
  import io
@@ -19,22 +18,27 @@ API_HASH = os.environ.get("API_HASH", "")
19
  STRING_SESSION = os.environ.get("STRING_SESSION", "")
20
 
21
  # --- Definisikan sumber sebagai CORE vs SUPPORT ---
22
- # Boleh: "@username", id (int), atau "https://t.me/xxxxx"
23
  CORE_CHATS = [
24
  "https://t.me/PEPE_Calls28",
25
- "https://t.me/Tanjirocall",
26
- ]
27
- SUPPORT_CHATS = [
28
  "https://t.me/ChinaPumpCommunity",
29
  "https://t.me/Milagrosdegencalls",
30
  "https://t.me/GM_Degencalls",
31
  ]
 
 
 
 
 
 
 
32
 
33
- # Gabungan untuk handler event
34
  SOURCE_CHATS = CORE_CHATS + SUPPORT_CHATS
35
 
36
  # Target (boleh @username / id / link)
37
- TARGET_CHAT = os.environ.get("TARGET_CHAT", "https://t.me/MidasTouchsignall")
38
 
39
  # Kata kunci topik untuk relevansi (termasuk ticker)
40
  THEME_KEYWORDS = [
@@ -197,6 +201,7 @@ def update_and_classify(keyword: str, group_key: str, now: Optional[datetime] =
197
 
198
 
199
  # ========= Sentence-level invite filter =========
 
200
  INVITE_PATTERNS = [
201
  r"\bjoin\b", r"\bjoin (us|our|channel|group)\b",
202
  r"\bdm\b", r"\bdm (me|gw|gue|gua|saya|admin)\b",
@@ -217,14 +222,19 @@ def _is_invite_sentence(s: str) -> bool:
217
 
218
  def filter_invite_sentences(text: str) -> str:
219
  """
220
- Hapus kalimat yang mengandung ajakan (join/DM/VIP/dll),
221
- tapi pertahankan 1 bubble (gabung ulang).
222
  """
223
  if not text:
224
  return text
 
 
225
  parts = re.split(r'(?<=[\.\!\?])\s+|\n+', text, flags=re.UNICODE)
226
  kept = [p.strip() for p in parts if p and not _is_invite_sentence(p)]
 
 
227
  cleaned = "\n".join(kept).strip()
 
228
  cleaned = re.sub(r"\n{3,}", "\n\n", cleaned)
229
  return cleaned
230
 
@@ -290,7 +300,7 @@ async def post_or_update(keyword: str, body: str, new_tier: str, src_msg) -> Non
290
  pass
291
 
292
 
293
- # ========= Core actions =========
294
  async def send_as_is(msg, text_override: Optional[str] = None) -> None:
295
  """
296
  (Tersisa untuk kasus lain yang butuh forward apa adanya.)
@@ -471,3 +481,8 @@ async def app_main() -> None:
471
 
472
  if __name__ == "__main__":
473
  asyncio.run(app_main())
 
 
 
 
 
 
 
1
  import os
2
  import re
3
  import io
 
18
  STRING_SESSION = os.environ.get("STRING_SESSION", "")
19
 
20
  # --- Definisikan sumber sebagai CORE vs SUPPORT ---
21
+ # (pakai data milikmu)
22
  CORE_CHATS = [
23
  "https://t.me/PEPE_Calls28",
24
+ "https://t.me/HenryGems",
 
 
25
  "https://t.me/ChinaPumpCommunity",
26
  "https://t.me/Milagrosdegencalls",
27
  "https://t.me/GM_Degencalls",
28
  ]
29
+ SUPPORT_CHATS = [
30
+ "https://t.me/SephirothGemCalls1",
31
+ "https://t.me/TheDonALPHAJournal",
32
+ "https://t.me/savascalls",
33
+ "https://t.me/Tanjirocall",
34
+ "https://t.me/ChapoInsider",
35
+ ]
36
 
37
+ # Gabungan untuk handler event (hindari unpack agar sederhana)
38
  SOURCE_CHATS = CORE_CHATS + SUPPORT_CHATS
39
 
40
  # Target (boleh @username / id / link)
41
+ TARGET_CHAT = os.environ.get("TARGET_CHAT", "https://t.me/MidasTouchsignalll")
42
 
43
  # Kata kunci topik untuk relevansi (termasuk ticker)
44
  THEME_KEYWORDS = [
 
201
 
202
 
203
  # ========= Sentence-level invite filter =========
204
+ # Pola ajakan (join/DM/VIP/premium/berbayar/dll) — case-insensitive.
205
  INVITE_PATTERNS = [
206
  r"\bjoin\b", r"\bjoin (us|our|channel|group)\b",
207
  r"\bdm\b", r"\bdm (me|gw|gue|gua|saya|admin)\b",
 
222
 
223
  def filter_invite_sentences(text: str) -> str:
224
  """
225
+ Hapus hanya kalimat/segmen yang mengandung ajakan (join/DM/VIP/dll),
226
+ tapi pertahankan bubble aslinya (gabungkan kembali jadi satu pesan).
227
  """
228
  if not text:
229
  return text
230
+
231
+ # Pisah berdasarkan akhir kalimat . ! ? atau newline (umum di Telegram)
232
  parts = re.split(r'(?<=[\.\!\?])\s+|\n+', text, flags=re.UNICODE)
233
  kept = [p.strip() for p in parts if p and not _is_invite_sentence(p)]
234
+
235
+ # Gabungkan kembali; gunakan newline agar tetap rapi, tapi tetap 1 bubble.
236
  cleaned = "\n".join(kept).strip()
237
+ # Rapikan newline ganda
238
  cleaned = re.sub(r"\n{3,}", "\n\n", cleaned)
239
  return cleaned
240
 
 
300
  pass
301
 
302
 
303
+ # ========= Core actions (fallback kept) =========
304
  async def send_as_is(msg, text_override: Optional[str] = None) -> None:
305
  """
306
  (Tersisa untuk kasus lain yang butuh forward apa adanya.)
 
481
 
482
  if __name__ == "__main__":
483
  asyncio.run(app_main())
484
+ '''
485
+ with open('/mnt/data/botsignal.py', 'w', encoding='utf-8') as f:
486
+ f.write(code)
487
+
488
+ print("botsignal.py written to /mnt/data/botsignal.py")