Archived
generated from imcompiling/discord-bot-template
Compare commits
17
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a09845dfb8 | ||
|
|
a86b01292f | ||
|
|
1ad68f4014 | ||
|
|
3aa0bf291f | ||
|
|
b727a80e4f | ||
|
|
857b5f1669 | ||
|
|
34cd2f9975 | ||
|
|
6af2476339 | ||
|
|
4a3f356b23 | ||
|
|
4fe2339ac1 | ||
|
|
2069b2544f | ||
|
|
901bcf3c62 | ||
|
|
8e8f84a42e | ||
|
|
cd241e6f5e | ||
|
|
93d9b565c0 | ||
|
|
c816d3b5b8 | ||
|
|
91900f2b00 |
@@ -0,0 +1,4 @@
|
|||||||
|
.*
|
||||||
|
Dockerfile
|
||||||
|
renovate.json
|
||||||
|
README.md
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# see https://editorconfig.org/
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
|
[*.{yml,yaml}]
|
||||||
|
indent_size = 2
|
||||||
@@ -19,7 +19,7 @@ jobs:
|
|||||||
- name: Install Docker
|
- name: Install Docker
|
||||||
uses: https://github.com/papodaca/install-docker-action@v1
|
uses: https://github.com/papodaca/install-docker-action@v1
|
||||||
- name: Log into container registry
|
- name: Log into container registry
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: gitea.cheezers.org
|
registry: gitea.cheezers.org
|
||||||
username: imcompiling
|
username: imcompiling
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ jobs:
|
|||||||
- name: Install Docker
|
- name: Install Docker
|
||||||
uses: https://github.com/papodaca/install-docker-action@v1
|
uses: https://github.com/papodaca/install-docker-action@v1
|
||||||
- name: Log into container registry
|
- name: Log into container registry
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: gitea.cheezers.org
|
registry: gitea.cheezers.org
|
||||||
username: imcompiling
|
username: imcompiling
|
||||||
password: $${{ secrets.PASSWORD }}
|
password: ${{ secrets.PASSWORD }}
|
||||||
- name: Build Docker Image
|
- name: Build Docker Image
|
||||||
run: docker build -t gitea.cheezers.org/imcompiling/off-cooldown-bot:latest .
|
run: docker build -t gitea.cheezers.org/imcompiling/off-cooldown-bot:latest .
|
||||||
- name: Push Docker Image
|
- name: Push Docker Image
|
||||||
|
|||||||
Vendored
+5
-4
@@ -1,8 +1,9 @@
|
|||||||
{
|
{
|
||||||
"recommendations": [
|
"recommendations": [
|
||||||
"ms-python.vscode-pylance",
|
"ms-python.vscode-pylance",
|
||||||
"ms-python.python",
|
"ms-python.python",
|
||||||
"ms-python.debugpy",
|
"ms-python.debugpy",
|
||||||
"charliermarsh.ruff"
|
"charliermarsh.ruff",
|
||||||
|
"editorconfig.editorconfig"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+5
-5
@@ -5,11 +5,11 @@
|
|||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
"name": "Python: Module",
|
"name": "Python: Module",
|
||||||
"type": "debugpy",
|
"type": "debugpy",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"module": "main",
|
"module": "off_cooldown_bot.main",
|
||||||
"justMyCode": true
|
"justMyCode": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+2
-5
@@ -4,8 +4,5 @@
|
|||||||
"reportArgumentType": "information",
|
"reportArgumentType": "information",
|
||||||
"reportAttributeAccessIssue": "warning"
|
"reportAttributeAccessIssue": "warning"
|
||||||
},
|
},
|
||||||
"cSpell.words": [
|
"cSpell.words": ["cakeday", "cakedays", "cooldown", "nextcord"]
|
||||||
"cakeday",
|
}
|
||||||
"cakedays"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|||||||
+4
-8
@@ -3,14 +3,10 @@ FROM python:3.12.3-slim
|
|||||||
# install uv
|
# install uv
|
||||||
COPY --from=ghcr.io/astral-sh/uv:0.6.5 /uv /uvx /bin/
|
COPY --from=ghcr.io/astral-sh/uv:0.6.5 /uv /uvx /bin/
|
||||||
|
|
||||||
WORKDIR /home
|
COPY . /off_cooldown_bot
|
||||||
|
|
||||||
COPY config.py config.py
|
|
||||||
COPY main.py main.py
|
|
||||||
COPY pyproject.toml pyproject.toml
|
|
||||||
|
|
||||||
COPY cogs cogs/
|
|
||||||
|
|
||||||
|
# Sync the project into a new environment, using the frozen lockfile
|
||||||
|
WORKDIR /off_cooldown_bot
|
||||||
RUN uv sync --frozen --no-dev
|
RUN uv sync --frozen --no-dev
|
||||||
|
|
||||||
CMD ["uv", "run", "./main.py"]
|
CMD ["uv", "run", "./off_cooldown_bot/main.py"]
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
"""
|
|
||||||
File contains classes defining the Hydra configuraton structure.
|
|
||||||
"""
|
|
||||||
from dataclasses import dataclass
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class Params:
|
|
||||||
"""
|
|
||||||
Class defines the various configuration parameters.
|
|
||||||
"""
|
|
||||||
|
|
||||||
discord_token: str
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
|
||||||
class BotConfig:
|
|
||||||
"""
|
|
||||||
Class defines all configs required for Dakiny Bot.
|
|
||||||
"""
|
|
||||||
|
|
||||||
params: Params
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
"""Empty init file for off_cooldown_bot module."""
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from nextcord.ext import commands
|
from nextcord.ext import commands
|
||||||
|
|
||||||
from cogs.commands.birthday import BirthdayCog
|
from .birthday import BirthdayCog
|
||||||
|
|
||||||
|
|
||||||
# This function will be called when this extension is loaded.
|
# This function will be called when this extension is loaded.
|
||||||
@@ -7,9 +7,9 @@ from nextcord.ext import commands
|
|||||||
from pytz import UTC
|
from pytz import UTC
|
||||||
from sqlmodel import Session, col, select
|
from sqlmodel import Session, col, select
|
||||||
|
|
||||||
from database.db import engine
|
from off_cooldown_bot.database.db import engine
|
||||||
from database.models import UserBirthday
|
from off_cooldown_bot.database.models import UserBirthday
|
||||||
from main import birthday_list
|
from off_cooldown_bot.main import birthday_list
|
||||||
|
|
||||||
|
|
||||||
class BirthdayCog(commands.Cog, name="Birthday Commands"):
|
class BirthdayCog(commands.Cog, name="Birthday Commands"):
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
from nextcord.ext import commands
|
from nextcord.ext import commands
|
||||||
|
|
||||||
from cogs.loops.bot_presence import BotPresence
|
from .bot_presence import BotPresence
|
||||||
from cogs.loops.daily_loop import DailyLoop
|
from .daily_loop import DailyLoop
|
||||||
|
|
||||||
|
|
||||||
def setup(bot: commands.Bot) -> None:
|
def setup(bot: commands.Bot) -> None:
|
||||||
@@ -9,11 +9,11 @@ from sqlalchemy import select
|
|||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from sqlmodel import col
|
from sqlmodel import col
|
||||||
|
|
||||||
from database.db import engine
|
from off_cooldown_bot.database.db import engine
|
||||||
from database.models import UserBirthday
|
from off_cooldown_bot.database.models import UserBirthday
|
||||||
from logger import ocd_logger
|
from off_cooldown_bot.logger import ocd_logger
|
||||||
from main import birthday_list
|
from off_cooldown_bot.main import birthday_list
|
||||||
from settings import settings
|
from off_cooldown_bot.settings import settings
|
||||||
|
|
||||||
|
|
||||||
class DailyLoop(commands.Cog, name="Daily Loop"):
|
class DailyLoop(commands.Cog, name="Daily Loop"):
|
||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
import nextcord
|
import nextcord
|
||||||
from nextcord.ext import commands
|
from nextcord.ext import commands
|
||||||
|
|
||||||
from main import birthday_list
|
from off_cooldown_bot.main import birthday_list
|
||||||
|
|
||||||
|
|
||||||
class SubmissionListener(commands.Cog, name="Message Listener"):
|
class SubmissionListener(commands.Cog, name="Message Listener"):
|
||||||
@@ -7,5 +7,4 @@ from . import models # noqa: F401 - Need this import for creating the models.
|
|||||||
url = "sqlite:///database.db"
|
url = "sqlite:///database.db"
|
||||||
engine = create_engine(url)
|
engine = create_engine(url)
|
||||||
|
|
||||||
# Don't need to create all when connected to prod.
|
|
||||||
SQLModel.metadata.create_all(engine)
|
SQLModel.metadata.create_all(engine)
|
||||||
@@ -8,8 +8,8 @@ import pathlib
|
|||||||
import nextcord
|
import nextcord
|
||||||
from nextcord.ext import commands
|
from nextcord.ext import commands
|
||||||
|
|
||||||
from logger import ocd_logger
|
from .logger import ocd_logger
|
||||||
from settings import settings
|
from .settings import settings
|
||||||
|
|
||||||
nextcord_logger = logging.getLogger("nextcord")
|
nextcord_logger = logging.getLogger("nextcord")
|
||||||
nextcord_logger.setLevel(logging.DEBUG)
|
nextcord_logger.setLevel(logging.DEBUG)
|
||||||
@@ -30,7 +30,7 @@ def main() -> None:
|
|||||||
intents.message_content = True
|
intents.message_content = True
|
||||||
|
|
||||||
# To enable the guilds privileged intent:
|
# To enable the guilds privileged intent:
|
||||||
# intents.guilds = True
|
# intents.guilds = True # noqa: ERA001
|
||||||
|
|
||||||
# To enable the members privileged intent:
|
# To enable the members privileged intent:
|
||||||
intents.members = True
|
intents.members = True
|
||||||
@@ -47,7 +47,7 @@ def main() -> None:
|
|||||||
if bot.user is None:
|
if bot.user is None:
|
||||||
ocd_logger.critical("Discord connection failed.")
|
ocd_logger.critical("Discord connection failed.")
|
||||||
return
|
return
|
||||||
ocd_logger.info(f"{bot.user.name} has connected to Discord!")
|
ocd_logger.info("%s has connected to Discord!", bot.user.name)
|
||||||
|
|
||||||
# Run Discord bot
|
# Run Discord bot
|
||||||
bot.run(settings.params.discord_token)
|
bot.run(settings.params.discord_token)
|
||||||
@@ -35,3 +35,7 @@ class Settings(YAMLWizard):
|
|||||||
|
|
||||||
|
|
||||||
settings = Settings.from_yaml_file(CONFIG_LOCATION)
|
settings = Settings.from_yaml_file(CONFIG_LOCATION)
|
||||||
|
|
||||||
|
# I'm not expecting a list to be returned.
|
||||||
|
if isinstance(settings, list):
|
||||||
|
settings = settings[0]
|
||||||
@@ -6,7 +6,6 @@ authors = [{ name = "imcompiling", email = "[email protected]" }]
|
|||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"nextcord>=2.6.0",
|
"nextcord>=2.6.0",
|
||||||
"python-dotenv>=1.0.1",
|
|
||||||
"sqlmodel>=0.0.22",
|
"sqlmodel>=0.0.22",
|
||||||
"dataclass-wizard[yaml]>=0.22.3,<1.0.0",
|
"dataclass-wizard[yaml]>=0.22.3,<1.0.0",
|
||||||
"pytz>=2025.1",
|
"pytz>=2025.1",
|
||||||
|
|||||||
Reference in New Issue
Block a user