-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.py
More file actions
64 lines (53 loc) · 2.1 KB
/
config.py
File metadata and controls
64 lines (53 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from dataclasses import dataclass, field
from typing import Dict, Any, List, Optional
@dataclass
class NewUserInviteConfig:
enabled: bool = False
role_id: Optional[int] = None
invite_link: Optional[str] = None
@dataclass
class DiscordConfig:
sonarr_notification_channel_id: str = ""
radarr_notification_channel_id: str = ""
dm_notifications_enabled: bool = True
test_guild_id: int = 0
new_user_invite: NewUserInviteConfig = field(default_factory=NewUserInviteConfig)
@dataclass
class OverseerrConfig:
enabled: bool = False
base_url: str = ""
api_key: str = ""
refresh_interval_minutes: int = 60
@dataclass
class SonarrInstanceConfig:
name: str = ""
url: str = ""
api_key: str = ""
enabled: bool = False
@dataclass
class TMDBConfig:
api_key: str = ""
@dataclass
class UserMappings:
plex_to_discord: Dict[str, str] = field(default_factory=dict)
@dataclass
class BotConfig:
log_level: str = "INFO"
discord: DiscordConfig = field(default_factory=DiscordConfig)
overseerr: OverseerrConfig = field(default_factory=OverseerrConfig)
sonarr_instances: List[SonarrInstanceConfig] = field(default_factory=list)
user_mappings: UserMappings = field(default_factory=UserMappings)
tmdb: TMDBConfig = field(default_factory=TMDBConfig)
bot_config = BotConfig()
def update_config(new_config: Dict[str, Any]):
"""Updates the global bot_config with a dictionary."""
global bot_config
bot_config.log_level = new_config.get("log_level", "INFO")
discord_data = new_config.get("discord", {})
new_user_invite_data = discord_data.get("new_user_invite", {})
discord_data["new_user_invite"] = NewUserInviteConfig(**new_user_invite_data)
bot_config.discord = DiscordConfig(**discord_data)
bot_config.overseerr = OverseerrConfig(**new_config.get("overseerr", {}))
bot_config.sonarr_instances = [SonarrInstanceConfig(**instance) for instance in new_config.get("sonarr_instances", [])]
bot_config.user_mappings = UserMappings(**new_config.get("user_mappings", {}))
bot_config.tmdb = TMDBConfig(**new_config.get("tmdb", {}))