Releases: simple-robot/simple-robot-v1
v1.17.0-Final
1.17.0-Final
1.x的最后一个核心版本。更(强烈)建议去使用新版本: simpler-robot
- 实现
@Depend
的orNull
参数。当orNull=true
的时候,如果注入的值不存在,则会为其注入null。(默认情况下依旧会报错) - 将
NicknameAble
和RemarkAble
整合到codeAble
相关接口内 - 调整
GroupAddRequest
, 增加部分可获取的属性
v1.16.3 update
1.16.3
-
更新
cqCodeUtils
模组至1.6.1
-
尝试优化
javax.annotation.Resource
带来的JDK版本兼容问题 -
改变限流拦截器的key值计算方式。
-
修复限流拦截器中无法根据code分类限流的bug。
-
增加一些待实现的功能代码
-
增加对(被)好友删除事件:
FriendDelete
和对应的注解:@Listen(MsgGetTypes.friendDelete)
和@OnFriendDelete
-
删除部分多余、过时内容
v1.16.2 fix bug
1.16.2
- 更新
cqCodeUtils
模组至1.6.0
以解决接收at全体的时候可能会报错的问题
v1.16.1 fix bug
1.16.1
- 更新
cqCodeUtils
模组至1.5.1-1.15
以解决其remove的bug
v1.16.0 update
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(...)
相同的参数(例如sort
、name
)
以@OnPrivate(...)
为例,@OnPrivate(sort = 500)
等效于@Listen(value = MsgGetTypes.privateMsg, sort = 500)
- 上述的注解继承、参数映射功能使用者也可任意自定义,并通过
AnnotationUtils.getAnnotation(...)
获取。
v1.15.2
1.15.2
- 修复botManager实现类中refreshBot逻辑错误的问题
- 优化国际化语言加载机制
v1.15.1 fix bug
1.15.1
- 修复@filter参数提取的时候如果不是结尾为
{{...}}
就会抛出异常的问题。
v1.15.0 update
1.15.0
- 修改接口定义,为一些接口增加获取昵称和备注的方法(例如群消息等)
昵称和备注的获取通过三个接口NicknameAble
、RemarkAble
、NickOrRemark
控制,可用于在自定义过滤器中进行各种判断。 - 为Configuration中增加一些方法:
putValue(String, Object)
、getValue(String)
、clearValue()
、getValueEntrySet()
使得Configuration支持存入任何自定义信息了。 HttpClientHelper
类增加静态方法clear()
以清除所有保存的http模板。ListenerFilter
类的自定义过滤器不再是静态了。- 完善close机制,现在你可以通过组件的Application实例或者run方法所返回的Context实例的close()方法来关闭当前的服务,并通过构建一个新的Application实例来再次启动。
不过一般情况下,我不推荐频繁关闭开启服务。
v1.14.1 fix bug
1.14.1
- 修改
@SimpleRobotApplication
的resource参数默认值,由/simple-robot-conf.properties
改为simple-robot-conf.properties
- 修复listenerManager中出现的排序异常bug
v1.14.0 update
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中追加一些正则相关的匹配规则:
FIND
、TRIM_FIND
、RE_CQCODE_FIND
、RE_CQCODE_TRIM_FIND
其中,结尾为FIND
的,使用正则的find(0)
进行匹配。 -
所有
KeywordMatchType
下的正则相关的匹配规则(例如REGEX
、FIND
等),全部支持动态参数提取。
动态参数提取的语法:
{{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
中的name
与type
参数分别对应@Depend
的value
和type
-
ListenerManager类开放方法
getListenerMethods()
,你可以通过注入此类并通过此方法得到所有的监听函数实例,配合一些自定义注解即可实现基于监听函数的动态菜单信息。