DOC: Added sample.env to allow other people to use the bot

FEAT: Added seperate set of commands focused strictly on GDPR
REF: Updated the other files to reflect the new changes.
This commit is contained in:
Dan 2024-06-19 09:44:04 -04:00
parent 27b051f9eb
commit 8616a01469
4 changed files with 75 additions and 21 deletions

View File

@ -5,29 +5,13 @@ import aiosqlite
import os import os
import sys import sys
import subprocess import subprocess
from gdpr import check_consent, give_consent, revoke_consent from gdpr import check_consent
class ModCommands(commands.Cog): class ModCommands(commands.Cog):
def __init__(self, bot): def __init__(self, bot):
self.bot = bot self.bot = bot
@app_commands.command(name="consent",
description="Give consent to store data")
async def consent(self, interaction: discord.Interaction):
await give_consent(interaction.user.id)
await interaction.response.send_message(
"Consent given to store your data."
)
@app_commands.command(name="revoke_consent",
description="Revoke consent to store data")
async def revoke_consent(self, interaction: discord.Interaction):
await revoke_consent(interaction.user.id)
await interaction.response.send_message(
"Consent revoked and your data has been deleted."
)
@app_commands.command(name="addnote", @app_commands.command(name="addnote",
description="Add a note to a user and optionally " description="Add a note to a user and optionally "
"add strikes") "add strikes")
@ -49,8 +33,8 @@ class ModCommands(commands.Cog):
notes = row[0] + "\n" + note notes = row[0] + "\n" + note
current_strikes = row[1] + strikes current_strikes = row[1] + strikes
await db.execute( await db.execute(
"UPDATE user_notes SET notes = ?," "UPDATE user_notes SET notes = ?, strikes = ? "
"strikes = ? WHERE user_id = ?", "WHERE user_id = ?",
(notes, current_strikes, user.id) (notes, current_strikes, user.id)
) )
else: else:

67
gdpr_commands.py Normal file
View File

@ -0,0 +1,67 @@
import discord
from discord import app_commands
from discord.ext import commands
import aiosqlite
from gdpr import check_consent, give_consent, revoke_consent
class GDPRCommands(commands.Cog):
def __init__(self, bot):
self.bot = bot
@app_commands.command(name="consent",
description="Give consent to store data")
async def consent(self, interaction: discord.Interaction):
await give_consent(interaction.user.id)
await interaction.response.send_message(
"Consent given to store your data."
)
@app_commands.command(name="revoke_consent",
description="Revoke consent to store data")
async def revoke_consent(self, interaction: discord.Interaction):
await revoke_consent(interaction.user.id)
await interaction.response.send_message(
"Consent revoked and your data has been deleted."
)
@app_commands.command(name="privacy_policy",
description="View the privacy policy")
async def privacy_policy(self, interaction: discord.Interaction):
privacy_text = (
"Privacy Policy:\n"
"We collect and store data to provide better services. The data "
"includes:\n"
"- User ID\n"
"- Notes and Strikes added by moderators\n"
"Data is stored securely and only accessible by authorized "
"personnel.\n"
"You can revoke consent at any time by using the /revoke_consent "
"command.\n"
"For more details, visit our [website](https://example.com/privacy)." # noqa: E501
)
await interaction.response.send_message(privacy_text)
@app_commands.command(name="get_my_data",
description="Get a copy of your data")
async def get_my_data(self, interaction: discord.Interaction):
user_id = interaction.user.id
async with aiosqlite.connect("ariella.db") as db:
cursor = await db.execute(
"SELECT notes, strikes FROM user_notes WHERE user_id = ?",
(user_id,)
)
row = await cursor.fetchone()
if row:
notes, strikes = row
data_text = f"Your data:\nNotes: {notes}\nStrikes: {strikes}"
await interaction.user.send(data_text)
await interaction.response.send_message(
"Your data has been sent to you privately."
)
else:
await interaction.response.send_message("No data found for you.") # noqa: E501
async def setup(bot):
await bot.add_cog(GDPRCommands(bot))

View File

@ -9,8 +9,8 @@ from dotenv import load_dotenv
load_dotenv() load_dotenv()
GUILD_ID = int(os.getenv('GUILD_ID'))
TOKEN = os.getenv('DISCORD_TOKEN') TOKEN = os.getenv('DISCORD_TOKEN')
GUILD_ID = int(os.getenv('GUILD_ID'))
intents = discord.Intents.default() intents = discord.Intents.default()
intents.message_content = True intents.message_content = True
@ -19,10 +19,11 @@ intents.members = True
class Ariella(commands.Bot): class Ariella(commands.Bot):
def __init__(self): def __init__(self):
super().__init__(command_prefix='!', intents=intents) super().__init__(intents=intents)
async def setup_hook(self): async def setup_hook(self):
await self.load_extension('commands') await self.load_extension('commands')
await self.load_extension('gdpr_commands')
self.tree.copy_global_to(guild=discord.Object(id=GUILD_ID)) self.tree.copy_global_to(guild=discord.Object(id=GUILD_ID))
await self.tree.sync(guild=discord.Object(id=GUILD_ID)) await self.tree.sync(guild=discord.Object(id=GUILD_ID))

2
sample.env Normal file
View File

@ -0,0 +1,2 @@
DISCORD_TOKEN = "ADD YOUR TOKEN HERE"
GUILD_ID = "ADD YOUR GUILD ID HERE"