startup info and dynamic module reloading
This commit is contained in:
parent
0d999b0e3d
commit
ec6ab3e5d2
|
@ -1 +1,2 @@
|
|||
venv
|
||||
__pycache__/
|
13
main.py
13
main.py
|
@ -1,7 +1,5 @@
|
|||
import logging
|
||||
import sys
|
||||
from os import listdir
|
||||
|
||||
from discord.ext.commands import Bot
|
||||
from src.utils.config import build_config
|
||||
|
||||
|
@ -14,19 +12,12 @@ bot = Bot(command_prefix="~ak ")
|
|||
TOKEN = config['AUTH']['token']
|
||||
|
||||
# load extensions
|
||||
for file in os.listdir("src/ext"):
|
||||
for file in listdir("src/ext"):
|
||||
if file.endswith(".py"):
|
||||
name = file[:-3]
|
||||
try:
|
||||
bot.load_extension(f"src.ext.{name}")
|
||||
except NoEntryPointError:
|
||||
logging.error(f"Extension {name} cannot be loaded. [No setup function]")
|
||||
except ExtensionFailed:
|
||||
logging.error(f"Extension {name} failed to load. [Execution error]")
|
||||
|
||||
logging.info("Finished loading extensions.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.info("Starting bot...")
|
||||
print("[INFO]: Starting bot...")
|
||||
# use token from config
|
||||
bot.run(TOKEN)
|
|
@ -0,0 +1,24 @@
|
|||
import discord
|
||||
from discord.ext import commands
|
||||
|
||||
class Admin(commands.Cog):
|
||||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
|
||||
@commands.group()
|
||||
async def admin(self, ctx):
|
||||
"""
|
||||
manages bot administration
|
||||
"""
|
||||
pass
|
||||
|
||||
@admin.command(name="reload")
|
||||
async def admin_reload(self, ctx, module):
|
||||
try:
|
||||
self.bot.reload_extension(f"src.ext.{module}")
|
||||
await ctx.send(f"Reload successful: [{module}]")
|
||||
except:
|
||||
await ctx.send(f"Reload failed: [{module}]")
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Admin(bot))
|
|
@ -0,0 +1,21 @@
|
|||
import discord
|
||||
from discord.ext import commands
|
||||
from peewee import *
|
||||
|
||||
class Events(commands.Cog):
|
||||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
|
||||
@commands.Cog.listener()
|
||||
async def on_ready(self):
|
||||
"""
|
||||
Defines all startup checks
|
||||
|
||||
- migrations
|
||||
- activity
|
||||
- presence
|
||||
"""
|
||||
print(f"[INFO]: Startup complete | {self.bot.user}")
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Events(bot))
|
|
@ -0,0 +1,14 @@
|
|||
import discord
|
||||
from discord.ext import commands
|
||||
|
||||
class Test(commands.Cog):
|
||||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
|
||||
@commands.command()
|
||||
@commands.guild_only()
|
||||
async def ping(self, ctx = commands.Context):
|
||||
await ctx.send("pong")
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Test(bot))
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -1,23 +1,13 @@
|
|||
import os
|
||||
import logging
|
||||
from os import getenv
|
||||
|
||||
from configparser import ConfigParser
|
||||
|
||||
|
||||
def build_config():
|
||||
config_path = os.getenv("AKWAH_CONFIG_PATH")
|
||||
config_path = getenv("AKWAH_CONFIG_PATH")
|
||||
if config_path == None:
|
||||
config_path = "config.ini"
|
||||
|
||||
try:
|
||||
config_file = open(config_path)
|
||||
except FileNotFoundError:
|
||||
logging.critical("Unable to locate the configuration file.")
|
||||
sys.exit(1)
|
||||
|
||||
config = ConfigParser()
|
||||
config.read_file(config_file)
|
||||
logging.info("Finished building configuration.")
|
||||
|
||||
config.read_file(open(config_path))
|
||||
return config
|
||||
|
||||
|
|
Loading…
Reference in New Issue