Skip to content
This repository was archived by the owner on Feb 7, 2026. It is now read-only.
Merged
19 changes: 0 additions & 19 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,25 +1,6 @@
api/runtimeconfig.json
database
database/currency.json
database/items.json
database/isotokens.json
database/levels.json
database/presence.json
database/user_data.json
database/weather.json
database/automod.json
*.log
*.pyc
logs
logs/currency.log
logs/error-log.txt
logs/info-log.txt
logs/startup-log.txt
config
config/settings.json
config/commands.json
config/shop.json
config/words.json
__pycache__
*.bak
venv
4 changes: 3 additions & 1 deletion cogs/afk.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
# Imports
import discord
import json
import os
from discord import option, ApplicationContext, SlashCommandGroup
from discord.ext import commands
from framework.isobot.db.presence import Presence

# Variables
with open("database/presence.json", 'r', encoding="utf-8") as f: presence = json.load(f)
client_data_dir = f"{os.path.expanduser('~')}/.isobot"
with open(f"{client_data_dir}/database/presence.json", 'r', encoding="utf-8") as f: presence = json.load(f)
presence = Presence()

# Commands
Expand Down
6 changes: 4 additions & 2 deletions cogs/economy.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import random
import math
import utils.logger
import os
import asyncio
import framework.isobot.currency
import framework.isobot.algorithms
Expand All @@ -15,12 +16,13 @@
from discord.ext import commands

# Variables
client_data_dir = f"{os.path.expanduser('~')}/.isobot"
color = discord.Color.random()
currency = framework.isobot.currency.CurrencyAPI("database/currency.json", "logs/currency.log")
currency = framework.isobot.currency.CurrencyAPI(f"{client_data_dir}/database/currency.json", f"{client_data_dir}/logs/currency.log")
levelling = levelling.Levelling()
items = items.Items()
userdata = userdata.UserData()
shop_data = ShopData("config/shop.json")
shop_data = ShopData(f"{client_data_dir}/config/shop.json")
all_item_ids = shop_data.get_item_ids()
shopitem = shop_data.get_raw_data()
jobs = (
Expand Down
3 changes: 2 additions & 1 deletion cogs/fun.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from discord.ext import commands

# Variables
client_data_dir = f"{os.path.expanduser('~')}/.isobot"
color = discord.Color.random()

# Functions
Expand All @@ -24,7 +25,7 @@ def __init__(self, bot):
async def stroketranslate(self, ctx: ApplicationContext, strok: str):
if len(strok) > 300: return await ctx.respond("Please use no more than `300` character length", ephemeral=True)
else:
with open(f"{os.getcwd()}/config/words.json", "r", encoding="utf-8") as f: words = json.load(f)
with open(f"{client_data_dir}/config/words.json", "r", encoding="utf-8") as f: words = json.load(f)
var = str()
s = strok.lower()
for i, c in enumerate(s): var += random.choice(words[c])
Expand Down
4 changes: 3 additions & 1 deletion cogs/isobank.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@
# Imports
import discord
import json
import os
from discord import option, ApplicationContext
from discord.ext import commands
from framework.isobank import manager, authorize

# Variables
client_data_dir = f"{os.path.expanduser('~')}/.isobot"
color = discord.Color.random()

# Isobot Framework
isobankauth = authorize.IsobankAuth("database/isobank/auth.json", "database/isobank/accounts.json")
isobankauth = authorize.IsobankAuth(f"{client_data_dir}/database/isobank/auth.json", f"{client_data_dir}/database/isobank/accounts.json")

# Commands
class IsoBank(commands.Cog):
Expand Down
6 changes: 4 additions & 2 deletions cogs/isocard.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
import random
import json
import math
import os
from framework.isobot.isocardtxn import IsoCardTxn
from framework.isobot.db.isocard import IsoCard
from discord import option, ApplicationContext, SlashCommandGroup
from discord.ext import commands

# Variables and Functions
client_data_dir = f"{os.path.expanduser('~')}/.isobot"
isocard_db = IsoCard()
isocardtxn = IsoCardTxn()

Expand Down Expand Up @@ -120,10 +122,10 @@ async def options_label(self, ctx: ApplicationContext, card_number: int, new_lab
@option(name="verification_code", description="The 6-digit verification code for your transaction", type=int)
async def verify_transaction(self, ctx: ApplicationContext, verification_code: int):
try:
with open("database/isocard_transactions.json", 'r') as f: transactions_db = json.load(f)
with open(f"{client_data_dir}/database/isocard_transactions.json", 'r') as f: transactions_db = json.load(f)
if transactions_db[str(verification_code)]["payer_id"] == ctx.author.id:
transactions_db[str(verification_code)]["status"] = "complete"
with open("database/isocard_transactions.json", 'w+') as f: json.dump(transactions_db, f, indent=4)
with open(f"{client_data_dir}/database/isocard_transactions.json", 'w+') as f: json.dump(transactions_db, f, indent=4)
localembed = discord.Embed(
title="Transaction successfully verified.",
description="Please wait patiently until the merchant has verified the transaction.",
Expand Down
13 changes: 7 additions & 6 deletions cogs/isocoin.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,18 @@
from discord.ext import commands

# Variables
if not os.path.isdir("database"): # TEMPORARY: Allow cog to handle "database" directory generation (for now)
os.mkdir("database")
if not os.path.isfile("database/isotokens.json"): # Generate database file, if missing.
with open("database/isotokens.json", 'x', encoding="utf-8") as f:
client_data_dir = f"{os.path.expanduser('~')}/.isobot"
# if not os.path.isdir("database"): # TEMPORARY: Allow cog to handle "database" directory generation (for now)
# os.mkdir("database")
if not os.path.isfile(f"{client_data_dir}/database/isotokens.json"): # Generate database file, if missing.
with open(f"{client_data_dir}/database/isotokens.json", 'x', encoding="utf-8") as f:
json.dump({}, f)
f.close()

with open("database/isotokens.json", 'r', encoding="utf-8") as f: isocoins = json.load(f)
with open(f"{client_data_dir}/database/isotokens.json", 'r', encoding="utf-8") as f: isocoins = json.load(f)

def save():
with open("database/isotokens.json", 'w+', encoding="utf-8") as f: json.dump(isocoins, f)
with open(f"{client_data_dir}/database/isotokens.json", 'w+', encoding="utf-8") as f: json.dump(isocoins, f)

# Functions
def create_isocoin_key(user_id: int) -> int:
Expand Down
4 changes: 3 additions & 1 deletion cogs/minigames.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@

# Imports
import discord
import os
import framework.isobot.currency
from random import randint
from discord import ApplicationContext
from discord.ext import commands

# Variables
client_data_dir = f"{os.path.expanduser('~')}/.isobot"
color = discord.Color.random()
currency = framework.isobot.currency.CurrencyAPI("database/currency.json", "logs/currency.log")
currency = framework.isobot.currency.CurrencyAPI(f"{client_data_dir}/database/currency.json", f"{client_data_dir}/logs/currency.log")

# Commands
class Minigames(commands.Cog):
Expand Down
8 changes: 5 additions & 3 deletions cogs/serverconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@
import discord
import random
import json
import os
from discord import option, ApplicationContext
from discord.commands import SlashCommandGroup
from discord.ext import commands
from framework.isobot.db import serverconfig

# Variables
client_data_dir = f"{os.path.expanduser('~')}/.isobot"
serverconf = serverconfig.ServerConfig()

# Functions
Expand All @@ -16,7 +18,7 @@ def __init__(self, bot):
self.bot = bot

# Load Verification Database
with open("database/serververification.json", 'r', encoding="utf-8") as f:
with open(f"{client_data_dir}/database/serververification.json", 'r', encoding="utf-8") as f:
self.verification_db: dict = json.load(f)

serverconfig_cmds = SlashCommandGroup(name="serverconfig", description="Commands related to server customization and configuration.")
Expand Down Expand Up @@ -230,7 +232,7 @@ async def start_verification(self, ctx: ApplicationContext):
return await ctx.respond("Your verification process is already ongoing in this server!", ephemeral=True)

self.verification_db[str(ctx.author.id)][str(verify_code)] = {"guild_id": ctx.guild.id}
with open("database/serververification.json", 'w+', encoding="utf-8") as f:
with open(f"{client_data_dir}/database/serververification.json", 'w+', encoding="utf-8") as f:
json.dump(self.verification_db, f, indent=4)

localembed = discord.Embed(
Expand Down Expand Up @@ -260,7 +262,7 @@ async def verify(self, ctx: ApplicationContext, verification_code: int):
await server_context_user.add_roles(verification_role, reason="Member has been successfully verified in server.")

del self.verification_db[str(ctx.author.id)][str(verification_code)]
with open("database/serververification.json", 'w+', encoding="utf-8") as f:
with open(f"{client_data_dir}/database/serververification.json", 'w+', encoding="utf-8") as f:
json.dump(self.verification_db, f, indent=4)

return await ctx.respond(f"You have been successfully verified in **{vcode_guild.name}**!")
Expand Down
3 changes: 2 additions & 1 deletion cogs/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@
from framework.isobot.db.presence import Presence

# Variables
client_data_dir = f"{os.path.expanduser('~')}/.isobot"
color = discord.Color.random()
currency = currency.CurrencyAPI("database/currency.json", "logs/currency.log")
currency = currency.CurrencyAPI(f"{client_data_dir}/database/currency.json", f"{client_data_dir}/logs/currency.log")
levelling = levelling.Levelling()
_commands = cmds.Commands()
_embeds = _embeds.Embeds()
Expand Down
9 changes: 6 additions & 3 deletions config_updater.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,15 @@
import json
from typing_extensions import Literal

# Variables
client_data_dir = f"{os.path.expanduser('~')}/.isobot"

# Configuration
class UpdaterConfig:
"""This class contains the full configuration for the updater."""
update_server_target = "https://raw.githubusercontent.com/PyBotDevs/resources/refs/heads/base/isobot-config-data"
use_raw_file_data = False
config_files_path = "config/"
config_files_path = f"{client_data_dir}/config/"
config_files_list = ("commands.json", "shop.json", "words.json")

# Functions
Expand All @@ -41,8 +44,8 @@ def check_for_updates() -> Literal[True]:
Returns `True` if client-side process is successful.
"""
# Check if all config files exist, and download them if they don't
if not os.path.isdir("config"):
os.mkdir("config")
if not os.path.isdir(f"{client_data_dir}/config"):
os.mkdir(f"{client_data_dir}/config")

for _file in UpdaterConfig.config_files_list:
if not os.path.exists(UpdaterConfig.config_files_path + _file):
Expand Down
8 changes: 6 additions & 2 deletions framework/isobot/commands.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
# Imports
import json
import os
from framework.isobot.colors import Colors as colors

# Variables
client_data_dir = f"{os.path.expanduser('~')}/.isobot"

# Classes
class Commands():
"""The library used to fetch information about isobot commands, and manage them."""
Expand All @@ -10,12 +14,12 @@ def __init__(self):

def load(self) -> dict:
"""Loads the latest content from the commands database onto memory."""
with open("config/commands.json", 'r', encoding="utf-8") as f: data = json.load(f)
with open(f"{client_data_dir}/config/commands.json", 'r', encoding="utf-8") as f: data = json.load(f)
return data

def save(self, data: dict) -> int:
"""Saves the cached database to local machine storage."""
with open("config/commands.json", 'w+', encoding="utf-8") as f: json.dump(data, f)
with open(f"{client_data_dir}/config/commands.json", 'w+', encoding="utf-8") as f: json.dump(data, f)
return 0

def fetch_raw(self) -> dict:
Expand Down
7 changes: 5 additions & 2 deletions framework/isobot/db/automod.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@

# Imports
import json
import os
from framework.isobot.colors import Colors as colors

client_data_dir = f"{os.path.expanduser('~')}/.isobot"

# Functions
class Automod():
"""Initializes the Automod database system."""
Expand All @@ -12,12 +15,12 @@ def __init__(self):

def load(self) -> dict:
"""Fetches and returns the latest data from the items database."""
with open("database/automod.json", 'r', encoding="utf8") as f: db = json.load(f)
with open(f"{client_data_dir}/database/automod.json", 'r', encoding="utf8") as f: db = json.load(f)
return db

def save(self, data: dict) -> int:
"""Dumps all cached data to your local machine."""
with open("database/automod.json", 'w+', encoding="utf8") as f: json.dump(data, f)
with open(f"{client_data_dir}/database/automod.json", 'w+', encoding="utf8") as f: json.dump(data, f)
return 0

def generate(self, server_id: int) -> int:
Expand Down
7 changes: 5 additions & 2 deletions framework/isobot/db/embeds.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@
import json
import discord
import datetime
import os
import framework.types
from typing_extensions import Union
from framework.isobot.colors import Colors as colors

client_data_dir = f"{os.path.expanduser('~')}/.isobot"

# Functions
class Embeds():
"""Initializes the Embed database system."""
Expand All @@ -14,12 +17,12 @@ def __init__(self):

def load(self) -> dict:
"""Fetches and returns the latest data from the embeds database."""
with open("database/embeds.json", 'r', encoding="utf8") as f: db = json.load(f)
with open(f"{client_data_dir}/database/embeds.json", 'r', encoding="utf8") as f: db = json.load(f)
return db

def save(self, data: dict) -> int:
"""Dumps all cached data to your local machine."""
with open("database/embeds.json", 'w+', encoding="utf8") as f: json.dump(data, f)
with open(f"{client_data_dir}/database/embeds.json", 'w+', encoding="utf8") as f: json.dump(data, f)
return 0

def generate_server_key(self, server_id: Union[str, int]) -> int:
Expand Down
7 changes: 5 additions & 2 deletions framework/isobot/db/isocard.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,24 @@
# Imports
import json
import time
import os
from framework.isobot.colors import Colors as colors

client_data_dir = f"{os.path.expanduser('~')}/.isobot"

# Functions
class IsoCard:
def __init__(self):
print(f"[framework/db/IsoCard] {colors.green}IsoCard db library initialized.{colors.end}")

def load(self) -> dict:
"""Loads the latest IsoCard database content from local storage."""
with open("database/isocard.json", "r", encoding="utf-8") as f: data = json.load(f)
with open(f"{client_data_dir}/database/isocard.json", "r", encoding="utf-8") as f: data = json.load(f)
return data

def save(self, data: dict) -> int:
"""Saves the latest cached database to local storage."""
with open("database/isocard.json", 'w+', encoding="utf-8") as f: json.dump(data, f, indent=4)
with open(f"{client_data_dir}/database/isocard.json", 'w+', encoding="utf-8") as f: json.dump(data, f, indent=4)
return 0

def raw(self) -> dict:
Expand Down
8 changes: 5 additions & 3 deletions framework/isobot/db/items.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
"""The framework module library used for managing isobot's items database."""
# Imports
import json
import os
from framework.isobot.colors import Colors as colors
from framework.isobot.shop import ShopData

# Variables
shop = ShopData("config/shop.json")
client_data_dir = f"{os.path.expanduser('~')}/.isobot"
shop = ShopData(f"{client_data_dir}/config/shop.json")
shopitem = shop.get_item_ids()

# Functions
Expand All @@ -16,12 +18,12 @@ def __init__(self):

def load(self) -> dict:
"""Fetches and returns the latest data from the items database."""
with open("database/items.json", 'r', encoding="utf8") as f: db = json.load(f)
with open(f"{client_data_dir}/database/items.json", 'r', encoding="utf8") as f: db = json.load(f)
return db

def save(self, data: dict) -> int:
"""Dumps all cached data to your local machine."""
with open("database/items.json", 'w+', encoding="utf8") as f: json.dump(data, f)
with open(f"{client_data_dir}/database/items.json", 'w+', encoding="utf8") as f: json.dump(data, f)
return 0

def generate(self, user_id: int) -> int:
Expand Down
Loading