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
2022-07-01 22:12:26 +08:00

132 lines
5.7 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 .component_matches import *
def convert2lst(elements: Union[str, list, tuple]) -> list:
if isinstance(elements, str):
return [elements]
elif isinstance(elements, tuple):
return list(elements)
return elements
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,
available_for: Union[str, list, tuple] = '*',
exclude_from: Union[str, list, tuple] = ''):
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
self.recommend_modules: List[str] = convert2lst(recommend_modules)
self.developers: List[str] = convert2lst(developers)
self.required_admin: bool = required_admin
self.base: bool = base
self.required_superuser: bool = required_superuser
self.available_for: List[str] = convert2lst(available_for)
self.exclude_from: List[str] = convert2lst(exclude_from)
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,
available_for: Union[str, list, tuple] = '*',
exclude_from: Union[str, list, tuple] = ''):
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
self.recommend_modules: List[str] = convert2lst(recommend_modules)
self.developers: List[str] = convert2lst(developers)
self.required_admin: bool = required_admin
self.base: bool = base
self.required_superuser: bool = required_superuser
self.available_for: List[str] = convert2lst(available_for)
self.exclude_from: List[str] = convert2lst(exclude_from)
self.match_list = RegexMatches()
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,
available_for: Union[str, list, tuple] = '*',
exclude_from: Union[str, list, tuple] = ''):
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
self.recommend_modules: List[str] = convert2lst(recommend_modules)
self.developers: List[str] = convert2lst(developers)
self.required_superuser: bool = required_superuser
self.available_for: List[str] = convert2lst(available_for)
self.exclude_from: List[str] = convert2lst(exclude_from)
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,
available_for: Union[str, list, tuple] = '*',
exclude_from: Union[str, list, tuple] = ''):
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
self.recommend_modules: List[str] = convert2lst(recommend_modules)
self.developers = convert2lst(developers)
self.required_superuser: bool = required_superuser
self.available_for: List[str] = convert2lst(available_for)
self.exclude_from: List[str] = convert2lst(exclude_from)
__all__ = ["Command", "RegexCommand", "Schedule", "StartUp", "AndTrigger", "OrTrigger", "DateTrigger",
"CronTrigger", "IntervalTrigger"]