aboutsummaryrefslogtreecommitdiffstats
path: root/cogs/utils/settings.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cogs/utils/settings.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/cogs/utils/settings.py b/cogs/utils/settings.py
new file mode 100644
index 0000000..0a1716f
--- /dev/null
+++ b/cogs/utils/settings.py
@@ -0,0 +1,62 @@
1# This file is part of Senator Sperma
2# Licensed under the GPL-3.0 License
3# Copyright (C) 2026 Salmonik @ salmonik@tuta.io
4# https://codeberg.org/salmonik/senator-sperma
5
6import json
7import logging
8import aiofiles
9import os
10
11logger = logging.getLogger(__name__)
12
13_settings = None
14settings_file = "data/settings.json"
15
16async def load_settings():
17 global _settings
18 global settings_file
19
20 default_settings = {
21 'volume': 1.0,
22 'baseurl': 'http://localhost:8080'
23 }
24
25 try:
26 if os.path.exists(settings_file):
27 async with aiofiles.open(settings_file, 'r') as f:
28 content = await f.read()
29 if content.strip():
30 _settings = json.loads(content)
31 logger.info("Settings loaded into memory")
32 else:
33 _settings = default_settings
34 await save_settings()
35 logger.warning("Empty settings.json, reset to defaults")
36 else:
37 _settings = default_settings
38 await save_settings()
39 logger.info("Created default settings.json")
40 except (json.JSONDecodeError, Exception) as e:
41 logger.error(f"Error loading settings: {e}")
42 _settings = default_settings
43
44 return _settings
45
46
47async def save_settings():
48 if _settings:
49 async with aiofiles.open(settings_file, 'w') as f:
50 await f.write(json.dumps(_settings, indent=2))
51
52
53def get_settings():
54 return _settings
55
56
57def get_volume():
58 return _settings.get('volume', 1.0) if _settings else 1.0
59
60
61def get_baseurl():
62 return _settings.get('baseurl', 'http://localhost:8080').rstrip('/') if _settings else 'http://localhost:8080' \ No newline at end of file