GraiaProject / Application

一个设计精巧, 协议实现完备的, 基于 mirai-api-http 的即时聊天软件自动化框架.
https://graia-document.vercel.app/
GNU Affero General Public License v3.0
438 stars 63 forks source link

关于指令系统设计 #77

Closed GreyElaina closed 3 years ago

GreyElaina commented 3 years ago

终于要做了, 虽然是寒假也可能鸽不出来的

由于 MessageChain 对象的特殊性, 没办法直接复用 argparse 这样的库, 但是我没什么想法...所以希望能得到各位的意见.

顺便, 我可能会把这个特性造成这样:

@bcc.receiver("GroupMessage", dispatchers=[
    CommandParser("指令前缀", "子指令1", parameters={
        "param1": RequireParameter(["--长参", "-短"]),
        "param2": SwitchParameter(["--开关"], default=True, auto_reverse=False) # 类似开关, 返回是 bool 类型
    })
])
def listener1(param1: MessageChain, param2: bool):
     ...
GreyElaina commented 3 years ago

写出来了伪代码反而有想法了(

GreyElaina commented 3 years ago

鸽了.

GreyElaina commented 3 years ago

就差文档了...

SocialSisterYi commented 3 years ago

args parse这部分被我用一个正则搞定了,虽然对顺序有很大的限制,且各个功能的正则各不相同

GreyElaina commented 3 years ago

Literature 将作为一个扩展包被继承到 Avilla 中。