Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/core/elements/module/__init__.py
2021-11-20 00:33:53 +08:00

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"]