diff --git a/contest/client.py b/contest/client.py index f220e0d..ff8e5d4 100644 --- a/contest/client.py +++ b/contest/client.py @@ -1,11 +1,21 @@ +import logging + import discord as discord +from contest import constants +from contest.db import ContestDatabase + +logger = logging.getLogger(__file__) +logger.setLevel(constants.LOGGING_LEVEL) + class ContestClient(discord.Client): def __init__(self, **options) -> None: super().__init__(**options) + self.db = ContestDatabase.create() - async def on_message(self) -> None: + async def on_message(self, message: discord.Message) -> None: + prefix = message.guild pass async def on_raw_reaction_add(self, payload) -> None: diff --git a/contest/constants.py b/contest/constants.py index c17ca14..ce88b9d 100644 --- a/contest/constants.py +++ b/contest/constants.py @@ -1 +1,4 @@ +import logging + DATABASE = 'database.db' +LOGGING_LEVEL = logging.DEBUG diff --git a/contest/db.py b/contest/db.py index f33f01b..b40492a 100644 --- a/contest/db.py +++ b/contest/db.py @@ -1,16 +1,22 @@ +import logging import sqlite3 import aiosqlite from contest import constants +logger = logging.getLogger(__file__) +logger.setLevel(constants.LOGGING_LEVEL) + class ContestDatabase(object): """ A handler class for a SQLite3 database used by the bot with Async support. """ + def __init__(self, conn: aiosqlite.Connection) -> None: - self.db = conn + self.conn = conn + self.setup() @classmethod async def create(cls) -> 'ContestDatabase': @@ -23,5 +29,37 @@ class ContestDatabase(object): await conn.commit() return db - async def is_setup(self): - pass + async def setup(self) -> None: + """Sets up the tables for initial database creation""" + await self.conn.execute('''CREATE TABLE IF NOT EXISTS guild + (id INTEGER PRIMARY KEY, + prefix TEXT DEFAULT '$', + submission INTEGER NULLABLE)''') + + async def setup_guild(self, guild_id: int) -> None: + """Sets up a guild in the database.""" + await self.conn.execute('''INSERT INTO guild (id) VALUES (?)''', [guild_id]) + + async def set_prefix(self, guild_id: int, new_prefix: str) -> None: + """Updates the prefix for a specific guild in the database""" + await self.conn.execute('''UPDATE guild SET prefix = ? WHERE id = ?''', [new_prefix, guild_id]) + + async def is_setup(self, guild_id: int) -> bool: + """Checks whether the bot is setup to complete submission channel related commands.""" + cur = await self.conn.cursor() + try: + await cur.execute('''SELECT submission FROM guild WHERE id = ?''', [guild_id]) + t = await cur.fetchone() + print(t) + return t['submission'] + finally: + await cur.close() + + async def get_prefix(self, guild_id: int) -> str: + """Gets the prefix from a specific guild in the database.""" + cur = await self.conn.cursor() + try: + await cur.execute('''SELECT prefix FROM guild WHERE id = ?''', [guild_id]) + return (await cur.fetchone())['prefix'] + finally: + await cur.close()