From 565ea7379209400ec016ec225d05596d391c038d Mon Sep 17 00:00:00 2001 From: imcompiling Date: Tue, 18 Mar 2025 22:43:20 -0400 Subject: [PATCH] Convert to be more consistant like python package. --- .vscode/launch.json | 5 ++--- Dockerfile | 2 +- off_cooldown_bot/__main__.py | 14 +++++++++++++ off_cooldown_bot/{main.py => app.py} | 20 +++++-------------- off_cooldown_bot/cogs/commands/birthday.py | 6 +++--- off_cooldown_bot/cogs/loops/daily_loop.py | 10 +++++----- .../cogs/message_listener/__init__.py | 3 ++- off_cooldown_bot/database/db.py | 2 +- 8 files changed, 33 insertions(+), 29 deletions(-) create mode 100644 off_cooldown_bot/__main__.py rename off_cooldown_bot/{main.py => app.py} (67%) diff --git a/.vscode/launch.json b/.vscode/launch.json index fcbe4ec..8830dab 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,9 +8,8 @@ "name": "Python: Module", "type": "debugpy", "request": "launch", - "module": "main", + "module": "off_cooldown_bot", "justMyCode": true, - "cwd": "${workspaceFolder}/off_cooldown_bot" } ] -} +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5c416ba..b6d3d60 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,4 +9,4 @@ COPY . /home WORKDIR /home RUN uv sync --frozen --no-dev -CMD ["uv", "--directory", "./off_cooldown_bot", "run", "main.py"] +CMD ["uv", "run", "python", "-m", "off_cooldown_bot"] diff --git a/off_cooldown_bot/__main__.py b/off_cooldown_bot/__main__.py new file mode 100644 index 0000000..083e452 --- /dev/null +++ b/off_cooldown_bot/__main__.py @@ -0,0 +1,14 @@ +"""Starts the app for off_cooldown_bot.""" + +import logging + +from .app import run + +nextcord_logger = logging.getLogger("nextcord") +nextcord_logger.setLevel(logging.DEBUG) +nextcord_handler = logging.FileHandler(filename="nextcord.log", encoding="utf-8", mode="w") +nextcord_handler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(name)s: %(message)s")) +nextcord_logger.addHandler(nextcord_handler) + +if __name__ == "__main__": + run() diff --git a/off_cooldown_bot/main.py b/off_cooldown_bot/app.py similarity index 67% rename from off_cooldown_bot/main.py rename to off_cooldown_bot/app.py index 85e667e..ead9053 100644 --- a/off_cooldown_bot/main.py +++ b/off_cooldown_bot/app.py @@ -2,24 +2,18 @@ from __future__ import annotations -import logging import pathlib import nextcord -from logger import ocd_logger from nextcord.ext import commands -from settings import settings -nextcord_logger = logging.getLogger("nextcord") -nextcord_logger.setLevel(logging.DEBUG) -nextcord_handler = logging.FileHandler(filename="nextcord.log", encoding="utf-8", mode="w") -nextcord_handler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(name)s: %(message)s")) -nextcord_logger.addHandler(nextcord_handler) +from .logger import ocd_logger +from .settings import settings birthday_list: list[int] = [] -def main() -> None: +def run() -> None: """Set config, intents, then connects the bot to discord.""" # Allows privileged intents for monitoring members joining, roles editing, and role assignments # These need to be enabled in the developer portal as well @@ -37,8 +31,8 @@ def main() -> None: bot = commands.Bot(intents=intents) # Get the modules of all cogs whose directory structure is ./cogs/ - for folder in pathlib.Path("cogs").iterdir(): - bot.load_extension(f"cogs.{folder.name}") + for folder in pathlib.Path("./off_cooldown_bot/cogs").iterdir(): + bot.load_extension(f"off_cooldown_bot.cogs.{folder.name}") @bot.listen() async def on_ready() -> None: @@ -50,7 +44,3 @@ def main() -> None: # Run Discord bot bot.run(settings.params.discord_token) - - -if __name__ == "__main__": - main() diff --git a/off_cooldown_bot/cogs/commands/birthday.py b/off_cooldown_bot/cogs/commands/birthday.py index 7218033..5a5c731 100644 --- a/off_cooldown_bot/cogs/commands/birthday.py +++ b/off_cooldown_bot/cogs/commands/birthday.py @@ -3,13 +3,13 @@ from datetime import datetime import nextcord -from main import birthday_list from nextcord.ext import commands from pytz import UTC from sqlmodel import Session, col, select -from database.db import engine -from database.models import UserBirthday +from off_cooldown_bot.app import birthday_list +from off_cooldown_bot.database.db import engine +from off_cooldown_bot.database.models import UserBirthday class BirthdayCog(commands.Cog, name="Birthday Commands"): diff --git a/off_cooldown_bot/cogs/loops/daily_loop.py b/off_cooldown_bot/cogs/loops/daily_loop.py index 3ab2861..6eba47c 100644 --- a/off_cooldown_bot/cogs/loops/daily_loop.py +++ b/off_cooldown_bot/cogs/loops/daily_loop.py @@ -3,17 +3,17 @@ from datetime import UTC, datetime, time import nextcord -from logger import ocd_logger -from main import birthday_list from nextcord.ext import commands, tasks from pytz import timezone -from settings import settings from sqlalchemy import select from sqlalchemy.orm import Session from sqlmodel import col -from database.db import engine -from database.models import UserBirthday +from off_cooldown_bot.app import birthday_list +from off_cooldown_bot.database.db import engine +from off_cooldown_bot.database.models import UserBirthday +from off_cooldown_bot.logger import ocd_logger +from off_cooldown_bot.settings import settings class DailyLoop(commands.Cog, name="Daily Loop"): diff --git a/off_cooldown_bot/cogs/message_listener/__init__.py b/off_cooldown_bot/cogs/message_listener/__init__.py index 535e34a..257ecbf 100644 --- a/off_cooldown_bot/cogs/message_listener/__init__.py +++ b/off_cooldown_bot/cogs/message_listener/__init__.py @@ -1,9 +1,10 @@ """Defines cog for on message listener.""" import nextcord -from main import birthday_list from nextcord.ext import commands +from off_cooldown_bot.app import birthday_list + class SubmissionListener(commands.Cog, name="Message Listener"): """Sets up message listener.""" diff --git a/off_cooldown_bot/database/db.py b/off_cooldown_bot/database/db.py index 308b6a9..00c3d54 100644 --- a/off_cooldown_bot/database/db.py +++ b/off_cooldown_bot/database/db.py @@ -4,7 +4,7 @@ from sqlmodel import SQLModel, create_engine from . import models # noqa: F401 - Need this import for creating the models. -url = "sqlite:///database.db" +url = "sqlite:///database/database.db" engine = create_engine(url) SQLModel.metadata.create_all(engine)