Redid Dolly's code

This commit is contained in:
Dan
2024-05-03 22:38:27 -04:00
parent 4ea2ffb162
commit e28176b558
4 changed files with 80 additions and 0 deletions

15
dolly/commands.py Normal file
View File

@ -0,0 +1,15 @@
import discord
from discord import app_commands
from .database import add_project, add_task
class DollyProjectTrackerCommands(app_commands.Group):
@tree.command(name="create-project", description="Create a new project in the database.")
async def create_project(self, interaction: discord.Interaction, name: str, description: str):
await add_project(name, description)
await interaction.response.send_message(f"Project `{name}` created successfully.")
@tree.command(name="add-task", description="Add a new task to a project in the database.")
async def add_task(self, interaction: discord.Interaction, project_name: str, description: str, assignee: str, deadline: str, status: str, priority: str):
await add_task(project_name, description, assignee, deadline, status, priority)
await interaction.response.send_message(f"Task `{description}` added to project `{project_name}` successfully.")

35
dolly/database.py Normal file
View File

@ -0,0 +1,35 @@
import aiosqlite
from datetime import datetime
DATABASE = "dolly.db"
async def setup_db():
async with aiosqlite.connect(DATABASE) as db:
await db.execute('''CREATE TABLE IF NOT EXISTS projects (
id INTEGER PRIMARY KEY,
name TEXT UNIQUE,
description TEXT)'''
)
await db.execute('''CREATE TABLE IF NOT EXISTS tasks (
id INTEGER PRIMARY KEY,
project_id INTEGER,
description TEXT,
assignee text,
deadline DATE,
status TEXT,
priority TEXT,
FOREIGN KEY(project_id) REFERENCES projects(id))'''
)
await db.commit()
async def add_project(name, description):
async with aiosqlite.connect(DATABASE) as db:
await db.execute("INSERT INTO projects (name, description) VALUES (?, ?)", (name, description))
await db.commit()
async def add_task(project_id, description, assignee, deadline, status, priority):
deadline_date = datetime.strptime(deadline, '%Y-%m-%d').date()
async with aiosqlite.connect(DATABASE) as db:
await db.execute("INSERT INTO tasks (project_id, description, assignee, deadline, status, priority) VALUES (?, ?, ?, ?, ?, ?)",
(project_id, description, assignee, deadline_date, status, priority))
await db.commit()

16
dolly/dolly.py Normal file
View File

@ -0,0 +1,16 @@
import discord
from discord import app_commands
from .commands import DollyProjectTrackerCommands
class Dolly(discord.Client):
def __init__(self):
super().__init__(intents=discord.Intents.default())
self.tree = app_commands.CommandTree(self)
self.tree.add_command(DollyProjectTrackerCommands())
async def setup_hook(self):
await self.tree.sync()
async def on_ready(self):
print(f"Logged in as {self.user} (ID: {self.user.id})\n------")

14
main.py Normal file
View File

@ -0,0 +1,14 @@
from dolly.dolly import Dolly
from dolly.database import setup_db
import asyncio
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_BOT_TOKEN')
async def main():
await setup_db()
client = Dolly()
await client.start(TOKEN)
asyncio.run(main())