ayaka.ayaka_master

ayaka综合管理模块

  1'''ayaka综合管理模块'''
  2from pydantic import Field
  3from .ayaka import app_list, AyakaApp, get_app
  4# from .config import ayaka_root_config, save
  5from .config import save
  6from .state import root_state
  7from .driver import get_driver
  8from .depend import commit, AyakaInput
  9
 10driver = get_driver()
 11
 12app = AyakaApp("ayaka_master")
 13app.help = '''ayaka综合管理模块'''
 14
 15
 16class UidInput(AyakaInput):
 17    uid: int = Field(description="QQ号", gt=0)
 18
 19
 20class AppnameInput(AyakaInput):
 21    name: str = Field("", description="应用名")
 22
 23
 24@app.on_idle()
 25@app.on_deep_all()
 26@app.on_cmd("插件", "plugin", "plugins")
 27async def show_plugins():
 28    '''展示所有应用'''
 29    items = []
 30    for _app in app_list:
 31        info = f"[{_app.name}]"
 32        items.append(info)
 33    await app.send("\n".join(items))
 34
 35
 36@app.on_idle()
 37@app.on_deep_all()
 38@app.on_cmd("状态", "state")
 39async def show_state():
 40    state = app.group.state
 41    if state <= root_state:
 42        await app.send("当前设备处于闲置状态")
 43        return
 44    await app.send(f"当前状态:{state}")
 45
 46
 47@app.on_idle()
 48@app.on_deep_all()
 49@app.on_cmd("帮助", "help")
 50async def show_help(data: AppnameInput):
 51    # 展示当前应用当前状态的帮助
 52    if app.state > root_state:
 53        app_name = app.state.keys[1]
 54        _app = get_app(app_name)
 55        await app.send(_app.help)
 56        return
 57
 58    # 没有应用正在运行
 59    # 查询指定应用的详细帮助
 60    name = data.name
 61    if name:
 62        _app = get_app(name)
 63        if not _app:
 64            await app.send(f"应用不存在 [{name}]")
 65            return
 66
 67        # 详细帮助
 68        info = f"[{_app.name}]\n{_app.all_help}"
 69        await app.send(info)
 70        return
 71
 72    # 展示所有应用介绍
 73    items = ["所有应用介绍一览"]
 74    for _app in app_list:
 75        info = f"[{_app.name}]\n{_app.intro}"
 76        items.append(info)
 77
 78    await app.send_many(items)
 79    await app.send("使用 帮助 <插件名> 可以进一步展示指定插件的详细帮助信息")
 80
 81
 82@app.on_idle()
 83@app.on_deep_all()
 84@app.on_cmd("强制退出", "force_exit")
 85async def force_exit():
 86    await app.group.goto(root_state)
 87    await app.send("已强制退出应用")
 88
 89
 90# @app.on_idle()
 91# @app.on_deep_all()
 92# @app.on_cmd("add_admin")
 93# async def add_admin(data: UidInput):
 94#     '''增加ayaka管理者'''
 95#     if app.user_id not in ayaka_root_config.owners:
 96#         await app.send("仅有ayaka所有者有权执行此命令")
 97#         return
 98
 99#     uid = data.uid
100
101#     if uid not in ayaka_root_config.admins:
102#         ayaka_root_config.admins.append(uid)
103#         ayaka_root_config.force_update()
104
105#     await app.send("设置成功")
106
107
108# @app.on_idle()
109# @app.on_deep_all()
110# @app.on_cmd("remove_admin")
111# async def remove_admin(data: UidInput):
112#     '''移除ayaka管理者'''
113#     if app.user_id not in ayaka_root_config.owners:
114#         await app.send("仅有ayaka所有者有权执行此命令")
115#         return
116
117#     uid = data.uid
118
119#     if uid in ayaka_root_config.admins:
120#         ayaka_root_config.admins.remove(uid)
121#         ayaka_root_config.force_update()
122
123#     await app.send("设置成功")
124
125
126# 定时提交db、保存setting
127@app.on_interval(60, show=False)
128async def update_data():
129    commit()
130    save()
131
132
133# 退出提交
134@driver.on_shutdown
135async def update_data():
136    commit()
137    save()
class UidInput(ayaka.depend.input.AyakaInput):
17class UidInput(AyakaInput):
18    uid: int = Field(description="QQ号", gt=0)

解析命令行参数为对应成员属性

注意:每个成员属性都必须标注类型,否则可能解析顺序出错

Inherited Members
pydantic.main.BaseModel
BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
ayaka.depend.input.AyakaInput
create_by_app
create_by_app_get_params
create_by_app_deal_exc
help
ayaka.depend.depend.AyakaDepend
props
class AppnameInput(ayaka.depend.input.AyakaInput):
21class AppnameInput(AyakaInput):
22    name: str = Field("", description="应用名")

解析命令行参数为对应成员属性

注意:每个成员属性都必须标注类型,否则可能解析顺序出错

Inherited Members
pydantic.main.BaseModel
BaseModel
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
ayaka.depend.input.AyakaInput
create_by_app
create_by_app_get_params
create_by_app_deal_exc
help
ayaka.depend.depend.AyakaDepend
props
@app.on_idle()
@app.on_deep_all()
@app.on_cmd('插件', 'plugin', 'plugins')
async def show_plugins():
25@app.on_idle()
26@app.on_deep_all()
27@app.on_cmd("插件", "plugin", "plugins")
28async def show_plugins():
29    '''展示所有应用'''
30    items = []
31    for _app in app_list:
32        info = f"[{_app.name}]"
33        items.append(info)
34    await app.send("\n".join(items))

展示所有应用

@app.on_idle()
@app.on_deep_all()
@app.on_cmd('状态', 'state')
async def show_state():
37@app.on_idle()
38@app.on_deep_all()
39@app.on_cmd("状态", "state")
40async def show_state():
41    state = app.group.state
42    if state <= root_state:
43        await app.send("当前设备处于闲置状态")
44        return
45    await app.send(f"当前状态:{state}")
@app.on_idle()
@app.on_deep_all()
@app.on_cmd('帮助', 'help')
async def show_help(data: ayaka.ayaka_master.AppnameInput):
48@app.on_idle()
49@app.on_deep_all()
50@app.on_cmd("帮助", "help")
51async def show_help(data: AppnameInput):
52    # 展示当前应用当前状态的帮助
53    if app.state > root_state:
54        app_name = app.state.keys[1]
55        _app = get_app(app_name)
56        await app.send(_app.help)
57        return
58
59    # 没有应用正在运行
60    # 查询指定应用的详细帮助
61    name = data.name
62    if name:
63        _app = get_app(name)
64        if not _app:
65            await app.send(f"应用不存在 [{name}]")
66            return
67
68        # 详细帮助
69        info = f"[{_app.name}]\n{_app.all_help}"
70        await app.send(info)
71        return
72
73    # 展示所有应用介绍
74    items = ["所有应用介绍一览"]
75    for _app in app_list:
76        info = f"[{_app.name}]\n{_app.intro}"
77        items.append(info)
78
79    await app.send_many(items)
80    await app.send("使用 帮助 <插件名> 可以进一步展示指定插件的详细帮助信息")
@app.on_idle()
@app.on_deep_all()
@app.on_cmd('强制退出', 'force_exit')
async def force_exit():
83@app.on_idle()
84@app.on_deep_all()
85@app.on_cmd("强制退出", "force_exit")
86async def force_exit():
87    await app.group.goto(root_state)
88    await app.send("已强制退出应用")
@driver.on_shutdown
async def update_data():
135@driver.on_shutdown
136async def update_data():
137    commit()
138    save()