From e95edf08df843c5e3617ea3e66da58594ac565f0 Mon Sep 17 00:00:00 2001 From: Corban-Lee Jones Date: Thu, 21 Dec 2023 18:27:30 +0000 Subject: [PATCH] command perms --- src/db/models.py | 1 + src/extensions/rss.py | 38 ++++++++++++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/db/models.py b/src/db/models.py index 13bd3e6..c462038 100644 --- a/src/db/models.py +++ b/src/db/models.py @@ -29,6 +29,7 @@ class AuditModel(Base): id = Column(Integer, primary_key=True, autoincrement=True) discord_user_id = Column(BigInteger, nullable=False) + discord_server_id = Column(BigInteger, nullable=False) message = Column(String, nullable=False) created = Column(DateTime(timezone=True), server_default=func.now(), nullable=False) # pylint: disable=E1102 diff --git a/src/extensions/rss.py b/src/extensions/rss.py index 0866127..60c4b72 100644 --- a/src/extensions/rss.py +++ b/src/extensions/rss.py @@ -9,7 +9,7 @@ from typing import Tuple import validators from feedparser import FeedParserDict, parse from discord.ext import commands -from discord import Interaction, Embed, Colour, TextChannel +from discord import Interaction, Embed, Colour, TextChannel, Permissions from discord.app_commands import Choice, Group, autocomplete, choices, rename from sqlalchemy import insert, select, and_, delete from sqlalchemy.exc import NoResultFound @@ -20,7 +20,8 @@ from db import ( # pylint: disable=E0401 DatabaseManager, SentArticleModel, RssSourceModel, - FeedChannelModel + FeedChannelModel, + AuditModel ) log = logging.getLogger(__name__) @@ -146,7 +147,8 @@ class FeedCog(commands.Cog): feed_group = Group( name="feed", description="Commands for rss sources.", - guild_only=True # We store guild IDs in the database, so guild only = True + guild_only=True, # We store guild IDs in the database, so guild only = True + default_permissions=Permissions.elevated() ) @feed_group.command(name="add") @@ -652,9 +654,10 @@ class FeedCog(commands.Cog): await followup(inter, embed=embed) admin_group = Group( - parent=feed_group, name="admin", - description="Administration tasks" + description="Administration tasks", + guild_only=True, + default_permissions=Permissions.elevated() ) @admin_group.command(name="clear-sent-articles") @@ -681,7 +684,30 @@ class FeedCog(commands.Cog): "again if they appear during the next RSS feed scan." ) - audit_group + audit_group = Group( + name="audit", + description="Check audited actions.", + guild_only=True, + default_permissions=Permissions.elevated() + ) + + @audit_group.command(name="check") + async def check_audit_log(self, inter: Interaction): + """Check the audit log. + + Parameters + ---------- + inter : Interaction + Represents an app command interaction. + """ + + await inter.response.defer() + + async with DatabaseManager() as database: + query = select(AuditModel).where(and_( + )) + result = await database.session.execute(query) + async def setup(bot): """