Properly auto-load cogs
All checks were successful
Build and Publish Jimmy.2 / build_and_publish (push) Successful in 7s
All checks were successful
Build and Publish Jimmy.2 / build_and_publish (push) Successful in 7s
This commit is contained in:
parent
01d61248d5
commit
a44556626d
2 changed files with 33 additions and 15 deletions
17
src/conf.py
17
src/conf.py
|
@ -1,4 +1,5 @@
|
|||
import logging
|
||||
import os
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
|
@ -25,6 +26,14 @@ else:
|
|||
|
||||
try:
|
||||
CONFIG = toml.load("config.toml")
|
||||
except FileNotFoundError:
|
||||
cwd = Path.cwd()
|
||||
log.critical(
|
||||
"Unable to locate config.toml in %s. Using default configuration. Good luck!",
|
||||
cwd,
|
||||
exc_info=True
|
||||
)
|
||||
CONFIG = {}
|
||||
CONFIG.setdefault("logging", {})
|
||||
CONFIG.setdefault("jimmy", {})
|
||||
CONFIG.setdefault("ollama", {})
|
||||
|
@ -32,7 +41,7 @@ try:
|
|||
CONFIG.setdefault("responder", {})
|
||||
CONFIG.setdefault("quote_a", {"channel": None})
|
||||
CONFIG.setdefault("redis", {"host": "redis", "port": 6379, "decode_responses": True})
|
||||
except FileNotFoundError:
|
||||
cwd = Path.cwd()
|
||||
log.critical("Unable to locate config.toml in %s.", cwd, exc_info=True)
|
||||
raise
|
||||
|
||||
if _t := os.getenv("JIMMY_TOKEN"):
|
||||
log.info("Overriding config with token from $JIMMY_TOKEN.")
|
||||
CONFIG["jimmy"]["token"] = _t
|
||||
|
|
21
src/main.py
21
src/main.py
|
@ -1,5 +1,6 @@
|
|||
import asyncio
|
||||
import datetime
|
||||
import glob
|
||||
import logging
|
||||
import random
|
||||
import shutil
|
||||
|
@ -12,7 +13,6 @@ from threading import Event, Thread
|
|||
|
||||
import discord
|
||||
import httpx
|
||||
import uvicorn
|
||||
from discord.ext import commands
|
||||
from rich.console import Console
|
||||
from rich.logging import RichHandler
|
||||
|
@ -118,14 +118,23 @@ bot = Client(
|
|||
intents=discord.Intents.all(),
|
||||
)
|
||||
|
||||
for ext in ("ytdl", "net", "screenshot", "ollama", "ffmeta", "quote_quota", "auto_responder"):
|
||||
for module in CONFIG["jimmy"].get("modules", ["cogs/*.py"]):
|
||||
try:
|
||||
bot.load_extension(f"cogs.{ext}")
|
||||
bot.load_extension(module)
|
||||
except discord.ExtensionNotFound:
|
||||
log.debug("%r does not exist - trying as glob pattern", module)
|
||||
for ext in glob.glob(module, recursive=True):
|
||||
ext = ext.replace("/", ".")[:-3] # foo/bar.py -> foo.bar
|
||||
try:
|
||||
bot.load_extension(ext)
|
||||
except discord.ExtensionError as e:
|
||||
log.error(f"Failed to load extension cogs.{ext}", exc_info=e)
|
||||
log.error(f"Failed to load extension {ext}", exc_info=e)
|
||||
else:
|
||||
log.info(f"Loaded extension cogs.{ext}")
|
||||
|
||||
log.info(f"Loaded extension {ext}")
|
||||
except discord.ExtensionError as e:
|
||||
log.error(f"Failed to load extension {module}", exc_info=e)
|
||||
else:
|
||||
log.info(f"Loaded extension {module}")
|
||||
|
||||
@bot.event
|
||||
async def on_ready():
|
||||
|
|
Loading…
Reference in a new issue