Properly auto-load cogs
All checks were successful
Build and Publish Jimmy.2 / build_and_publish (push) Successful in 7s

This commit is contained in:
Nexus 2024-04-29 01:41:02 +01:00
parent 01d61248d5
commit a44556626d
Signed by: nex
GPG key ID: 0FA334385D0B689F
2 changed files with 33 additions and 15 deletions

View file

@ -1,4 +1,5 @@
import logging
import os
import subprocess
from pathlib import Path
@ -25,14 +26,22 @@ else:
try:
CONFIG = toml.load("config.toml")
CONFIG.setdefault("logging", {})
CONFIG.setdefault("jimmy", {})
CONFIG.setdefault("ollama", {})
CONFIG.setdefault("screenshot", {})
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
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", {})
CONFIG.setdefault("screenshot", {})
CONFIG.setdefault("responder", {})
CONFIG.setdefault("quote_a", {"channel": None})
CONFIG.setdefault("redis", {"host": "redis", "port": 6379, "decode_responses": True})
if _t := os.getenv("JIMMY_TOKEN"):
log.info("Overriding config with token from $JIMMY_TOKEN.")
CONFIG["jimmy"]["token"] = _t

View file

@ -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():