generated from HoloTech/twitch-bot-template
feat: Add custom Context class.
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
from .args import args
|
from .args import args
|
||||||
from .bot import Bot
|
from .bot import Bot
|
||||||
|
from .context import Context
|
||||||
from .config import Conf, conf
|
from .config import Conf, conf
|
||||||
from .logger import setup_main_logger, log_context, log_action_stack, log_app, set_logging_context, logging_context, with_log_ctx, persist_task
|
from .logger import setup_main_logger, log_context, log_action_stack, log_app, set_logging_context, logging_context, with_log_ctx, persist_task
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import Optional
|
from typing import TYPE_CHECKING, Any, Literal, Optional, overload
|
||||||
|
|
||||||
from twitchio.authentication import UserTokenPayload
|
from twitchio.authentication import UserTokenPayload
|
||||||
from twitchio.ext import commands
|
from twitchio.ext import commands
|
||||||
@@ -10,6 +10,10 @@ from botdata import BotData, UserAuth, BotChannel, VersionHistory
|
|||||||
from constants import BOTUSER_SCOPES, CHANNEL_SCOPES, SCHEMA_VERSIONS
|
from constants import BOTUSER_SCOPES, CHANNEL_SCOPES, SCHEMA_VERSIONS
|
||||||
|
|
||||||
from .config import Conf
|
from .config import Conf
|
||||||
|
from .context import Context
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from modules.profiles.profiles.twitch.component import ProfilesComponent
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -24,6 +28,7 @@ class Bot(commands.Bot):
|
|||||||
|
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
# Whether we should do eventsub via webhooks or websockets
|
||||||
if config.bot.get('eventsub_secret', None):
|
if config.bot.get('eventsub_secret', None):
|
||||||
self.using_webhooks = True
|
self.using_webhooks = True
|
||||||
else:
|
else:
|
||||||
@@ -36,6 +41,28 @@ class Bot(commands.Bot):
|
|||||||
|
|
||||||
self.joined: dict[str, BotChannel] = {}
|
self.joined: dict[str, BotChannel] = {}
|
||||||
|
|
||||||
|
# Make the type checker happy about fetching components by name
|
||||||
|
# TODO: Move to stubs
|
||||||
|
|
||||||
|
@property
|
||||||
|
def profiles(self):
|
||||||
|
return self.get_component('ProfilesComponent')
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def get_component(self, name: Literal['ProfilesComponent']) -> 'ProfilesComponent':
|
||||||
|
...
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def get_component(self, name: str) -> Optional[commands.Component]:
|
||||||
|
...
|
||||||
|
|
||||||
|
def get_component(self, name: str) -> Optional[commands.Component]:
|
||||||
|
return super().get_component(name)
|
||||||
|
|
||||||
|
def get_context(self, payload, *, cls: Any = None) -> Context:
|
||||||
|
cls = cls or Context
|
||||||
|
return cls(payload, bot=self)
|
||||||
|
|
||||||
async def event_ready(self):
|
async def event_ready(self):
|
||||||
# logger.info(f"Logged in as {self.nick}. User id is {self.user_id}")
|
# logger.info(f"Logged in as {self.nick}. User id is {self.user_id}")
|
||||||
logger.info("Logged in as %s", self.bot_id)
|
logger.info("Logged in as %s", self.bot_id)
|
||||||
|
|||||||
4
src/meta/context.py
Normal file
4
src/meta/context.py
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
from twitchio.ext import commands as cmds
|
||||||
|
|
||||||
|
class Context(cmds.Context):
|
||||||
|
...
|
||||||
Reference in New Issue
Block a user