|
|
|
|
|
import firebase_admin |
|
from firebase_admin import credentials, firestore |
|
import os |
|
import json |
|
|
|
FALLBACK_LOG_PATH = "data/logs.json" |
|
|
|
def init_firebase(): |
|
try: |
|
if not firebase_admin._apps: |
|
cred_path = "firebase_credentials.json" |
|
if not os.path.exists(cred_path): |
|
raise FileNotFoundError("Firebase credentials file not found.") |
|
|
|
cred = credentials.Certificate(cred_path) |
|
firebase_admin.initialize_app(cred) |
|
return firestore.client() |
|
except Exception as e: |
|
print(f"[Firebase ERROR] {e}") |
|
return None |
|
|
|
def log_message_to_firestore(message_dict): |
|
db = init_firebase() |
|
if db: |
|
try: |
|
chat_ref = db.collection("conversations").document("bot_talk_log") |
|
chat_ref.set({"messages": firestore.ArrayUnion([message_dict])}, merge=True) |
|
return |
|
except Exception as e: |
|
print(f"[Firestore ERROR] {e}") |
|
|
|
|
|
log_to_local_file(message_dict) |
|
|
|
def log_to_local_file(message_dict): |
|
os.makedirs("data", exist_ok=True) |
|
|
|
|
|
if os.path.exists(FALLBACK_LOG_PATH): |
|
with open(FALLBACK_LOG_PATH, "r") as f: |
|
try: |
|
logs = json.load(f) |
|
except json.JSONDecodeError: |
|
logs = [] |
|
else: |
|
logs = [] |
|
|
|
logs.append(message_dict) |
|
|
|
with open(FALLBACK_LOG_PATH, "w") as f: |
|
json.dump(logs, f, indent=2) |
|
|
|
print("[Local LOG] Message saved to fallback log.") |
|
|