dd8f068e88
FIX: Import for user_data has been corrected to use the correct folder now.
51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
import sqlite3
|
|
import os
|
|
from logger import logger
|
|
|
|
|
|
class ConsentManager:
|
|
def __init__(self, db_path="data/elysia.db"):
|
|
self.db_path = db_path
|
|
self.ensure_db()
|
|
|
|
def ensure_db(self):
|
|
os.makedirs(os.path.dirname(self.db_path), exist_ok=True)
|
|
|
|
conn = sqlite3.connect(self.db_path)
|
|
cursor = conn.cursor()
|
|
cursor.execute("""CREATE TABLE IF NOT EXISTS consents (
|
|
user_id INTEGER,
|
|
guild_id INTEGER,
|
|
consent INTEGER,
|
|
PRIMARY KEY (user_id, guild_id)
|
|
);""")
|
|
conn.commit()
|
|
conn.close()
|
|
logger.info("Consent table ensured")
|
|
|
|
async def request_consent(self, interaction):
|
|
await interaction.response.send_message(
|
|
"To use this feature, please consent to our data policy. "
|
|
"Type `/consent` to agree, or `/decline` to disagree.",
|
|
ephemeral=True
|
|
)
|
|
|
|
def give_consent(self, user_id, guild_id):
|
|
conn = sqlite3.connect(self.db_path)
|
|
cursor = conn.cursor()
|
|
cursor.execute("""INSERT INTO consents (user_id, guild_id, consent)
|
|
VALUES (?, ?, 1) ON CONFLICT(user_id, guild_id)
|
|
DO UPDATE SET consent = 1;""",
|
|
(user_id, guild_id))
|
|
conn.commit()
|
|
conn.close()
|
|
logger.info(f"User {user_id} consented to data storage.")
|
|
|
|
def has_consent(self, user_id, guild_id):
|
|
conn = sqlite3.connect(self.db_path)
|
|
cursor = conn.cursor()
|
|
cursor.execute("SELECT consent FROM consents WHERE user_id = ? AND guild_id = ?", (user_id, guild_id))
|
|
row = cursor.fetchone()
|
|
conn.close()
|
|
return row and row[0] == 1 # Returns True if consent is given
|