## **CQ码工具类**
>[info] 全包路径:`com.forte.qqrobot.utils.CQCodeUtil`
此工具类提供了对于字符串和各种CQ码的创建、截取、移除、增加的方法。
#### **获取方式**
`CQCodeUtil`在监听函数被触发的时候会作为一个`动态参数` 被注入。
>[info] 其他动态参数还有类似`MsgSender`、各种监听消息封装类等等。
除了通过注入获取,CQCodeUtil本身即为一个单例对象。你可以直接通过其唯一的静态工厂方法来获取他的唯一实例对象。
`CQCodeUtil.build();`
#### **API方法**
>[warning] **以下API中,所有有关CQ码的生成的API,参数等信息均查询自官方CQ码对照表。**
>[warning] 随着版本的更新,CQCodeUtil中的方法可能远不止以下所列举的方法,请以实际代码内容为准。
* ### **字符串转义 - 不在CQ码内的消息**
```java
/**
* 字符串转义-不在CQ码内的消息
* 对于不在CQ码内的消息(即文本消息),为了防止解析混淆,需要进行转义。
* 转义规则如下:
* & -> &
* [ -> [
* ] -> ]
* @return 转义后的字符串
*/
public String escapeOutCQCode(String msgOutCQCode);
```
<br>
* ### **对于CQ码中的value(参数值),为了防止解析混淆,需要进行转义。**
```java
/**
* 对于CQ码中的value(参数值),为了防止解析混淆,需要进行转义。
* 此方法大概仅需要内部使用
* 转义规则如下:
* & -> &
* [ -> [
* ] -> ]
* , -> ,
* @param value 参数值的字符串
* @return 转义后的字符串
*/
private String escapeValue(String value);
```
<br>
>[warning] 以下方法名格式为 **`getCQCode_xxxxx`** 的方法目前存在两种形式:
> **①. getCQCode_xxxxx(参数)** 此类方法的方法名下划线后面的`xxxx`是开头小写的,在大多数后续版本中是被标注了”~~**已过时**~~“的(有一条删除线),它们依旧可以正常使用,只不过其返回值为直接的字符串拼接而不是 **`CQCode`** 封装对象。
> **②. getCQCode_Xxxx(参数)** 与上述情况①相对的,这类方法名下划线后的名称开头大写的方法,它们的返回值是一个 **`CQCode`** 封装对象,且没有标注”~~**已过时**~~“。
* ### **获取emoji字符表情**
```java
/**
* 获取emoji字符表情
* @param id moji字符的unicode编号
* @return emoji的CQ码
*/
public String getCQCode_face(String id);
public CQCode getCQCode_Face(String id);
```
<br>
* ### **获取原创表情**
```java
/**
* 获取原创表情
* @param id 原创表情的ID
* @return 原创表情CQ
*/
public String getCQCode_bface(String id);
public CQCode getCQCode_Bface(String id);
```
<br>
* ### **小表情**
```java
/**
* 小表情
* @param id 小表情的ID
* @return 小表情CQ
*/
public String getCQCode_sface(String id);
public CQCode getCQCode_Sface(String id);
```
<br>
* ### **发送自定义图片**
```java
/**
* 发送自定义图片
* @param file 图片文件名称
* @return 自定义图片CQ
*/
public String getCQCode_image(String file);
public CQCode getCQCode_Image(String file);
```
<br>
* ### **发送语音**
```java
/**
* 发送语音
* @param file 音频文件名称
* @param magic 是否为变声
* @return 发送语音CQ
*/
public String getCQCode_record(String file, Boolean magic);
public CQCode getCQCode_Record(String file, Boolean magic);
```
<br>
* ### **发送语音**
```java
/**
* 发送语音
* @param file 音频文件名称
* @return 发送语音CQ
*/
public String getCQCode_record(String file);
public CQCode getCQCode_Record(String file);
```
<br>
* ### **at某人**
```java
/**
* at某人
* @param qq qq号
* @return at CQcode
*/
public String getCQCode_at(String qq);
public CQCode getCQCode_At(String qq);
```
<br>
* ### **发送猜拳魔法表情**
```java
/**
* 发送猜拳魔法表情
* @param type 为猜拳结果的类型,暂不支持发送时自定义。该参数可被忽略。
* @return 猜拳魔法表情CQCode
*/
public String getCQCode_rps(String type);
public CQCode getCQCode_Rps(String type);
```
<br>
* ### **掷骰子魔法表情**
```java
/**
* 掷骰子魔法表情
* @param type 对应掷出的点数,暂不支持发送时自定义。该参数可被忽略。
* @return 掷骰子魔法表情CQCode
*/
public String getCQCode_dice(String type);
public CQCode getCQCode_Dice(String type);
```
<br>
* ### **戳一戳 仅支持好友消息使用**
```java
/**
* 戳一戳 仅支持好友消息使用
* @return 戳一戳CQCode
*/
public String getCQCode_shake();
public CQCode getCQCode_Shake();
```
<br>
* ### **匿名发消息(仅支持群消息使用)**
```java
/**
* 匿名发消息(仅支持群消息使用)
* 本CQ码需加在消息的开头。
* @param ignore 当{1}为true时,代表不强制使用匿名,如果匿名失败将转为普通消息发送。
* 当{1}为false或ignore参数被忽略时,代表强制使用匿名,如果匿名失败将取消该消息的发送。<br>
* @return 匿名发消息
*/
public String getCQCode_anonymous(Boolean ignore);
public CQCode getCQCode_Anonymous(Boolean ignore);
```
<br>
* ### **匿名发消息(仅支持群消息使用)**
```java
/**
* 匿名发消息(仅支持群消息使用)
* 本CQ码需加在消息的开头。
* 参数被忽略,代表强制使用匿名,如果匿名失败将取消该消息的发送。
* @return 匿名发消息
*/
public String getCQCode_anonymous();
public CQCode getCQCode_Anonymous();
```
<br>
* ### **发送音乐**
```java
/**
* 发送音乐
* 注意:音乐只能作为单独的一条消息发送
* @param type 为音乐平台类型,目前支持qq、163、xiami
* @param id 为对应音乐平台的数字音乐id
* @return 发送音乐
*/
public String getCQCode_music(String type, String id);
public CQCode getCQCode_Music(String type, String id);
```
<br>
* ### **发送音乐自定义分享**
```java
/**
* 发送音乐自定义分享
* @param url 为分享链接,即点击分享后进入的音乐页面(如歌曲介绍页)。
* @param audio 为音频链接(如mp3链接)。
* @param title 为音乐的标题,建议12字以内。
* @param content 为音乐的简介,建议30字以内。该参数可被忽略。
* @param image 为音乐的封面图片链接。若参数为空或被忽略,则显示默认图片。
* @return 音乐自定义分享CQCode
*/
public String getCQCode_music_custom(String url, String audio, String title, String content, String image);
public CQCoe dgetCQCode_music_Custom(String url, String audio, String title, String content, String image);
```
<br>
* ### **发送链接分享**
```java
/**
* 发送链接分享
* 注意:链接分享只能作为单独的一条消息发送
* @param url 为分享链接。
* @param title 为分享的标题,建议12字以内。
* @param content 为分享的简介,建议30字以内。该参数可被忽略。
* @param image 为分享的图片链接。若参数为空或被忽略,则显示默认图片。
* @return 链接分享CQCode
*/
public String getCQCode_share(String url, String title, String content, String image);
public CQCode getCQCode_Share(String url, String title, String content, String image);
```
<br>
* ### **生成emoji**
```java
/**
* 生成emoji
* @param id emoji的id
* @return emoji的CQCode
*/
public String getCQCode_emoji(String id);
public CQCode getCQCode_Emoji(String id);
```
<br>
* ### **从信息字符串中提取出CQCode码的字符串**
```java
/**
* 从信息字符串中提取出CQCode码的字符串
* @param msg 信息字符串
* @return 提取出CQCode码的字符串
*/
public List<String> getCQCodeStrFromMsg(String msg);
```
<br>
* ### **从信息字符串中提取出指定类型的CQCode码的字符串**
```java
/**
* 从信息字符串中提取出指定类型的CQCode码的字符串
* @param msg 消息字符串
* @param types CQ码类型
* @return
*/
public List<String> getCQCodeStrFromMsgByType(String msg, CQCodeTypes types);
```
<br>
* ### **从信息字符串中提取出指定类型的CQCode码的字符串**
```java
/**
* 从信息字符串中提取出指定类型的CQCode码的字符串
* @param msg 消息字符串
* @param types CQ码类型
* @return
*/
public List<String> getCQCodeStrFromMsgByType(String msg, CQCodeTypes types);
```
<br>
* ### **从信息字符串中移除CQCode字符串**
```java
/**
* 从信息字符串中移除CQCode字符串
* @param msg 字符串
* @return 移除后的字符串
*/
public String removeCQCodeFromMsg(String msg);
```
<br>
* ### **从信息字符串中提取出CQCode码对象**
```java
/**
* 从信息字符串中提取出CQCode码对象
* @param msg 信息字符串 如果为空则返回空字符串
* @return 提取出CQCode码对象
*/
public List<CQCode> getCQCodeFromMsg(String msg);
```
<br>
* ### **判断是否存在at某个qq**
```java
/**
* 判断是否存在at某个qq
* @return 是否at了某个qq
*/
public boolean isAt(String msg, String qq);
```
<br>
* ### **判断某个字符串中是否存在某类型的CQ码**
```java
/**
* 判断某个字符串中是否存在某类型的CQ码
* @param types CQ码类型
* @param text 字符串
* @return 是否包含
*/
public boolean isContains(CQCodeTypes types, String text);
```
*****
>[warning] 以上API的参照版本 `v1.0.2-BETA`
*****
- 前言
- 简单介绍
- 我该如何阅读文档
- 视频教程
- 安装与使用
- 开源协议
- 免责&捐助
- 注意事项
- 版本命名规则简介
- 主要功能版本历史
- 功能指引
- 通用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反馈
- 更新计划总览