# 枚举 >[info] 此章节将会列举出现的各种枚举类型,并对其中的各个类型所代表的韩式进行解释。 > 从核心`1.4.0`开始,实装了枚举工厂与byName注解,所以从核心`1.4.0`版本开始使用者可以利用枚举工厂来构建自己的枚举实现以达到DIY效果。 > 工厂的使用方式具体请查看章节`高级内容`\-`枚举工厂` <br> ## 监听消息对象中的枚举参数 首先在介绍各个枚举之前,我先提一句,此处一般不会列举在监听消息对象中出现的枚举参数(例如群消息(`GroupMsg`) 中的 群权限类型(`PowerType`) ) 。这类枚举一般来讲很好理解,所以一般它们的介绍会直接与监听消息写在一起,或者干脆没有写。假如你找不到这类枚举参数的介绍,可以直接看一眼源码。 <br> ## KeywordMatchType >[success] 此枚举在`**@Filter`**注解的参数`**keywordMatchType`**中使用。其代表了当监听到一个消息的时候,使用怎样的匹配规则来根据匹配关键字(`**@Filter`**注解的`**value`**参数)来对消息进行过滤。 > 以下为此枚举的各个成员以及其对应的意义: | 枚举成员 | 意义 | | --- | --- | | `REGEX` | 使用正则规则匹配 | | `TRIM_REGEX` | 首尾去空后正则匹配 | | `RE_CQCODE_REGEX` | 移除掉所有CQ码后正则匹配 | | `RE_CQCODE_TRIM_REGEX` | 移除掉所有CQ码并首尾去空后正则匹配 | | `EQUALS` | 使用完全相同匹配 | | `TRIM_EQUALS` | 首尾去空后相同匹配 | | `RE_CQCODE_EQUALS` | 移除掉所有CQ码后相同匹配 | | `RE_CQCODE_TRIM_EQUALS` | 移除掉所有CQ码并首尾去空后相同匹配 | | `CONTAINS` | 包含匹配 | | `TRIM_CONTAINS` | 去空的包含匹配 | | `RE_CQCODE_CONTAINS` | 移除掉所有CQ码后包含匹配 | | `RE_CQCODE_TRIM_CONTAINS` | 移除掉所有CQ码并开头结尾去空后包含匹配 | >[info] `1.8.0`后增加: | 枚举成员 | 意义 | | --- | --- | | `STARTS_WITH` | 首部匹配 | | `TRIM_STARTS_WITH` | 首尾去空的首部匹配 | | `RE_CQCODE_STARTS_WITH` |除掉所有CQ码后首部匹配 | | `RE_CQCODE_TRIM_STARTS_WITH` | 移除掉所有CQ码并首尾去空后首部匹配 | | `ENDS_WITH` | 尾部匹配 | | `TRIM_ENDS_WITH` | 首尾去空的尾部匹配 | | `RE_CQCODE_ENDS_WITH` | 移除掉所有CQ码后尾部匹配 | | `RE_CQCODE_TRIM_ENDS_WITH` | 移除掉所有CQ码并首尾去空后尾部匹配 | ## MostType >[success] 此枚举在`**@Filter`**注解的参数`**mostType`**中使用。其代表了当`**@Filter`**的`**value`**参数不止一个的时候,应该如何匹配多个关键词 > 以下为此枚举的各个成员以及其对应的意义: | 枚举成员 | 意义 | | --- | --- | | `EVERY_MATCH` | 需要全部匹配 | | `ANY_MATCH` | 任意一个匹配 | | `NONE_MATCH` | 没有任何匹配 | ## MsgGetTypes >[success] 此枚举通常在`**@Listen`**注解的参数`**value`**中使用。其每个成员分别各代表一个监听消息的类型。 > 以下为此枚举的各个成员以及其对应的意义: | 枚举成员 | 意义 | | --- | --- | | `MsgGetTypes.privateMsg` | 私信信息 | | `MsgGetTypes.discussMsg` | 讨论组信息 | | `MsgGetTypes.groupMsg` | 群消息 | | `MsgGetTypes.friendAdd` | 事件-好友添加 | | `MsgGetTypes.groupAdminChange` | 事件-管理员变动 | | `MsgGetTypes.groupMemberIncrease` | 事件-群成员增加 | | `MsgGetTypes.groupMemberReduce` | 事件-群成员减少 | | `MsgGetTypes.friendAddRequest` | 请求-添加好友 | | `MsgGetTypes.groupAddRequest` | 请求-群添加 | ## CQCodeTypes >[success] 此枚举为官方CQ文档中所有的CQ码的类型封装,并提供了一部分可以方法的封装。 > 但是假如你要获取CQ码的字符串还是建议使用`**CQCodeUtil`**工具类。(详情请见CQ码操作相关章节) > (但是我总感觉我看的是旧的文档,如果有新的文档的话请告知,谢谢) > 以下为此枚举的各个成员以及其对应的意义: | 枚举成员 | 意义 | | --- | --- | | `defaultType` | 默认的未知类型,当无法获取或解析的时候将会使用此类型 | | `face` | \[CQ:face,id={1}\] - QQ表情 | | `bface` | \[CQ:bface,id={1}\] - 原创表情 | | `sface` | \[CQ:sface,id={1}\] - 小表情 | | `image` | \[CQ:image,file={1}\] - 发送自定义图片 | | `record` | \[CQ:record,file={1},magic={2}\] - 发送语音 | | `at` | \[CQ:at,qq={1}\] - @某人 | | `rps` | \[CQ:rps,type={1}\] - 发送猜拳魔法表情 | | `dice` | \[CQ:dice,type={1}\] - 发送掷骰子魔法表情 | | `shake` | \[CQ:shake\] - 戳一戳(原窗口抖动,仅支持好友消息使用) | | `anonymous` | \[CQ:anonymous,ignore={1}\] - 匿名发消息(仅支持群消息使用) | | `music` | \[CQ:music,type={1},id={2}\] - 发送音乐 | | `music_custom` | \[CQ:music,type=custom,url={1},audio={2},title={3},content={4},image={5}\] - 发送音乐自定义分享 | | `share` | \[CQ:share,url={1},title={2},content={3},image={4}\] - 发送链接分享 | | `emoji` | \[CQ:emoji,id={1}\] - emoji表情 | ## TimeType >[success] 此枚举代表在定时任务注解中,`**@FixedRateTask`**的参数`**timeType`**中指定参数时间的类型 | 枚举成员 | 意义 | | --- | --- | | `millisecond` | 毫秒 | | `second` | 秒 | | `minute` | 分钟 | | `hour` | 小时 | ## TimeTaskTemplate >[success] 此枚举在注解`**@TypeTask`**中使用,提供一系列简单的定时任务模板 | 枚举成员 | 意义 | | --- | --- | | `INTERVAL_1_MILLISECOND` | 每1毫秒触发一次 | | `INTERVAL_100_MILLISECOND` | 每100毫秒触发一次 | | `INTERVAL_200_MILLISECOND` | 每200毫秒触发一次 | | `INTERVAL_500_MILLISECOND` | 每500毫秒触发一次 | | `INTERVAL_1_SECOND` | 每1秒触发一次 | | `INTERVAL_5_SECOND` | 每5秒触发一次 | | `INTERVAL_10_SECOND` | 每10秒触发一次 | | `INTERVAL_30_SECOND` | 每30秒触发一次 | | `INTERVAL_1_MINUTE` | 每1分钟触发一次 | | `INTERVAL_5_MINUTE` | 每5分钟触发一次 | | `INTERVAL_10_MINUTE` | 每10分钟触发一次 | | `INTERVAL_30_MINUTE` | 每30分钟触发一次 | | `INTERVAL_1_HOUR` | 每1小时触发一次 | | `INTERVAL_2_HOUR` | 每2小时触发一次 | | `INTERVAL_4_HOUR` | 每4小时触发一次 | | `INTERVAL_6_HOUR` | 每6小时触发一次 | | `INTERVAL_12_HOUR` | 每12小时触发一次 | | `INTERVAL_24_HOUR` | 每24小时触发一次 | | `EVERY_DAY_TIME_00_00` | 每天00点触发 | | `EVERY_DAY_TIME_12_00` | 每天12点触发 | | `EVERY_DAY_TIME_18_00` | 每天18点触发 | | `EVERY_WEEK_MONDAY` | 每周一0点触发 | | `EVERY_WEEK_TUESDAY` | 每周二0点触发 | | `EVERY_WEEK_WEDNESDAY` | 每周三0点触发 | | `EVERY_WEEK_THURSDAY` | 每周四0点触发 | | `EVERY_WEEK_FRIDAY` | 每周五0点触发 | | `EVERY_WEEK_SATURDAY` | 每周六0点触发 | | `EVERY_WEEK_SUNDAY` | 每周天0点触发 | ## LogLevel >[success] 此枚举代表在日志的拦截接口中,指定日志的级别 | 枚举成员 | 意义 | | --- | --- | | `DEBUG` | DEBUG级别 ,level=0 | | `INFO` | INFO级别 level=1 | | `WARNING` | WARNING级别 level=2 | | `ERROR` | ERROR级别 level=3 | >[info] **level **可以通过方法`**getLevel()`**获取 ## CacheTypes >[success] 此枚举代表在 **GETTER **的缓存转化API中作为参数使用,指定缓存时长的时间类型 | 枚举成员 | 意义 | | --- | --- | | `PLUS_NANOS` | 当前时间后推的n nanos | | `PLUS_SECONDS` | 当前时间后推xx秒 | | `PLUS_MINUTES` | 当前时间后推xx分钟 | | `PLUS_HOURS` | 当前时间向后推xx小时 | | `PLUS_DAYS` | 当前时间向后推xx天 | | `PLUS_MONTH` | 当前时间向后推xx月 | | `PLUS_YEAR` | 当前时间向后推xx年 | ## BreakType >[success] 此枚举代表在`**@ListenBreak`** 注解和 `**@ListenBreakPlugin`** 注解中,根据函数的返回值对于是否截断的判定类型。 | 枚举成员 | 意义 | | --- | --- | | `ALWAYS_BREAK` | 不论结果,永远截断 | | `ALWAYS_NO` | 不论结果,永远不截断(等于没写 | | `WHEN_NOT_NULL` | 当执行结果不为空的时候才会进行截断 | | `WHEN_NULL` | 当执行结果为null的时候才会进行截断 | ## ResultSelectType >[success] 此枚举在配置中作为参数`**resultSelectType`**使用,其代表从多个监听相应值中选择唯一一个返回值的规则。 | 枚举成员 | 意义 | | --- | --- | | `FIRST` | 默认取第一个返回值 | | `FIRST_BREAK` | 默认寻找第一个截断返回值。一般来讲,监听相应数组的最后一个即为截断返回值,所以相当于选取最后一个值。 | | `FIRST_BREAK_PLUGIN` | 取第一个插件截断的返回值。 | ## MostDIYType >[success] 此枚举参数与`MostType`类似,使用在`@Filter`注解的`mostDIYType`参数,用来决定当存在多个自定义过滤规则的时候应该如何分配结果。 > 以下为此枚举的各个成员以及其对应的意义: | 枚举成员 | 意义 | | --- | --- | | `EVERY_MATCH` | 需要全部匹配 | | `ANY_MATCH` | 任意一个匹配 | | `NONE_MATCH` | 没有任何匹配 |