Initial Template Commit
This commit is contained in:
@@ -0,0 +1 @@
|
||||
from .plugin import setup, twitch_setup
|
||||
@@ -0,0 +1,11 @@
|
||||
BEGIN;
|
||||
|
||||
-- Version dependency checks
|
||||
DO $$
|
||||
ASSERT current_module_version('PROFILES') = 1, 'Dependency version mismatch: PROFILES';
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Plugin version history
|
||||
INSERT INTO version_history (component, from_version, to_version, author) VALUES ('AWESOME_PLUGIN', 0, 1, 'Initial Creation');
|
||||
|
||||
COMMIT;
|
||||
@@ -0,0 +1,11 @@
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
from .discord import setup
|
||||
from .twitch import setup as twitch_setup
|
||||
|
||||
__all__ = (
|
||||
'setup',
|
||||
'twitch_setup',
|
||||
)
|
||||
@@ -0,0 +1,15 @@
|
||||
from typing import Optional
|
||||
from .data import (
|
||||
AwesomeData,
|
||||
AwesomeTable,
|
||||
)
|
||||
|
||||
|
||||
class AwesomeRegistry:
|
||||
VERSION = AwesomeData.VERSION
|
||||
|
||||
def __init__(self, data: AwesomeData):
|
||||
self.data = data
|
||||
|
||||
async def init(self):
|
||||
await self.data.init()
|
||||
@@ -0,0 +1,17 @@
|
||||
from data import Registry, RowModel, Table
|
||||
from data.columns import String, Timestamp, Integer, Bool
|
||||
|
||||
|
||||
class AwesomeTable(RowModel):
|
||||
_tablename_ = "awesome_table"
|
||||
_cache_ = {}
|
||||
|
||||
userid = String(primary=True)
|
||||
_timestamp = Timestamp()
|
||||
|
||||
|
||||
class AwesomeData(Registry):
|
||||
VERSION = ("AWESOME", 1)
|
||||
|
||||
AwesomeTable = AwesomeTable
|
||||
awesome_table = AwesomeTable.table
|
||||
@@ -0,0 +1,7 @@
|
||||
from .. import logger
|
||||
|
||||
|
||||
async def setup(bot):
|
||||
from .cog import AwesomeCog
|
||||
|
||||
await bot.add_cog(AwesomeCog(bot))
|
||||
@@ -0,0 +1,26 @@
|
||||
from typing import Optional
|
||||
import asyncio
|
||||
|
||||
import discord
|
||||
from discord.ext import commands as cmds
|
||||
from discord import app_commands as appcmds
|
||||
|
||||
from meta import LionBot, LionCog, LionContext
|
||||
from meta.logger import log_wrap
|
||||
from utils.lib import utc_now
|
||||
|
||||
from ..data import AwesomeData
|
||||
from ..awesome import AwesomeRegistry
|
||||
|
||||
|
||||
class AwesomeCog(LionCog):
|
||||
def __init__(self, bot: LionBot):
|
||||
self.bot = bot
|
||||
|
||||
self.data = bot.db.load_registry(AwesomeData())
|
||||
self.profiles = AwesomeRegistry(self.data)
|
||||
|
||||
async def cog_load(self):
|
||||
await self.data.init()
|
||||
await self.bot.version_check(*self.data.VERSION)
|
||||
await self.profiles.init()
|
||||
@@ -0,0 +1,11 @@
|
||||
from typing import TYPE_CHECKING
|
||||
from .. import logger
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from meta.bot import Bot
|
||||
|
||||
|
||||
async def setup(bot: "Bot"):
|
||||
from .component import AwesomeComponent
|
||||
|
||||
await bot.add_component(AwesomeComponent(bot))
|
||||
@@ -0,0 +1,33 @@
|
||||
from typing import Optional
|
||||
import asyncio
|
||||
|
||||
import twitchio
|
||||
from twitchio.ext import commands as cmds
|
||||
|
||||
from meta import Bot
|
||||
from meta.logger import log_wrap
|
||||
from utils.lib import utc_now
|
||||
|
||||
from . import logger
|
||||
|
||||
from ..data import AwesomeData
|
||||
from ..awesome import AwesomeRegistry
|
||||
|
||||
|
||||
class AwesomeComponent(cmds.Component):
|
||||
def __init__(self, bot: Bot):
|
||||
self.bot = bot
|
||||
|
||||
self.data = bot.dbconn.load_registry(AwesomeData())
|
||||
self.awesome = AwesomeRegistry(self.data)
|
||||
|
||||
# ----- API -----
|
||||
async def component_load(self):
|
||||
await self.data.init()
|
||||
await self.bot.version_check(*self.data.VERSION)
|
||||
await self.profiles.init()
|
||||
|
||||
async def component_teardown(self):
|
||||
pass
|
||||
|
||||
# ------ Commands -----
|
||||
Reference in New Issue
Block a user