Compare commits

..

1 Commits

Author SHA1 Message Date
fanyx 7f81eb1420 i did something 2021-05-23 17:50:31 +02:00
18 changed files with 56 additions and 97 deletions

6
.gitignore vendored
View File

@ -1,2 +1,4 @@
venv venv/
__pycache__/ env/
__pycache__/
bot.db

12
main.py
View File

@ -1,10 +1,16 @@
import sys
from os import listdir from os import listdir
from discord.ext.commands import Bot from discord.ext.commands import Bot
from src.utils.config import build_config from configparser import ConfigParser
from peewee import SqliteDatabase
# read config at configured location \\ default to 'config.ini' # read config at configured location \\ default to 'config.ini'
config = build_config() config = ConfigParser()
with open('config.ini', 'r') as configfile:
config.read_file(configfile)
# init db
db = SqliteDatabase(config['DATABASE']['path'])
db.connect()
# spawn discord bot instance # spawn discord bot instance
# init token from config # init token from config

0
src/database/__init__.py Normal file
View File

View File

View File

@ -0,0 +1,10 @@
from src.database.models import Role, User, UserRole
from main import db
import logging
logger = logging.getLogger('database')
def create_tables():
logger.info('Creating core database tables if necessary.')
db.create_tables([User, Role, UserRole])

17
src/database/models.py Normal file
View File

@ -0,0 +1,17 @@
from peewee import Model, CharField, ForeignKeyField
from main import config, db
class BaseModel(Model):
class Meta:
database = db
class User(BaseModel):
uuid = CharField(unique=True)
class Role(BaseModel):
name = CharField()
class UserRole(BaseModel):
user = ForeignKeyField(User, User.uuid)
role = ForeignKeyField(Role, Role.name)

View File

@ -1,2 +0,0 @@
from .database import BaseModel
from .models import *

View File

@ -1,15 +0,0 @@
from peewee import Model, SqliteDatabase
from main import config
DB_PATH = 'app.db'
database = SqliteDatabase(DB_PATH, pragmas={
'journal_mode': 'wal',
'cache_size': 10000,
'foreign_keys': 1
})
class BaseModel(Model):
class Meta:
database = database

View File

@ -1,14 +0,0 @@
from .collectible import Collectible
from .inventory import Inventory
from .item import Item
from .recipe import ItemRecipe, ItemRecipeShard
from .user import User
__all__ = [
Collectible
, Inventory
, Item
, ItemRecipe
, ItemRecipeShard
, User
]

View File

@ -1,6 +0,0 @@
from peewee import CharField
from src.db import BaseModel
class Collectible(BaseModel):
name = CharField()
picture = CharField()

View File

@ -1,7 +0,0 @@
from peewee import CharField, ForeignKeyField, IntegerField
from src.db import BaseModel
class Inventory(BaseModel):
user_id = CharField()
item_id = ForeignKeyField(Item)
amount = IntegerField(default=0)

View File

@ -1,6 +0,0 @@
from peewee import CharField
from src.db.database import BaseModel
class Item(BaseModel):
name = CharField()
picture = CharField()

View File

@ -1,10 +0,0 @@
from peewee import ForeignKeyField, IntegerField
from . import Collectible, Item
class ItemRecipe(BaseModel):
output_item_id = ForeignKeyField(Item)
class ItemRecipeShard(BaseModel):
recipe_id = ForeignKeyField(ItemRecipe)
collectible_id = ForeignKeyField(Collectible)
amount = IntegerField()

View File

@ -1,8 +0,0 @@
from peewee import CharField, IntegerField
from src.db import BaseModel
class User(BaseModel):
user_id = CharField()
xp = IntegerField(default=0) # Total xp accumulated
xp_mod = IntegerField(default=100) # XP Modifier in Percent // Can be 0 for XP-Lock, but not negative
level = IntegerField(default=1)

2
src/ext/__init__.py Normal file
View File

@ -0,0 +1,2 @@
def setup(_):
pass

View File

@ -1,6 +1,11 @@
import discord import discord
from discord.ext import commands from discord.ext import commands
from peewee import * import logging
import src.database.migrations.core
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
class Events(commands.Cog): class Events(commands.Cog):
def __init__(self, bot): def __init__(self, bot):
@ -15,7 +20,9 @@ class Events(commands.Cog):
- activity - activity
- presence - presence
""" """
print(f"[INFO]: Startup complete | {self.bot.user}") logger.info("Running database startup migrations.")
src.database.migrations.core.create_tables()
logger.info(f"Startup complete | {self.bot.user}")
def setup(bot): def setup(bot):
bot.add_cog(Events(bot)) bot.add_cog(Events(bot))

View File

@ -1,11 +1,10 @@
from discord.ext import commands from discord.ext import commands
from src.utils.config import build_config from main import config
class Inventory(commands.Cog): class Inventory(commands.Cog):
def __init__(self, bot): def __init__(self, bot):
self.bot = bot self.bot = bot
self.config = build_config() # self.config = config
@commands.group() @commands.group()
@commands.guild_only() @commands.guild_only()
@ -31,7 +30,7 @@ class Inventory(commands.Cog):
@inventory.command(name="use") @inventory.command(name="use")
@commands.guild_only() @commands.guild_only()
async def inventory_use(self, ctx, *, ): async def inventory_use(self, ctx, **kwargs):
""" """
Use an item in user's inventory Use an item in user's inventory
@ -40,4 +39,5 @@ class Inventory(commands.Cog):
pass pass
def setup(bot):
bot.add_cog(Inventory(bot))

View File

@ -1,17 +0,0 @@
from os import getenv
from sys import exit
from configparser import ConfigParser
def build_config():
if (config_path := getenv("CONFIG_PATH")) is None:
config_path = "config.ini"
config = ConfigParser()
try:
config.read_file(open(config_path))
except FileNotFoundError:
print("Unable to locate config file. Exiting...")
exit(1)
return config