Giter Site home page Giter Site logo

yuq's People

Contributors

icecream-qaq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

yuq's Issues

为 Action 添加 TaskLimit 注解限制 Action 同一时间重复运行方式

提供三种不同的级别规定 Action 的重复任务运行限制。

限制类型

sender: 发送者。
source: 发送源
all: 全局

  • 当限制为发送者时,则在当前 Action 完成之前当前 QQ 下次发言无法触发本 Action。
  • 当限制为发送源时,如果为私聊,则发送源为发送者,同发送者。
    如果为群聊,则当前发送源为群,则在当前 Action 完成之前 全群所有成员下次发言无法触发本 Action。
  • 当限制为全局时,则在当前 Action 完成之前,所有人无法触发本 Action。

冷却时间

允许提供一个时间,来标明当前限制类型在执行本 Action 后的一段时间内仍无法触发本 Action。

例外权限

声明当拥有此权限的人,可以不受限制与冷却时间,重复使用本 Action。

权限验证 API 规范及功能需求收集

提供快速确定好友,临时会话目标,群成员的权限,同时允许更多精细化的操作方式。

对于受检查目标

目标具有的权限区分应该更加细腻。
应该按照不同场景,区分目标拥有不同的权限列表。
同一个 ID 下,一个人应在好友状态,群聊状态,临时会话状态拥有不同的权限。
同时不同群中同一个人拥有的权限也应该是不同的。

权限组

一个权限组为一组权限的集合。
同时权限组有具体的生效范围。
一个权限组可以仅在某个群生效,也可以在多个群生效,也可以在全部群同时生效。
同时也可以在好友私聊和临时会话中同时生效。
一个目标,允许有多个权限组。
但是同生效范围仅允许有一个权限组。
一个权限组可以继承自另外一个权限组,继承其权限和生效范围。

默认权限组

对于群内提供一些默认权限组。

群成员组

所有群成员都会被默认添加进本组。
也是理论上最基础的用户组。

管理员组

继承自群成员组。
所有管理员会被自动添加进本组。
当目标失去管理员身份时,会被自动移出本组,并移动至群成员组。
如果目标拥有其他权限组,如若权限组小于管理员组级别,则会自动移动至管理员组。

群主组

继承自管理员组
群主会被自动添加进本组。
当群主失去群主资格的时候会被自动移出本组。

私聊

临时会话组

TODO

好友组

继承自临时会话组

权限名

权限名不限制格式,但多级权限将使用 ”.“ 分割。
如授予用户上级权限,则代表用户可拥有其所有子权限。
举例:当用户拥有 moe.chat 权限时,可正常使用 moe.chat.sendMessage 权限的指令。

API

权限操作

对目标

应当为 Contact 提供
boolean hasPermission(String permissionName)
方法来确定目标用户是否有具体权限。

应当为 Contact 提供
boolean addPermission(String permissionName)
方法来为目标用户新增具体权限。

应当为 Contact 提供
boolean delPermission(String permissionName)
方法来为目标用户移除具体权限。

应当为 Contact 提供
boolean moveToPermissionGroup(String groupName)
方法来确定来将目标移动至某一权限组。

对权限组

TODO

Controller

应当为 Controller Action 提供 @PermissionCheck 注解用以提供权限检查。

如果有什么更好的想法与操作方式,或者优化设计思路,请回复。

获取群成员最后发言时间

yuq.getGroups().get(xxxx).get(xxxx)得到的member对象希望新增一个.getLastTime()方法,用以获得群成员的发言时间

对路由映射参数规则进行征集。

对路由分词进行改造,不再使用空格分词,允许使用更复杂的分词逻辑。
同时支持更复杂的内容映射到参数。
以致于提升 Controller 的易用性。

希望您能提供:

  • 需要映射的内容
  • 希望映射成的格式
  • 简单举例一个样例
  • 简单举例样例映射后的结果

如:
希望可以将 StringintStringint... 映射为 Map<String,Integer>
举例:
敏捷12力量3
映射为:

{
    "敏捷":12,
    "智慧":3
}

如果您有相应的需求,欢迎回复本 issue 来提供思路。

希望能为@Action添加重载功能

当前的Action不支持重载,在识别的时候不能按照参数类型启动合适的方法。但是很多的功能目前必须使用重载。

@Action(.rab {skill})
public void rab(String skill){}
@Action(.rab {time} {skill})
public void rab(int time,String skill){}
@Action(.rab {skill} {num})
public void rab(String skill,int num){}
@Action(.rab {time} {skill} {num})
public void rab(int time,String skill,int num){}

上述例子中 当我输入:".rab 3 技能"的时候,不会启动第二个方法而是会启动第三个方法并且报错。
能否添加一个重载的功能来匹配合适的方法。

支持 Action 与 Path 使用 “ ”(空格)为路由区分

    @Action("{time}秒后说一句/{nr}")
    fun timeMessage(time: String, nr: String, message: Message): String {
        //TODO
    }

可同等替换为

    @Action("{time}秒后说一句 {nr}")
    fun timeMessage(time: String, nr: String, message: Message): String {
        //TODO
    }

以增强表达力

为 Java 用户提供 DSL 方式构建消息。

举例演示。

        buildMessage(() -> {
            textLine("%s,您好。", member.getNameCard());
            if (memberGirlsNow == 0){
                text("您当前还没有老婆!");
                return;
            }

            for (String girl : girls) {
                textLine("-------------");
                textLine("老婆:%s。",girl);
                imageByFile();
            }

            if (memberGirlsNow == memberGirlsMax){
                textLine("-------------");
                text("您的老婆已达上限!");
            }
        });

相比于 LineQ 方式,DSL 方式在承载业务上,要轻松的多。
LineQ 主要用于非承载业务的复杂消息构建。
DSL 主要用于承载业务的复杂消息构建。

获取当前登录bot的自身信息

如题,有时候需要获知当前已登录机器人的qq号/昵称等信息,之前在使用酷Q java sdk编程时有类似于CQ.getLoginNick()CQ.getLoginQQ()这样的API,也希望YuQ能提供类似的接口来获得当前登录机器人的一些信息(QQ/昵称/服务器等)

状态参数 API

我们可以给某些用户添加一定的状态参数。
状态参数可拥有自定义持续时间。
同一状态可以拥有数量。
在状态结束后拥有自定义回调。

对于用户,我们将提供添加状态的操作
(状态名: String, 持续时间: Long 可选 默认不过期, 数量: Int 可选 默认 1, 与其他同名状态独立: Boolean 可选 默认 false, 结束回调)
我们提供查询用户是否具有某个状态的操作。
对于移除状态操作,额外提供不触发结束回调选项。

精简完善Action的正则匹配功能

现在使用Action时,如果想同时匹配多种结果Synonym注解显得比较麻烦。
而同时使用正则和参数获取的时候,每段正则必须放在{名称:[正则]}内,显得冗长多余。
在匹配时,会匹配到头部相同命令。(如.coc5会被匹配到Action("{pt:[\.。]coc")上)(可能已经修复)
不使用空格的情况下,正则仅能识别为String类型,不能类型转换。

为 @Action 注解添加优先级

比如下列代码:

@Action("rad{ex}")
fun rad(ex: String) = "rad!!"
@Action("radio{ex}")
fun radio(ex: String) = "radio!!"

当发送 radio111 给机器人时,预想的是机器人返回 radio!!,但实际情况是返回 rad!!

希望冰淇淋大佬能为 @Action 注解添加优先级,或者提供其他解决方案。

当前可用的解决方案:

  • if(ex.startsWith("io")) return radio(ex.subString(2))十分不爽
  • @Action("rad{ex:[^i][^o].*}")十分不爽;强制要求长度至少为 2 的字符串,也可能是我太菜了不会写正则

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.