From 846df895106ac61ef32989a6407995f177c9ac22 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Sun, 28 May 2023 09:24:33 -0400 Subject: [PATCH 1/4] Add hydra configs to ignore. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 33fdfc9..822647e 100644 --- a/.gitignore +++ b/.gitignore @@ -137,3 +137,4 @@ deleted_backups/ highscores_data/ TODO.txt sql_tester.py +config.yml From 391c36e7f23392cf01892cc92ab02ce442286dd6 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Sun, 28 May 2023 09:42:05 -0400 Subject: [PATCH 2/4] Copy the config yml into the docker container. --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index bb01a46..697fbe9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,7 @@ COPY cogs cogs/ COPY dakiny_bot.py dakiny_bot.py COPY requirements.txt requirements.txt COPY config.py config.py +COPY config.yml config.yml RUN pip install -r requirements.txt From d32c27c2918fa9d16df5cf9f5b6a93c56a130d55 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Sun, 28 May 2023 09:42:55 -0400 Subject: [PATCH 3/4] Remove config.py. Can place the discord token into the config.yml. --- config.py | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 config.py diff --git a/config.py b/config.py deleted file mode 100644 index 2383790..0000000 --- a/config.py +++ /dev/null @@ -1,8 +0,0 @@ -import os - -from dotenv.main import load_dotenv - -load_dotenv() - -# Discord config -DISCORD_TOKEN = os.getenv("DISCORD_TOKEN", "") From 0f05751ce8ecbabecd6b4a1b43153f8326ce16c8 Mon Sep 17 00:00:00 2001 From: imcompiling Date: Sat, 17 Jun 2023 16:25:45 -0400 Subject: [PATCH 4/4] Add hydra configs. --- .gitignore | 3 ++- config.py | 28 ++++++++++++++++++++++++++++ dakiny_bot.py | 14 +++++++++++--- requirements.txt | 3 ++- 4 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 config.py diff --git a/.gitignore b/.gitignore index 822647e..13fbe3e 100644 --- a/.gitignore +++ b/.gitignore @@ -137,4 +137,5 @@ deleted_backups/ highscores_data/ TODO.txt sql_tester.py -config.yml +conf +outputs diff --git a/config.py b/config.py new file mode 100644 index 0000000..282c2d9 --- /dev/null +++ b/config.py @@ -0,0 +1,28 @@ +from dataclasses import dataclass +from datetime import datetime + + +@dataclass +class Params: + voting_emote_id: int + annoucement_channel_id: int + archive_channel_group_id: int + clan_council_role_id: int + clan_council_elect_role_id: int + discord_token: str + + +@dataclass +class ElectionCycle: + election_start: datetime + voting_start: datetime + voting_end: datetime + term_start: datetime + term_end: datetime + name: str + + +@dataclass +class DakinyConfig: + params: Params + cycles: list[ElectionCycle] diff --git a/dakiny_bot.py b/dakiny_bot.py index 91d5ec3..6b68528 100644 --- a/dakiny_bot.py +++ b/dakiny_bot.py @@ -1,12 +1,19 @@ import os +import sys +import hydra import nextcord +from hydra.core.config_store import ConfigStore from nextcord.ext import commands -import config +from config import DakinyConfig + +cs = ConfigStore.instance() +cs.store(name="dakiny_config", node=DakinyConfig) -def main(): +@hydra.main(config_path="conf", config_name="config") +def main(cfg: DakinyConfig): # Allows privledged intents for monitoring members joining, roles editing, and role assignments # These need to be enabled in the developer portal as well intents = nextcord.Intents.default() @@ -33,8 +40,9 @@ def main(): print(f"{bot.user.name} has connected to Discord!") # Run Discord bot - bot.run(config.DISCORD_TOKEN) + bot.run(cfg.params.discord_token) if __name__ == "__main__": + sys.argv.append("hydra.job.chdir=False") main() diff --git a/requirements.txt b/requirements.txt index 97a0b72..2f6f7c1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ nextcord==2.4.2 python-dotenv==1.0.0 -pytz==2022.7.1 \ No newline at end of file +pytz==2022.7.1 +hydra-core==1.3.2 \ No newline at end of file