Compare commits
1 Commits
444a57b5da
...
main
Author | SHA1 | Date |
---|---|---|
fanyx | 7f81eb1420 |
|
@ -1,2 +1,4 @@
|
||||||
venv
|
venv/
|
||||||
|
env/
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
bot.db
|
12
main.py
12
main.py
|
@ -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,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])
|
|
@ -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)
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
from .database import BaseModel
|
|
||||||
from .models import *
|
|
|
@ -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
|
|
|
@ -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
|
|
||||||
]
|
|
|
@ -1,6 +0,0 @@
|
||||||
from peewee import CharField
|
|
||||||
from src.db import BaseModel
|
|
||||||
|
|
||||||
class Collectible(BaseModel):
|
|
||||||
name = CharField()
|
|
||||||
picture = CharField()
|
|
|
@ -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)
|
|
|
@ -1,6 +0,0 @@
|
||||||
from peewee import CharField
|
|
||||||
from src.db.database import BaseModel
|
|
||||||
|
|
||||||
class Item(BaseModel):
|
|
||||||
name = CharField()
|
|
||||||
picture = CharField()
|
|
|
@ -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()
|
|
|
@ -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)
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
def setup(_):
|
||||||
|
pass
|
|
@ -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))
|
|
@ -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))
|
|
@ -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
|
|
Loading…
Reference in New Issue