63 lines
2.1 KiB
Python
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
|