Skip to content
2 changes: 1 addition & 1 deletion src/Dockerfile-api
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ ENV HOME="/api" \
PATH="/api/.venv/bin:$PATH"

EXPOSE ${FLASK_RUN_PORT}
CMD ["sh", "-c", "exec gunicorn -w 2 --timeout 60 --graceful-timeout 30 --access-logfile - --error-logfile - -b 0.0.0.0:${FLASK_RUN_PORT} --chdir /api/src/api 'api:create_app()'"]
CMD ["sh", "-c", "exec gunicorn -w 2 --timeout 60 --graceful-timeout 30 --access-logfile - --error-logfile - -b 0.0.0.0:${FLASK_RUN_PORT} --chdir /api 'src.api.api:create_app()'"]
17 changes: 9 additions & 8 deletions src/api/api.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
import logging
import os

from __logger__ import setup_logger
from core.db_helper import DB
from flask import Flask, jsonify
from routes.healthchecks import health_checks
from routes.logging import logs
from routes.parameters import parameters
from routes.points import points
from routes.roles import role
from routes.settings import settings
from werkzeug.exceptions import HTTPException

from src.api.__logger__ import setup_logger
Comment thread
Xarlos89 marked this conversation as resolved.
from src.api.core.db_helper import DB
from src.api.routes.healthchecks import health_checks
from src.api.routes.logging import logs
from src.api.routes.parameters import parameters
from src.api.routes.points import points
from src.api.routes.roles import role
from src.api.routes.settings import settings

logger = logging.getLogger(__name__)

TROOPHY = {"1", "true", "yes", "on"}
Expand Down
2 changes: 1 addition & 1 deletion src/bot/botrunner.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env bash

export GIT_HASH=$(cat /commit_hash.txt)
uv run --frozen --no-cache --no-dev --package eos-bot python src/bot/main.py
uv run --frozen --no-cache --no-dev --package eos-bot python -m src.bot.main
27 changes: 27 additions & 0 deletions src/bot/cogs/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from __future__ import annotations

from typing import TYPE_CHECKING

from discord.ext import commands

if TYPE_CHECKING:
from logging import Logger


__all__ = ("BaseCog",)


class BaseCog(commands.Cog):
"""The base cog which comes along with basic logging."""

def __init__(self, logger: None | Logger = None) -> None:
super().__init__()
self.logger: None | Logger = logger

async def cog_load(self) -> None:
if self.logger:
self.logger.info(f"Cog: {self.qualified_name} has been loaded.")

async def cog_unload(self) -> None:
if self.logger:
self.logger.info(f"Cog: {self.qualified_name} has been unloaded.")
6 changes: 5 additions & 1 deletion src/bot/cogs/admin/healthchecks.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import discord
from discord.ext import commands

from src.bot.cogs import BaseCog

logger = logging.getLogger(__name__)


Expand All @@ -30,8 +32,10 @@ def embed_hc(api, db, uptime, git_hash):
return embed


class Health(commands.Cog):
class Health(BaseCog):
def __init__(self, bot: commands.Bot) -> None:
super().__init__(logger)

self.bot = bot

@commands.hybrid_command()
Expand Down
7 changes: 5 additions & 2 deletions src/bot/cogs/admin/points.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
import discord
from discord.ext import commands

from .._checks import is_admin, is_master_guild
from src.bot.cogs import BaseCog
from src.bot.cogs._checks import is_admin, is_master_guild

logger = logging.getLogger(__name__)

Expand All @@ -23,7 +24,7 @@ def embed_info(title, message, color):
return embed


class Points(commands.Cog):
class Points(BaseCog):
"""
This cog manages a points-based system for Discord guild members.

Expand All @@ -40,6 +41,8 @@ class Points(commands.Cog):

def __init__(self, bot: commands.Bot) -> None:
"""Initialization of the points Class"""
super().__init__(logger)

self.bot = bot

@is_admin()
Expand Down
7 changes: 5 additions & 2 deletions src/bot/cogs/admin/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
import discord
from discord.ext import commands

from .._checks import is_admin, is_master_guild
from src.bot.cogs import BaseCog
from src.bot.cogs._checks import is_admin, is_master_guild

logger = logging.getLogger(__name__)

Expand All @@ -18,12 +19,14 @@ def sanitize_string(input_string):
return "".join(char for char in input_string if ord(char) < 128)


class Settings(commands.Cog):
class Settings(BaseCog):
"""
Settings Cog for managing various settings of the bot.
"""

def __init__(self, bot: commands.Bot) -> None:
super().__init__(logger)

self.bot = bot

@is_master_guild()
Expand Down
7 changes: 5 additions & 2 deletions src/bot/cogs/admin/sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@

from discord.ext import commands

from .._checks import is_admin, is_master_guild
from src.bot.cogs import BaseCog
from src.bot.cogs._checks import is_admin, is_master_guild

logger = logging.getLogger(__name__)


class CommandSync(commands.Cog):
class CommandSync(BaseCog):
def __init__(self, bot: commands.Bot) -> None:
super().__init__(logger)

self.bot = bot

@commands.command(name="sync")
Expand Down
6 changes: 5 additions & 1 deletion src/bot/cogs/features/general_catfact.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,19 @@
import aiohttp
from discord.ext import commands

from src.bot.cogs import BaseCog

logger = logging.getLogger(__name__)


class GeneralCatFact(commands.Cog):
class GeneralCatFact(BaseCog):
"""
# Hits the catfact API and returns the response.
"""

def __init__(self, bot):
super().__init__(logger)

self.bot = bot

@commands.hybrid_command(name="catfact")
Expand Down
5 changes: 4 additions & 1 deletion src/bot/cogs/features/general_google.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,18 @@

from discord.ext import commands

from src.bot.cogs import BaseCog

logger = logging.getLogger(__name__)


class GeneralSarcasticGoogle(commands.Cog):
class GeneralSarcasticGoogle(BaseCog):
"""
# Creates a link to the Let me google that for you site.
"""

def __init__(self, bot):
super().__init__(logger)
self.bot = bot

@commands.hybrid_command(name="google")
Expand Down
11 changes: 9 additions & 2 deletions src/bot/cogs/features/latex.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
from discord import app_commands
from discord.ext import commands

from ..constants import LATEX_COLORS
from src.bot.cogs import BaseCog
from src.bot.cogs.constants import LATEX_COLORS

logger = logging.getLogger(__name__)

Expand All @@ -29,19 +30,25 @@ def embed_info(title: str, message: str, image_url: str | None = None) -> discor
return embed


class LaTeX(commands.Cog):
class LaTeX(BaseCog):
"""
# Generates a LaTeX equation image using the CodeCogs API and displays it in an embed.
"""

def __init__(self, bot: commands.Bot):
super().__init__(logger)

self.bot = bot
self.session: aiohttp.ClientSession | None = None

async def cog_load(self) -> None:
await super().cog_load()

self.session = aiohttp.ClientSession()

async def cog_unload(self) -> None:
await super().cog_unload()

if self.session:
await self.session.close()

Expand Down
12 changes: 9 additions & 3 deletions src/bot/cogs/features/monthly_yapathon.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
import logging
import os

from discord.ext import commands, tasks
from discord.ext import tasks
from discord.utils import get

from src.bot.cogs import BaseCog

logger = logging.getLogger(__name__)


Expand All @@ -17,20 +19,24 @@
DATE = 1


class MonthlyYapathon(commands.Cog):
class MonthlyYapathon(BaseCog):
"""
This cog deals with all the stuff of monthly yapathon.
"""

def __init__(self, bot):
super().__init__(logger)

self.bot = bot
self.yapper_role_id = self.bot.api.get_one_role("8")["role"]["value"]
self.announcement_channel_id = self.bot.api.get_one_setting("5")["setting"][
"value"
]
self.appoint_monthly_yapper.start()

def cog_unload(self):
async def cog_unload(self):
await super().cog_unload()

self.appoint_monthly_yapper.cancel()

@tasks.loop(time=TIME)
Expand Down
6 changes: 5 additions & 1 deletion src/bot/cogs/features/run_code.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
from discord.ext.commands import Bot, Context
from ultra_piston import File, PistonClient

from src.bot.cogs import BaseCog

logger = logging.getLogger(__name__)

TRUNCATED_MESSAGE: str = "\n```\n```\nOutput too long. Message truncated.\n```"
Expand All @@ -20,10 +22,12 @@
# Discord character limit is 4096, but to prevent spamming, we reduce it to 1K


class UtilityRunCode(commands.Cog):
class UtilityRunCode(BaseCog):
"""Uses PistonAPI to run code in the server."""

def __init__(self, bot: Bot):
super().__init__(logger)

self.bot = bot
PISTON_API_TOKEN = os.environ.get("PISTON_API_TOKEN")
if not PISTON_API_TOKEN:
Expand Down
6 changes: 5 additions & 1 deletion src/bot/cogs/features/ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,19 @@
from discord import app_commands
from discord.ext import commands

from src.bot.cogs import BaseCog

logger = logging.getLogger(__name__)


class AddTicketButton(commands.Cog):
class AddTicketButton(BaseCog):
"""
This is the slash command that sends our UI element.
"""

def __init__(self, bot):
super().__init__(logger)

self.bot = bot

@app_commands.command(description="Make a ticket and contact the Staff.")
Expand Down
6 changes: 5 additions & 1 deletion src/bot/cogs/logging/logging_avatars.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import discord
from discord.ext import commands

from src.bot.cogs import BaseCog

logger = logging.getLogger(__name__)


Expand All @@ -27,12 +29,14 @@ def embed_avatar(before, after):
return embed


class LoggingAvatars(commands.Cog):
class LoggingAvatars(BaseCog):
"""
Simple listener to on_user_update
"""

def __init__(self, bot):
super().__init__(logger)

self.bot = bot
self.user_log = self.bot.api.get_one_log_setting("4") # User_log

Expand Down
6 changes: 5 additions & 1 deletion src/bot/cogs/logging/logging_member_ban.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import discord
from discord.ext import commands

from src.bot.cogs import BaseCog

logger = logging.getLogger(__name__)


Expand All @@ -25,13 +27,15 @@ def embed_ban(some_member, audit_log_entry):
return embed


class LoggingBans(commands.Cog):
class LoggingBans(BaseCog):
"""
Simple listener to on_member_remove
then checks the audit log for exact details
"""

def __init__(self, bot):
super().__init__(logger)

self.bot = bot
self.verification_role = self.bot.api.get_one_role("6")["role"][
"value"
Expand Down
6 changes: 5 additions & 1 deletion src/bot/cogs/logging/logging_member_kick.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import discord
from discord.ext import commands

from src.bot.cogs import BaseCog

logger = logging.getLogger(__name__)


Expand All @@ -26,13 +28,15 @@ def embed_kick(some_member, audit_log_entry):
return embed


class LoggingKicks(commands.Cog):
class LoggingKicks(BaseCog):
"""
Simple listener to on_member_remove
then checks the audit log for exact details
"""

def __init__(self, bot):
super().__init__(logger)

self.bot = bot
self.verification_role = self.bot.api.get_one_role("6")["role"][
"value"
Expand Down
Loading
Loading