minebot/lib.py
Joseph Montanaro 983b67fe18
Some checks failed
continuous-integration/drone/push Build is failing
allow default value for configs
2020-12-27 20:27:02 -08:00

38 lines
894 B
Python

import inspect
import os
import pathlib
from discord.ext import commands
class ConfigError(Exception):
pass
class MineBot(commands.Bot):
def __init__(self, *args, **kwargs):
self.cleanup = []
super().__init__(*args, **kwargs)
def add_cleanup(self, callback):
self.cleanup.append(callback)
async def close(self):
for callback in self.cleanup:
r = callback()
# coroutines etc. return an awaitable object
if inspect.isawaitable(r):
await r
await super().close()
def getconfig(key, default=None):
if key in os.environ:
return os.environ[key]
elif f'{key}_FILE' in os.environ:
p = os.environ[f'{key}_FILE']
return pathlib.Path(p).read_text()
elif default != None:
return default
else:
raise ConfigError('Missing config:', key)