## **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码内的消息(即文本消息),为了防止解析混淆,需要进行转义。 * 转义规则如下: * & -> &amp; * [ -> &#91; * ] -> &#93; * @return 转义后的字符串 */ public String escapeOutCQCode(String msgOutCQCode); ``` <br> * ### **对于CQ码中的value(参数值),为了防止解析混淆,需要进行转义。** ```java /** * 对于CQ码中的value(参数值),为了防止解析混淆,需要进行转义。 * 此方法大概仅需要内部使用 * 转义规则如下: * & -> &amp; * [ -> &#91; * ] -> &#93; * , -> &#44; * @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` *****