This commit is contained in:
2024-10-29 15:20:28 +01:00
parent eb2960aa10
commit e955ef4e28
34 changed files with 201 additions and 476 deletions

View File

@ -1,10 +1,13 @@
from interactions import Client, Status
from gwendolyn.utils import log
from dotenv import load_dotenv
from os import getenv
from os import getenv, listdir
from interactions import Client, Status
from pymongo import MongoClient # Used for database management
from gwendolyn.utils import log
from gwendolyn.exceptions import NoToken, MongoCannotConnect
from gwendolyn.funcs import Other
class Gwendolyn(Client):
def __init__(self, testing: bool = True):
"""Initialize the bot."""
@ -17,27 +20,45 @@ class Gwendolyn(Client):
self.testing = testing
self._add_clients_and_options()
# self._add_util_classes()
# self._add_function_containers()
# self._add_cogs()
self._add_functions()
self._add_extensions()
def _add_clients_and_options(self):
"""Add all the client, option and credentials objects."""
load_dotenv()
self.bot_token = getenv("DISCORD_TOKEN")
if self.bot_token == "TOKEN":
raise NoToken()
self.admins = getenv("ADMINS").split(",")
mongo_user = getenv("MONGODB_USER")
mongo_password = getenv("MONGODB_PASSWORD")
mongo_url = f"mongodb+srv://{mongo_user}:{mongo_password}@gwendolyn"
mongo_url += ".qkwfy.mongodb.net/Gwendolyn?retryWrites=true&w=majority"
database_client = MongoClient(mongo_url)
try:
database_client.admin.command("ping")
except:
raise MongoCannotConnect()
if self.testing:
self.log("Testing mode")
self.database = database_client["Gwendolyn-Test"]
else:
self.database = database_client["Gwendolyn"]
def _add_functions(self):
self.other = Other(self)
def _add_extensions(self):
"""Load cogs."""
for filename in listdir("./gwendolyn/ext"):
if filename.endswith(".py"):
self.load_extension(f"gwendolyn.ext.{filename[:-3]}")
def log(self, messages, channel: str = "", level: int = 20): # pylint:disable=no-self-use
"""Log a message. Described in utils/util_functions.py."""
log(messages, channel, level)