From bfe2b323da32e4b2dc87002404100655b500c6a8 Mon Sep 17 00:00:00 2001 From: snipe <72265661+notsniped@users.noreply.github.com> Date: Thu, 9 Mar 2023 05:15:25 +0000 Subject: [PATCH 1/3] Add functions in moderation library for making guild id and user id keys in warnings db --- cogs/moderation.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/cogs/moderation.py b/cogs/moderation.py index 1b3357c4..5db11112 100644 --- a/cogs/moderation.py +++ b/cogs/moderation.py @@ -14,10 +14,26 @@ with open(f"{wdir}/database/warnings.json", 'r', encoding="utf-8") as f: warnings = json.load(f) -# Functions def save(): with open(f"{wdir}/database/warnings.json", 'w+', encoding="utf-8") as f: json.dump(warnings, f) +# Functions +def new_warnings_guild(guild_id: int) -> int: + """Makes a new key for guild warnings in the warnings database.\n\nReturns `0` if successful, returns `1` if key already exists.""" + if str(guild_id) not in warnings: + warnings[str(guild_id)] = {} + save() + return 0 + else: return 1 + +def new_warnings_user(guild_id: int, user_id: int) -> int: + """Makes a new key for user warnings for the specified guild in the warnings database.\n\nReturns `0` if successful, returns `1` if key already exists.""" + if str(user_id) not in warnings[str(guild_id)].keys(): + warnings[str(guild_id)][str(user_id)] = [] + save() + return 0 + else: return 1 + # Commands class Moderation(commands.Cog): def __init__(self, bot): From 8950b6b651446e4588891683a634bdad1eb9b5f6 Mon Sep 17 00:00:00 2001 From: snipe <72265661+notsniped@users.noreply.github.com> Date: Thu, 9 Mar 2023 05:19:17 +0000 Subject: [PATCH 2/3] Import new moderation library functions and replace direct db key creation with functions --- main.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 21237b92..c8903c6e 100644 --- a/main.py +++ b/main.py @@ -23,6 +23,7 @@ from discord.ext.commands import * from cogs.economy import new_bank, new_wallet from cogs.isocoin import create_isocoin_key +from cogs.moderation import new_warnings_guild, new_warnings_user # Slash option types: # Just use variable types to define option types. @@ -111,9 +112,9 @@ async def on_ready(): async def on_message(ctx): new_wallet(ctx.author.id) new_bank(ctx.author.id) + new_warnings_guild(ctx.guild.id) + new_warnings_user(ctx.guild.id, ctx.author.id) create_isocoin_key(ctx.author.id) - if str(ctx.guild.id) not in warnings: warnings[str(ctx.guild.id)] = {} - if str(ctx.author.id) not in warnings[str(ctx.guild.id)]: warnings[str(ctx.guild.id)][str(ctx.author.id)] = [] if str(ctx.author.id) not in items: items[str(ctx.author.id)] = {} if str(ctx.author.id) not in levels: levels[str(ctx.author.id)] = {"xp": 0, "level": 0} if str(ctx.guild.id) not in automod_config: automod_config[str(ctx.guild.id)] = \ From c96a746f6ab580b9b003bc7fd5a1a23c5f1c7d3b Mon Sep 17 00:00:00 2001 From: snipe <72265661+notsniped@users.noreply.github.com> Date: Thu, 9 Mar 2023 05:21:46 +0000 Subject: [PATCH 3/3] Remove direct opening of warnings db in main file --- main.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/main.py b/main.py index c8903c6e..a0292450 100644 --- a/main.py +++ b/main.py @@ -35,7 +35,6 @@ color = discord.Color.random() wdir = os.getcwd() reddit = praw.Reddit(client_id='_pazwWZHi9JldA', client_secret='1tq1HM7UMEGIro6LlwtlmQYJ1jB4vQ', user_agent='idk', check_for_async=False) -with open('database/warnings.json', 'r', encoding="utf-8") as f: warnings = json.load(f) with open('database/items.json', 'r', encoding="utf-8") as f: items = json.load(f) with open('config/shop.json', 'r', encoding="utf-8") as f: shopitem = json.load(f) with open('database/presence.json', 'r', encoding="utf-8") as f: presence = json.load(f) @@ -47,7 +46,6 @@ #Pre-Initialization Commands def timenow(): datetime.datetime.now().strftime("%H:%M:%S") def save(): - with open('database/warnings.json', 'w+', encoding="utf-8") as f: json.dump(warnings, f, indent=4) with open('database/items.json', 'w+', encoding="utf-8") as f: json.dump(items, f, indent=4) with open('database/presence.json', 'w+', encoding="utf-8") as f: json.dump(presence, f, indent=4) with open('database/levels.json', 'w+', encoding="utf-8") as f: json.dump(levels, f, indent=4) @@ -223,7 +221,6 @@ async def help(ctx: ApplicationContext, command:str=None): async def sync(ctx: ApplicationContext): if ctx.author.id != 738290097170153472: return await ctx.respond('Sorry, this command is only for my developer\'s use.') try: - with open('database/warnings.json', 'r') as f: warnings = json.load(f) with open('database/items.json', 'r') as f: items = json.load(f) with open('config/shop.json', 'r') as f: shopitem = json.load(f) await ctx.respond('Databases resynced.', ephemeral=True)