## **CodeTemplate**
版本 **`1.5.0-1.15`** 更新后,追加了一个接口`CodeTemplate<T>`,此接口定义了一些常见的CQ码模板方法,例如:
```java
T at(String code);
T atAll();
T image(String id, boolean destruct);
// 其他省略...
```
- 这些方法是优先根据酷Q的CQ码文库中的信息进行定义的,但是不排除后续更新中会追加新的内容的可能性。
- 返回值泛型T代表了以什么样的载体来承载这些特殊code,例如`String`或者`KQCode`。
- 具体定义内容直接参考源代码,此处不做列举。
至于使用,模组内默认提供了一些默认的实现。
## **默认实现类**
- ### **KQCodeStringTemplate**
此类为单例,依赖于`KQCodeUtils`并使用`String`作为返回值载体。
你可以通过`INSTANCE`或`getInstance()`得到其实例,也可以直接通过`KQCodeUtils`的`getStringTemplate()`方法得到。
- ### **KQCodeTemplate**
此类为单例,使用`KQCode`实例作为返回值载体。
你可以通过`INSTANCE`或`getInstance()`得到其实例,也可以直接通过`KQCodeUtils`的`getKqCodeTemplate()`方法得到。
## **使用方式**
```java
// 一段文字与cq码的混编字符串
String cqCodeText = "你好![CQ:at,qq=123456] 哈哈 [CQ:at,qq=666666] 这段话很长的。[CQ:image,file=http://forte.love:15520/img/r]";
// utils实例
final KQCodeUtils utils = KQCodeUtils.getInstance();
// 获取string模板
final CodeTemplate<String> stringTemplate = utils.getStringTemplate();
// at all
final String atAll = stringTemplate.atAll();
final String at = stringTemplate.at(123456789);
// ... 还有很多模板方法,主要基于库Q码文库的
System.out.println(atAll);
System.out.println(at);
// 获取KQCode模板
final CodeTemplate<KQCode> kqCodeTemplate = utils.getKqCodeTemplate();
// at all
final KQCode kqAtAll = kqCodeTemplate.atAll();
// 注意,KQCode是不可变类,如果你想要put新参数、修改参数之类的,你需要将其转化为他的可变子类MutableKQCode
final MutableKQCode mutableAtAll = kqAtAll.mutable();
mutableAtAll.put("name", "jack");
// 可变类MutableKQCode也可以转化为不可变类KQCode
final KQCode immutableKqCode = mutableAtAll.immutable();
System.out.println(kqAtAll);
System.out.println(mutableAtAll);
System.out.println(immutableKqCode);
```
>[success] 输出结果为:
```
[CQ:at,qq=all]
[CQ:at,qq=123456789]
[CQ:at,qq=all]
[CQ:at,qq=all,name=jack]
[CQ:at,qq=all,name=jack]
```
- 前言
- 简单介绍
- 我该如何阅读文档
- 视频教程
- 安装与使用
- 开源协议
- 免责&捐助
- 注意事项
- 版本命名规则简介
- 主要功能版本历史
- 功能指引
- 通用API与功能
- 国际化语言
- 异常
- 消息监听
- @Listen
- @OnListen模板
- @Filter
- 消息参数截取
- @Spare
- @Constr
- @Ignore
- @ListenBreak
- @ListenBreakPlugin
- @ListenBody
- 监听响应
- 成功判定与返回值
- 监听上下文
- 动态参数
- 监听消息API
- 异步监听 @Async
- 限流监听 @Limit
- 自定义Http送信器
- 枚举与类型
- 送信器
- SENDER
- SETTER
- GETTER
- 返回值
- 其他位置
- 日志与日志拦截
- 异常处理
- 依赖注入
- 自定义依赖获取
- 批量依赖载入
- 注意事项
- 常量
- 定时任务
- 自定义过滤
- 拦截器
- 拦截器总定义
- 上下文对象总定义
- 监听消息拦截
- 送信器拦截
- 监听函数拦截
- CAT码
- CQ码
- CQCode
- CQ码工具类
- CQ扩展工具类
- AppendList拼接链
- 高级内容
- 阻断机制
- 截断机制
- 自定义枚举类型
- 枚举工厂
- byName注解
- 自定义注解
- 配置
- 文件配置
- 注解配置
- 参数配置
- 多配置
- 多账号
- 自定义账号管理器
- 小心!
- 核心版本与组件如何升级核心
- 核心版本迭代指南
- 核心
- 更新日志
- jar包与依赖
- 监听消息类结构图
- 快速启动
- 模组与扩展
- 模组开发
- 现有模组
- 通用模组-延时任务
- 通用模组-CQ码工具
- 转义器
- CQ码操作工具类
- CQ码模板-CodeTemplate
- CQ码载体-KQCode
- CQ码构建器
- MQ码工具类
- 通用模组-redis-bot管理器
- 通用模组-Debugger
- Debugger-common模块
- Debugger-server模块
- Debugger-client模块
- 通用模组-钉钉机器人
- 组件-Mirai(JVM)
- 快速开始(1.13+)
- springboot-starter
- 注意事项
- 配置
- 额外的内容
- 快速回复
- 额外监听
- CQ码解析
- 组件-酷Q(QQ)-CQ HTTP API(基本失效)
- 快速开始(推荐)
- 快速开始(1.7.x以下,不推荐)
- 快速开始(Springboot启动器)
- 启动器、启动接口与配置类
- 配置
- 文件配置
- 注意事项
- 更新日志
- 额外的内容
- 自定义额外监听
- CQ送信器
- 元事件
- 监听消息类结构图
- 组件-酷Q(QQ)-JCQ(失效)
- 快速开始
- 更新日志
- 额外的内容
- JCQ日志
- 配置
- 注意事项
- 监听消息类结构图
- 组件-酷Q(QQ)-HTTP TO CQ(失效)
- 快速开始(核心1.7.x及以下)
- 启动器、启动接口与配置类
- 配置
- 文件配置
- 注意事项
- 更新日志
- 监听消息类结构图
- 组件-酷Q(QQ)-LEMOC (失效)
- 快速开始(核心1.7.x及以下)
- 配置
- 注意事项
- 更新日志
- 监听消息类结构图
- Springboot快速启动器
- 常见问题汇总
- BUG反馈
- 更新计划总览