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
27
src/conf.py
27
src/conf.py
|
@ -1,4 +1,5 @@
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
@ -25,14 +26,22 @@ else:
|
||||||
|
|
||||||
try:
|
try:
|
||||||
CONFIG = toml.load("config.toml")
|
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:
|
except FileNotFoundError:
|
||||||
cwd = Path.cwd()
|
cwd = Path.cwd()
|
||||||
log.critical("Unable to locate config.toml in %s.", cwd, exc_info=True)
|
log.critical(
|
||||||
raise
|
"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
|
||||||
|
|
21
src/main.py
21
src/main.py
|
@ -1,5 +1,6 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import datetime
|
import datetime
|
||||||
|
import glob
|
||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
import shutil
|
import shutil
|
||||||
|
@ -12,7 +13,6 @@ from threading import Event, Thread
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
import httpx
|
import httpx
|
||||||
import uvicorn
|
|
||||||
from discord.ext import commands
|
from discord.ext import commands
|
||||||
from rich.console import Console
|
from rich.console import Console
|
||||||
from rich.logging import RichHandler
|
from rich.logging import RichHandler
|
||||||
|
@ -118,14 +118,23 @@ bot = Client(
|
||||||
intents=discord.Intents.all(),
|
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:
|
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 {ext}", exc_info=e)
|
||||||
|
else:
|
||||||
|
log.info(f"Loaded extension {ext}")
|
||||||
except discord.ExtensionError as e:
|
except discord.ExtensionError as e:
|
||||||
log.error(f"Failed to load extension cogs.{ext}", exc_info=e)
|
log.error(f"Failed to load extension {module}", exc_info=e)
|
||||||
else:
|
else:
|
||||||
log.info(f"Loaded extension cogs.{ext}")
|
log.info(f"Loaded extension {module}")
|
||||||
|
|
||||||
|
|
||||||
@bot.event
|
@bot.event
|
||||||
async def on_ready():
|
async def on_ready():
|
||||||
|
|
Loading…
Reference in a new issue