Skip to content
This repository has been archived by the owner on Oct 13, 2022. It is now read-only.

Releases: simple-robot/simple-robot-v1

v1.17.0-Final

26 Jan 06:56
Compare
Choose a tag to compare

1.17.0-Final

1.x的最后一个核心版本。更(强烈)建议去使用新版本: simpler-robot

  • 实现@DependorNull参数。当orNull=true的时候,如果注入的值不存在,则会为其注入null。(默认情况下依旧会报错)
  • NicknameAbleRemarkAble整合到codeAble相关接口内
  • 调整GroupAddRequest, 增加部分可获取的属性

v1.16.3 update

01 Aug 11:22
Compare
Choose a tag to compare

1.16.3

  • 更新cqCodeUtils模组至1.6.1

  • 尝试优化javax.annotation.Resource带来的JDK版本兼容问题

  • 改变限流拦截器的key值计算方式。

  • 修复限流拦截器中无法根据code分类限流的bug。

  • 增加一些待实现的功能代码

  • 增加对(被)好友删除事件: FriendDelete和对应的注解:@Listen(MsgGetTypes.friendDelete)@OnFriendDelete

  • 删除部分多余、过时内容

v1.16.2 fix bug

05 Jul 13:42
Compare
Choose a tag to compare

1.16.2

  • 更新cqCodeUtils模组至1.6.0以解决接收at全体的时候可能会报错的问题

v1.16.1 fix bug

04 Jul 16:50
Compare
Choose a tag to compare

1.16.1

  • 更新cqCodeUtils模组至1.5.1-1.15以解决其remove的bug

v1.16.0 update

02 Jul 17:35
Compare
Choose a tag to compare

1.16.0

  • quartz 版本更新到2.3.2
  • 集成cqCodeUtils模组,现在开始推荐使用KQCodeUtils并弃用原版的CQCodeUtil(依旧能用,但是不再维护)。
  • 修复@Filter动态参数提取的bug
  • 追加注解@Async(...)(标记异步函数),标注在监听函数上以表示此函数为异步执行。异步执行的线程由初始化的线程池控制。
  • 追加注解@Limit(...)(标记限流函数),标注监听函数上,代表其多长一段时间内可触发。例如@Limit(5),则代表5秒内只会触发一次。此功能基于监听函数拦截器实现。
  • 优化@Filter注解的at参数,现在当at=true的时候,在进行匹配的时候会自动移除掉消息文本中的 at 类型的CQ码。
  • 实现注解的参数映射,现在模板监听注解(例如@OnPrivate(...))提供了与@Listen(...)相同的参数(例如sortname
    @OnPrivate(...)为例,@OnPrivate(sort = 500)等效于@Listen(value = MsgGetTypes.privateMsg, sort = 500)
  • 上述的注解继承、参数映射功能使用者也可任意自定义,并通过AnnotationUtils.getAnnotation(...)获取。

v1.15.2

30 Jun 17:35
Compare
Choose a tag to compare

1.15.2

  • 修复botManager实现类中refreshBot逻辑错误的问题
  • 优化国际化语言加载机制

v1.15.1 fix bug

24 Jun 17:40
Compare
Choose a tag to compare

1.15.1

  • 修复@filter参数提取的时候如果不是结尾为{{...}}就会抛出异常的问题。

v1.15.0 update

23 Jun 16:03
Compare
Choose a tag to compare

1.15.0

  • 修改接口定义,为一些接口增加获取昵称和备注的方法(例如群消息等)
    昵称和备注的获取通过三个接口NicknameAbleRemarkAbleNickOrRemark控制,可用于在自定义过滤器中进行各种判断。
  • 为Configuration中增加一些方法:
    putValue(String, Object)getValue(String)clearValue()getValueEntrySet()
    使得Configuration支持存入任何自定义信息了。
  • HttpClientHelper类增加静态方法clear()以清除所有保存的http模板。
  • ListenerFilter类的自定义过滤器不再是静态了。
  • 完善close机制,现在你可以通过组件的Application实例或者run方法所返回的Context实例的close()方法来关闭当前的服务,并通过构建一个新的Application实例来再次启动。
    不过一般情况下,我不推荐频繁关闭开启服务。

v1.14.1 fix bug

19 Jun 10:35
Compare
Choose a tag to compare

1.14.1

  • 修改@SimpleRobotApplication的resource参数默认值,由/simple-robot-conf.properties 改为 simple-robot-conf.properties
  • 修复listenerManager中出现的排序异常bug

v1.14.0 update

18 Jun 06:24
Compare
Choose a tag to compare

1.14.0

  • 修改配置信息覆盖规则,现在的优先级是:启动参数 > 配置文件 > 注解

  • configuration类中增加runParameter相关, 即启动参数相关。

  • 启动参数中,使用'--xxx'来通过启动参数向配置中追加参数。

  • 增加一个配置项:simbot.profiles.active (或兼容spring:spring.profiles.active), 其值可以允许加载额外的配置文件。类似于Spring。
    例如, 你的配置文件是conf.properties, 其中你写了一个simbot.profiles.active=dev,test, 则除了当前配置文件以外,还会加载conf-dev.properties文件和conf-test.properties文件。
    之后加载的配置信息会覆盖原先的配置信息。你可以结合启动参数--simbot.profiles.active=来实现不同环境的多配置文件,例如线上默认是8080端口,本地则是8877端口啥的。

  • KeywordMatchType中追加一些正则相关的匹配规则:FINDTRIM_FINDRE_CQCODE_FINDRE_CQCODE_TRIM_FIND
    其中,结尾为FIND的,使用正则的find(0)进行匹配。

  • 所有KeywordMatchType下的正则相关的匹配规则(例如REGEXFIND等),全部支持动态参数提取。
    动态参数提取的语法:
    {{name[,regex]}},其中,name为动态提取参数的名称,regex为其匹配正则。
    例如:

@Beans
public class Test{
    /** 监听正则为 'number is (\\d+)'的消息,并提取\\d+为number参数 */
    @Listen(MsgGetTypes.privateMsg)
    @Filter("number is {{number,\\d+}}")
    public void test1(PrivateMsg msg, MsgSender sender, @FilterValue("number") Long number){
        sender.SENDER.sendPrivateMsg(msg, "您的号码为:" + number);
    }
    // ...
}

其中@Filter默认匹配规则为REGEX,因此可以使用动态参数提取,然后再方法参数中添加了@FilterValue("number") Long number
其中@FilterValue("number")的参数number就是上述@filter注解中的number参数,number的匹配规则为\\d+,即数字。
@filter中真正的匹配规则会变成:number is (\\d+)
参数提取语法中,regex可以省略,变成{{name}},此时匹配规则默认为.+
如果要使用普通的'{'字符串,使用反斜杠转义。

  • 追加模板注解:

    • @OnDiscuss
    • @OnFriendAdd
    • @OnFriendAddRequest
    • @ongroup
    • @OnGroupAddRequest
    • @OnGroupAdminChange
    • @OnGroupBan
    • @OnGroupFileUpload
    • @OnGroupMemberIncrease
    • @OnGroupMemberReduce
    • @OnGroupMsgDelete
    • @OnPrivate
    • @OnPrivateMsgDelete
      其代表各个对应的监听类型,例如@OnPrivate 等同于 @Listen(MsgGetTypes.privateMsg)
  • 兼容注解@Resource, @Resource中的nametype参数分别对应@Dependvaluetype

  • ListenerManager类开放方法getListenerMethods(),你可以通过注入此类并通过此方法得到所有的监听函数实例,配合一些自定义注解即可实现基于监听函数的动态菜单信息。