From 18471abe13f4d5d0408dda4a1956280c3178c568 Mon Sep 17 00:00:00 2001 From: jef Date: Sat, 8 Aug 2020 09:29:32 +0200 Subject: [PATCH] Added config system --- frank.yaml | 2 ++ frank/frank.py | 17 +++++++++++++++-- frank/module.py | 6 ++++-- frank/modules/testmod.py | 4 +++- requirements.txt | 1 + 5 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 frank.yaml diff --git a/frank.yaml b/frank.yaml new file mode 100644 index 0000000..1933cea --- /dev/null +++ b/frank.yaml @@ -0,0 +1,2 @@ +test: + channel_id: 740301700606197918 diff --git a/frank/frank.py b/frank/frank.py index 709e98a..7f1eb1d 100644 --- a/frank/frank.py +++ b/frank/frank.py @@ -1,22 +1,35 @@ import shlex from typing import List import discord +import yaml class Frank(discord.Client): PREFIX = "fr" - def __init__(self, modules: List["Module"]): + def __init__(self, modules: List["Module"], config_file: str = "frank.yaml"): super().__init__() self._modules = modules self._loaded_modules = [] + try: + with open(config_file, "r") as f: + self._settings = yaml.load(f, Loader=yaml.FullLoader) + + except FileNotFoundError: + self._settings = None + async def on_ready(self): print("Connected") # Startup all modules for module in self._modules: - loaded = module(self) + if self._settings and module.NAME in self._settings: + loaded = module(self, settings=self._settings[module.NAME]) + + else: + loaded = module(self) + await loaded.start() self._loaded_modules.append(loaded) diff --git a/frank/module.py b/frank/module.py index 44cef24..903ddfd 100644 --- a/frank/module.py +++ b/frank/module.py @@ -1,11 +1,13 @@ -from typing import List +from typing import List, Dict class Module: PREFIX = None + NAME = None - def __init__(self, client: "Frank"): + def __init__(self, client: "Frank", settings: Dict = None): self._client = client + self._settings = settings async def start(self): pass diff --git a/frank/modules/testmod.py b/frank/modules/testmod.py index 3d29593..31c0592 100644 --- a/frank/modules/testmod.py +++ b/frank/modules/testmod.py @@ -4,7 +4,9 @@ from .. import Module class TestMod(Module): PREFIX = "test" + NAME = "test" async def command(self, cmd: List[str]): if cmd[0] == "test": - await self._client.get_channel(740301700606197918).send("this is frank speaking") + channel = self._client.get_channel(self._settings["channel_id"]) + await channel.send("psycho frank is in the house") diff --git a/requirements.txt b/requirements.txt index 0404e17..c0eea01 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ discord.py pylint jedi python-dotenv +pyyaml