feat: black list for memes

This commit is contained in:
2025-03-28 14:00:14 +01:00
parent f3019d93b8
commit 2dc9604dc9
4 changed files with 56 additions and 4 deletions

View File

@@ -3,7 +3,7 @@ from typing import Literal
import discord
from discord import app_commands
from database import add_pattern
from database import add_pattern, add_user_to_blacklist
from bot.config import update_patterns
from bot.utils import compile_stats, fetch_game_stats, perform_search
@@ -44,6 +44,21 @@ async def setup(bot):
f"Pattern added!\n**Regex:** `{regex}`\n**Response:** `{response}`"
)
@bot.tree.command(
name="add_to_blacklist",
description="Add a user to the blacklist.",
guild=discord.Object(id=GUILD_ID),
)
@app_commands.checks.has_permissions(administrator=True)
async def add_to_blacklist_cmd(
interaction: discord.Interaction, user: discord.User, reason: str
):
"""Slash command to add a user to the blacklist."""
add_user_to_blacklist(user.id, reason)
await interaction.response.send_message(
f"User **{user.name}** has been added to the blacklist.\n**Reason:** `{reason}`"
)
@bot.tree.command(
name="search",
description="Search for servers by hostname or IP.",

View File

@@ -5,7 +5,7 @@ import discord
from bot.utils import timeout_member, aware_utcnow
from bot.config import message_patterns
from database import add_user_to_role
from database import add_user_to_role, is_user_blacklisted
BOT_LOG = 1112049391482703873
@@ -15,6 +15,7 @@ crazy_last_response_time = None
ALLOWED_CHANNELS = [
1110531063744303138, # GENERAL_CHANNEL
1112048063448617142, # off-topic
1145458108190163014, # mw2 general
1145456435518525611, # mw2 mp
1112016681880014928, # mw2 sp
@@ -327,6 +328,9 @@ async def handle_message(message, bot):
if message.channel.id not in ALLOWED_CHANNELS:
return
if is_user_blacklisted(message.author.id):
return
# Check if any of the patterns match the message
# print('Checking for patterns...')
for pattern in message_patterns:

View File

@@ -87,12 +87,39 @@ def add_user_to_role(user_id: int, role_id: int, user_name: str):
conn.close()
def user_has_role(user_id: int):
def user_has_role(user_id: int) -> bool:
"""Checks if a user is in the database."""
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute("SELECT * FROM user_roles WHERE user_id = ?", (user_id,))
cursor.execute("SELECT 1 FROM user_roles WHERE user_id = ?", (user_id,))
result = cursor.fetchone()
conn.close()
return result is not None
def add_user_to_blacklist(user_id: int, reason: str):
"""Adds a user to the blacklist."""
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute(
"INSERT OR IGNORE INTO black_list (user_id, date_assigned, reason) VALUES (?, ?, ?)",
(user_id, aware_utcnow().isoformat(), reason),
)
conn.commit()
conn.close()
def is_user_blacklisted(user_id: int) -> bool:
"""Checks if a user is on the blacklist."""
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute("SELECT 1 FROM black_list WHERE user_id = ?", (user_id,))
result = cursor.fetchone()
conn.close()

View File

@@ -10,3 +10,9 @@ CREATE TABLE IF NOT EXISTS user_roles (
date_assigned TEXT,
user_name TEXT
);
CREATE TABLE IF NOT EXISTS black_list (
user_id INTEGER PRIMARY KEY,
date_assigned TEXT,
reason TEXT
);