173 lines
7.1 KiB
Python
173 lines
7.1 KiB
Python
from typing import Callable, Union, Dict, List
|
|
|
|
from apscheduler.triggers.combining import AndTrigger, OrTrigger
|
|
from apscheduler.triggers.cron import CronTrigger
|
|
from apscheduler.triggers.date import DateTrigger
|
|
from apscheduler.triggers.interval import IntervalTrigger
|
|
|
|
from .matches import *
|
|
|
|
|
|
class Command:
|
|
def __init__(self,
|
|
bind_prefix: str,
|
|
alias: Union[str, list, tuple, dict] = None,
|
|
desc: str = None,
|
|
recommend_modules: Union[str, list, tuple] = None,
|
|
developers: Union[str, list, tuple] = None,
|
|
required_admin: bool = False,
|
|
base: bool = False,
|
|
required_superuser: bool = False):
|
|
self.bind_prefix: str = bind_prefix
|
|
if isinstance(alias, str):
|
|
alias = {alias: bind_prefix}
|
|
elif isinstance(alias, (tuple, list)):
|
|
alias = {x: bind_prefix for x in alias}
|
|
self.alias: Dict[str, str] = alias
|
|
self.desc: str = desc
|
|
if isinstance(recommend_modules, str):
|
|
recommend_modules = [recommend_modules]
|
|
elif isinstance(recommend_modules, tuple):
|
|
recommend_modules = list(recommend_modules)
|
|
self.recommend_modules: List[str] = recommend_modules
|
|
if isinstance(developers, str):
|
|
developers = [developers]
|
|
elif isinstance(developers, tuple):
|
|
developers = list(developers)
|
|
self.developers: List[str] = developers
|
|
self.required_admin: bool = required_admin
|
|
self.base: bool = base
|
|
self.required_superuser: bool = required_superuser
|
|
self.match_list = CommandMatches()
|
|
|
|
|
|
class RegexCommand:
|
|
def __init__(self,
|
|
bind_prefix: str,
|
|
alias: Union[str, list, tuple, dict] = None,
|
|
desc: str = None,
|
|
recommend_modules: Union[str, list, tuple] = None,
|
|
developers: Union[str, list, tuple] = None,
|
|
required_admin: bool = False,
|
|
base: bool = False,
|
|
required_superuser: bool = False):
|
|
self.bind_prefix: str = bind_prefix
|
|
if isinstance(alias, str):
|
|
alias = {alias: bind_prefix}
|
|
elif isinstance(alias, (tuple, list)):
|
|
alias = {x: bind_prefix for x in alias}
|
|
self.alias: Dict[str, str] = alias
|
|
self.desc: str = desc
|
|
if isinstance(recommend_modules, str):
|
|
recommend_modules = [recommend_modules]
|
|
elif isinstance(recommend_modules, tuple):
|
|
recommend_modules = list(recommend_modules)
|
|
self.recommend_modules: List[str] = recommend_modules
|
|
if isinstance(developers, str):
|
|
developers = [developers]
|
|
elif isinstance(developers, tuple):
|
|
developers = list(developers)
|
|
self.developers: List[str] = developers
|
|
self.required_admin: bool = required_admin
|
|
self.base: bool = base
|
|
self.required_superuser: bool = required_superuser
|
|
self.match_list = RegexMatches()
|
|
|
|
|
|
class Option:
|
|
def __init__(self,
|
|
bind_prefix: str,
|
|
desc: str = None,
|
|
alias: Union[str, list, tuple, dict] = None,
|
|
recommend_modules: Union[str, list, tuple] = None,
|
|
developers: Union[str, list, tuple] = None,
|
|
required_superuser: bool = False,
|
|
required_admin: bool = False):
|
|
self.bind_prefix: str = bind_prefix
|
|
if isinstance(alias, str):
|
|
alias = {alias: bind_prefix}
|
|
elif isinstance(alias, (tuple, list)):
|
|
alias = {x: bind_prefix for x in alias}
|
|
self.alias: Dict[str, str] = alias
|
|
self.desc: str = desc
|
|
if isinstance(recommend_modules, str):
|
|
recommend_modules = [recommend_modules]
|
|
elif isinstance(recommend_modules, tuple):
|
|
recommend_modules = list(recommend_modules)
|
|
self.recommend_modules: List[str] = recommend_modules
|
|
if isinstance(developers, str):
|
|
developers = [developers]
|
|
elif isinstance(developers, tuple):
|
|
developers = list(developers)
|
|
self.developers: List[str] = developers
|
|
self.required_admin: bool = required_admin
|
|
self.required_superuser: bool = required_superuser
|
|
self.match_list = None
|
|
|
|
|
|
class Schedule:
|
|
def __init__(self,
|
|
function: Callable,
|
|
trigger: [AndTrigger, OrTrigger, DateTrigger, CronTrigger, IntervalTrigger],
|
|
bind_prefix: str,
|
|
desc: str = None,
|
|
alias: Union[str, list, tuple, dict] = None,
|
|
recommend_modules: Union[str, list, tuple] = None,
|
|
developers: Union[str, list, tuple] = None,
|
|
required_superuser: bool = False,
|
|
):
|
|
self.function: Callable = function
|
|
self.trigger: [AndTrigger, OrTrigger, DateTrigger, CronTrigger, IntervalTrigger] = trigger
|
|
self.bind_prefix: str = bind_prefix
|
|
self.desc: str = desc
|
|
if isinstance(alias, str):
|
|
alias = {alias: bind_prefix}
|
|
elif isinstance(alias, (tuple, list)):
|
|
alias = {x: bind_prefix for x in alias}
|
|
self.alias: Dict[str, str] = alias
|
|
if isinstance(recommend_modules, str):
|
|
recommend_modules = [recommend_modules]
|
|
elif isinstance(recommend_modules, tuple):
|
|
recommend_modules = list(recommend_modules)
|
|
self.recommend_modules: List[str] = recommend_modules
|
|
if isinstance(developers, str):
|
|
developers = [developers]
|
|
elif isinstance(developers, tuple):
|
|
developers = list(developers)
|
|
self.developers: List[str] = developers
|
|
self.required_superuser: bool = required_superuser
|
|
|
|
|
|
class StartUp:
|
|
def __init__(self,
|
|
function: Callable,
|
|
bind_prefix: str,
|
|
desc: str = None,
|
|
alias: Union[str, list, tuple, dict] = None,
|
|
recommend_modules: Union[str, list, tuple] = None,
|
|
developers: Union[str, list, tuple] = None,
|
|
required_superuser: bool = False,
|
|
):
|
|
self.function: Callable = function
|
|
self.bind_prefix: str = bind_prefix
|
|
self.desc: str = desc
|
|
if isinstance(alias, str):
|
|
alias = {alias: bind_prefix}
|
|
elif isinstance(alias, (tuple, list)):
|
|
alias = {x: bind_prefix for x in alias}
|
|
self.alias: Dict[str, str] = alias
|
|
if isinstance(recommend_modules, str):
|
|
recommend_modules = [recommend_modules]
|
|
elif isinstance(recommend_modules, tuple):
|
|
recommend_modules = list(recommend_modules)
|
|
self.recommend_modules: List[str] = recommend_modules
|
|
if isinstance(developers, str):
|
|
developers = [developers]
|
|
elif isinstance(developers, tuple):
|
|
developers = list(developers)
|
|
self.developers = developers
|
|
self.required_superuser: bool = required_superuser
|
|
|
|
|
|
__all__ = ["Command", "RegexCommand", "Option", "Schedule", "StartUp", "AndTrigger", "OrTrigger", "DateTrigger",
|
|
"CronTrigger", "IntervalTrigger"]
|