Source code for src.twitch

from typing import Callable

from twitchio.ext.commands import Command, Context

from src.logger import logger

from src.configuration import config

__all__ = ["TwitchCommand"]

[docs] class TwitchCommand(Command): def __init__(self, name: str, func: Callable, flag="", **attrs): super().__init__(name, func, **attrs) self.__doc__ = func.__doc__ self.flag = flag self.required = func.__required__ self.enabled = True def __bool__(self): return self.enabled
[docs] async def invoke(self, context: Context, *, index=0): if not self.enabled: return if self.flag: is_editor = (context.author.name in config.baalorbot.editors or context.author.is_broadcaster) is_mod = (context.author.is_mod or context.author.is_broadcaster) if "m" in self.flag: if "e" in self.flag: if not (is_mod or is_editor): return elif not is_mod: return elif "e" in self.flag: if not is_editor: return logger.debug(f"Invoking Twitch command {self.name} by {getattr(context.author, 'display_name', context.author.name)}") await super().invoke(context, index=index)