saq1b commited on
Commit
1f53dd8
·
verified ·
1 Parent(s): 855ce30

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +36 -3
main.py CHANGED
@@ -50,6 +50,8 @@ SERVER_SCAMMER_SHEET = "Server Scammer Files"
50
  SERVER_SCAMMER_RANGE = "B6:F"
51
  DWC_SHEET = "DWC Servers / Users"
52
  DWC_RANGE = "B6:G"
 
 
53
 
54
  # Sheet Names and Ranges within VALUES_DUPE_SPREADSHEET_ID
55
  DUPE_LIST_SHEET = "Dupe List"
@@ -67,8 +69,7 @@ CACHE_UPDATE_INTERVAL_SECONDS = int(os.getenv('CACHE_UPDATE_INTERVAL_SECONDS', 6
67
  # Webhook URLs
68
  SCAMMER_WEBHOOK_URL = os.getenv("SCAMMER_WEBHOOK_URL")
69
  VALUE_WEBHOOK_URL = os.getenv("VALUE_WEBHOOK_URL")
70
- # Optional: Separate webhook for dupe checks? Keep using the general one for now.
71
- DUPE_CHECK_WEBHOOK_URL = os.getenv("WEBHOOK_URL")
72
 
73
 
74
  # --- Global Cache ---
@@ -78,6 +79,7 @@ cache = {
78
  "user_scammers": [],
79
  "server_scammers": [],
80
  "dwc": [],
 
81
  "dupes": [], # List of duped usernames
82
  "last_updated": None, # Timestamp of the last successful/partial update
83
  "is_ready": False, # Is the cache populated at least once?
@@ -376,6 +378,33 @@ def process_dwc_data(values): # For DWC Sheet
376
  processed_data.append(processed_item)
377
  return processed_data
378
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
379
  def process_dupe_list_data(values): # For Dupe List Sheet
380
  if not values: return []
381
  # Expected range like B2:B
@@ -513,16 +542,19 @@ async def update_cache_periodically():
513
  f"{quote_sheet_name(USER_SCAMMER_SHEET)}!{USER_SCAMMER_RANGE}",
514
  f"{quote_sheet_name(SERVER_SCAMMER_SHEET)}!{SERVER_SCAMMER_RANGE}",
515
  f"{quote_sheet_name(DWC_SHEET)}!{DWC_RANGE}",
 
516
  ]
517
  scammer_dwc_processor_map = {
518
  USER_SCAMMER_SHEET: process_user_scammer_data,
519
  SERVER_SCAMMER_SHEET: process_server_scammer_data,
520
  DWC_SHEET: process_dwc_data,
 
521
  }
522
  scammer_dwc_target_key_map = {
523
  USER_SCAMMER_SHEET: "user_scammers",
524
  SERVER_SCAMMER_SHEET: "server_scammers",
525
  DWC_SHEET: "dwc",
 
526
  }
527
 
528
  values_dupes_ranges = [f"{quote_sheet_name(DUPE_LIST_SHEET)}!{DUPE_LIST_RANGE}"]
@@ -1024,7 +1056,8 @@ async def get_scammers():
1024
  return {
1025
  "users": cache.get("user_scammers", []),
1026
  "servers": cache.get("server_scammers", []),
1027
- "dwc": cache.get("dwc", [])
 
1028
  }
1029
 
1030
  @app.get("/api/dupes")
 
50
  SERVER_SCAMMER_RANGE = "B6:F"
51
  DWC_SHEET = "DWC Servers / Users"
52
  DWC_RANGE = "B6:G"
53
+ TRUSTED_SHEET = "Trusted Users / Servers"
54
+ TRUSTED_RANGE = "B6:E"
55
 
56
  # Sheet Names and Ranges within VALUES_DUPE_SPREADSHEET_ID
57
  DUPE_LIST_SHEET = "Dupe List"
 
69
  # Webhook URLs
70
  SCAMMER_WEBHOOK_URL = os.getenv("SCAMMER_WEBHOOK_URL")
71
  VALUE_WEBHOOK_URL = os.getenv("VALUE_WEBHOOK_URL")
72
+ DUPE_CHECK_WEBHOOK_URL = os.getenv("DUPE_CHECK_WEBHOOK_URL")
 
73
 
74
 
75
  # --- Global Cache ---
 
79
  "user_scammers": [],
80
  "server_scammers": [],
81
  "dwc": [],
82
+ "trusted": [], # List of trusted users/servers
83
  "dupes": [], # List of duped usernames
84
  "last_updated": None, # Timestamp of the last successful/partial update
85
  "is_ready": False, # Is the cache populated at least once?
 
378
  processed_data.append(processed_item)
379
  return processed_data
380
 
381
+ def process_trusted_data(values): # For Trusted Users/Servers Sheet
382
+ if not values: return []
383
+ processed_data = []
384
+ for row in values: # Expected range like B6:E
385
+ if not row or len(row) < 2: continue
386
+ # Indices based on B6:E (0-indexed from B)
387
+ discord_id = clean_string_optional(row[0]) if len(row) > 0 else None # Col B
388
+ discord_username = clean_string_optional(row[1]) if len(row) > 1 else None # Col C
389
+ discord_server_id = clean_string_optional(row[2]) if len(row) > 2 else None # Col D
390
+ roblox_username = clean_string_optional(row[3]) if len(row) > 3 else None # Col E
391
+
392
+ # Skip if all identifiers are missing
393
+ if not discord_id and not discord_username and not discord_server_id and not roblox_username: continue
394
+ # Skip if it looks like a header row
395
+ if str(discord_id).lower() == 'discord id' or str(discord_username).lower() == 'discord username':
396
+ continue
397
+
398
+ processed_item = {
399
+ 'discord_id': discord_id,
400
+ 'discord_username': discord_username,
401
+ 'discord_server_id': discord_server_id,
402
+ 'roblox_username': roblox_username,
403
+ 'roblox_avatar_url': None # Will be filled later
404
+ }
405
+ processed_data.append(processed_item)
406
+ return processed_data
407
+
408
  def process_dupe_list_data(values): # For Dupe List Sheet
409
  if not values: return []
410
  # Expected range like B2:B
 
542
  f"{quote_sheet_name(USER_SCAMMER_SHEET)}!{USER_SCAMMER_RANGE}",
543
  f"{quote_sheet_name(SERVER_SCAMMER_SHEET)}!{SERVER_SCAMMER_RANGE}",
544
  f"{quote_sheet_name(DWC_SHEET)}!{DWC_RANGE}",
545
+ f"{quote_sheet_name(TRUSTED_SHEET)}!{TRUSTED_RANGE}",
546
  ]
547
  scammer_dwc_processor_map = {
548
  USER_SCAMMER_SHEET: process_user_scammer_data,
549
  SERVER_SCAMMER_SHEET: process_server_scammer_data,
550
  DWC_SHEET: process_dwc_data,
551
+ TRUSTED_SHEET: process_trusted_data,
552
  }
553
  scammer_dwc_target_key_map = {
554
  USER_SCAMMER_SHEET: "user_scammers",
555
  SERVER_SCAMMER_SHEET: "server_scammers",
556
  DWC_SHEET: "dwc",
557
+ TRUSTED_SHEET: "trusted",
558
  }
559
 
560
  values_dupes_ranges = [f"{quote_sheet_name(DUPE_LIST_SHEET)}!{DUPE_LIST_RANGE}"]
 
1056
  return {
1057
  "users": cache.get("user_scammers", []),
1058
  "servers": cache.get("server_scammers", []),
1059
+ "dwc": cache.get("dwc", []),
1060
+ "trusted": cache.get("trusted", [])
1061
  }
1062
 
1063
  @app.get("/api/dupes")