Files
faction_war_dispatch_bot/config.py
2026-01-28 08:53:21 -05:00

63 lines
2.1 KiB
Python

from pathlib import Path
import json
import os
from dotenv import load_dotenv
# Load environment variables from .env file (if it exists)
load_dotenv()
def load_from_json():
#Load config from JSON file if it exists
path = Path("data/config.json")
if not path.exists():
return {}
try:
with open(path, "r", encoding="utf-8") as f:
data = json.load(f)
return data.get("config", {})
except Exception as e:
print(f"Error loading config from JSON: {e}")
return {}
# Load from JSON or use defaults
_config = load_from_json()
# Helper function to get config value from environment, then JSON, then default
def get_config(key: str, default, is_int: bool = False):
# 1. Try environment variable first
env_val = os.getenv(key)
if env_val is not None:
return int(env_val) if is_int else env_val
# 2. Try JSON config
json_val = _config.get(key)
if json_val is not None:
return json_val
# 3. Use default
return default
# Torn API
TORN_API_KEY = get_config("TORN_API_KEY", "YOUR_TORN_API_KEY_HERE")
# FFScouter API
FFSCOUTER_KEY = get_config("FFSCOUTER_KEY", "YOUR_FFSCOUTER_KEY_HERE")
# Discord Bot
DISCORD_TOKEN = get_config("DISCORD_TOKEN", "YOUR_DISCORD_BOT_TOKEN_HERE")
ALLOWED_CHANNEL_ID = get_config("ALLOWED_CHANNEL_ID", 0, is_int=True)
# Intervals
HIT_CHECK_INTERVAL = get_config("HIT_CHECK_INTERVAL", 60, is_int=True)
REASSIGN_DELAY = get_config("REASSIGN_DELAY", 120, is_int=True)
# Bot Assignment Settings
ASSIGNMENT_TIMEOUT = get_config("ASSIGNMENT_TIMEOUT", 60, is_int=True) # Seconds before reassigning a target
ASSIGNMENT_REMINDER = get_config("ASSIGNMENT_REMINDER", 45, is_int=True) # Seconds before sending reminder message
# Chain Timer Settings
CHAIN_TIMER_THRESHOLD = get_config("CHAIN_TIMER_THRESHOLD", 5, is_int=True) # Minutes - start assigning hits when chain timer is at or below this
# Authentication
AUTH_PASSWORD = get_config("AUTH_PASSWORD", "YOUR_AUTH_PASSWORD_HERE") # Universal password for all users
JWT_SECRET = get_config("JWT_SECRET", "your-secret-key-change-this") # Secret key for JWT tokens