public class BotUtils
extends java.lang.Object
| 构造器和说明 |
|---|
BotUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
static java.lang.String |
arrayMsgToCode(ArrayMsg arrayMsg)
从 ArrayMsg 生成 CQ Code
|
static java.lang.String |
arrayMsgToCode(java.util.List<ArrayMsg> arrayMsgs)
从
List<ArrayMsg> 生成 CQ Code |
static java.lang.String |
escape(java.lang.String string)
消息编码
|
static java.lang.String |
escape2(java.lang.String string)
消息编码(可用于转义CQ码,防止文本注入)
|
static java.util.List<java.util.Map<java.lang.String,java.lang.Object>> |
generateForwardMsg(BaseBot bot,
java.util.List<?> contents)
兼容 Lagrange
生成自定义合并转发消息
|
static java.util.List<java.util.Map<java.lang.String,java.lang.Object>> |
generateForwardMsg(java.util.List<java.lang.String> contents)
兼容 Shamrock
生成自定义合并转发消息
|
static java.util.List<java.util.Map<java.lang.String,java.lang.Object>> |
generateForwardMsg(java.util.List<java.lang.String> contents,
java.util.List<java.lang.String> quoteMsgId)
兼容 Shamrock
生成引用消息和自定义消息混合合并转发
|
static java.util.List<java.util.Map<java.lang.String,java.lang.Object>> |
generateForwardMsg(long uin,
java.lang.String name,
java.util.List<java.lang.String> contents)
创建自定义消息合并转发
|
static java.util.List<java.util.Map<java.lang.String,java.lang.Object>> |
generateForwardMsg(java.lang.String uin,
java.lang.String name,
java.util.List<?> contents)
兼容 Lagrange
生成自定义合并转发消息
|
static java.util.List<java.lang.Long> |
getAtList(java.util.List<ArrayMsg> arrayMsg)
获取消息内所有at对象账号(不包含全体 at)
|
static java.lang.String |
getGroupAvatar(long groupId,
int size)
获取群头像
|
static java.util.List<java.lang.String> |
getMsgImgUrlList(java.util.List<ArrayMsg> arrayMsg)
获取消息内所有图片链接
|
static java.util.List<java.lang.String> |
getMsgVideoUrlList(java.util.List<ArrayMsg> arrayMsg)
获取消息内所有视频链接
|
static java.lang.String |
getNickname(long userId)
已过时。
|
static java.lang.String |
getUserAvatar(long userId,
int size)
获取用户头像
|
static boolean |
isAtAll(java.util.List<ArrayMsg> arrayMsg)
判断是否为全体at
|
static boolean |
isAtAll(java.lang.String msg)
判断是否为全体at
if (BotUtils.isAtAll(event.getRawMessage())) {
//是at全体的消息 TODO:做点什么
}
|
static void |
rawConvert(com.google.gson.JsonObject rawJson,
MessageEvent event)
从 msg 转换
|
static java.util.List<ArrayMsg> |
rawToArrayMsg(@NonNull java.lang.String msg)
将 CQ 字符串消息转换为
List<ArrayMsg>。 |
static com.google.gson.JsonArray |
rawToJson(java.lang.String msg)
将 CQ 字符串消息转换为 JSON 数组消息。
|
static java.lang.String |
unescape(java.lang.String string)
消息解码
|
public static boolean isAtAll(java.lang.String msg)
if (BotUtils.isAtAll(event.getRawMessage())) {
//是at全体的消息 TODO:做点什么
}
msg - 包含CQ code的字符串[CQ:at,qq=all]便返回truepublic static boolean isAtAll(java.util.List<ArrayMsg> arrayMsg)
arrayMsg - 消息链public static java.util.List<java.lang.Long> getAtList(java.util.List<ArrayMsg> arrayMsg)
arrayMsg - 消息链public static java.util.List<java.lang.String> getMsgImgUrlList(java.util.List<ArrayMsg> arrayMsg)
arrayMsg - 消息链public static java.util.List<java.lang.String> getMsgVideoUrlList(java.util.List<ArrayMsg> arrayMsg)
arrayMsg - 消息链public static java.lang.String getGroupAvatar(long groupId,
int size)
groupId - 群号size - 头像尺寸@Deprecated public static java.lang.String getNickname(long userId)
userId - QQ号public static java.lang.String getUserAvatar(long userId,
int size)
userId - QQ号size - 头像尺寸public static java.lang.String unescape(java.lang.String string)
string - 需要解码的内容public static java.lang.String escape(java.lang.String string)
string - 需要编码的内容public static java.lang.String escape2(java.lang.String string)
string - 需要编码的内容public static java.util.List<ArrayMsg> rawToArrayMsg(@NonNull @NonNull java.lang.String msg)
List<ArrayMsg>。
适用于 OneBot 上报中的字符串消息,例如:
[CQ:at,qq=123]hello[CQ:image,file=a.jpg,url=https://...]。
建议优先传入 event.getMessage();不同实现的 raw_message
可能缺少部分字段(如图片 URL)。
示例:
List<ArrayMsg> list = BotUtils.rawToArrayMsg(event.getMessage());
for (ArrayMsg item : list) {
MsgType type = item.getType();
Map<String, String> data = item.getData();
}
msg - CQ 字符串消息public static com.google.gson.JsonArray rawToJson(java.lang.String msg)
结果结构与 OneBot array message 一致:每项包含 type 与 data。
示例:
JsonArray arr = BotUtils.rawToJson("[CQ:face,id=325]hello");
// => [{"type":"face","data":{"id":"325"}},{"type":"text","data":{"text":"hello"}}]
msg - CQ 字符串消息public static java.lang.String arrayMsgToCode(ArrayMsg arrayMsg)
arrayMsg - ArrayMsgpublic static java.lang.String arrayMsgToCode(java.util.List<ArrayMsg> arrayMsgs)
List<ArrayMsg> 生成 CQ CodearrayMsgs - ArrayMsgpublic static void rawConvert(com.google.gson.JsonObject rawJson,
MessageEvent event)
rawJson - JsonObjectevent - MessageEventpublic static java.util.List<java.util.Map<java.lang.String,java.lang.Object>> generateForwardMsg(long uin,
java.lang.String name,
java.util.List<java.lang.String> contents)
uin - 发送者QQ号name - 发送者显示名字contents - 消息列表,每个元素视为一个消息节点
参考文档public static java.util.List<java.util.Map<java.lang.String,java.lang.Object>> generateForwardMsg(java.util.List<java.lang.String> contents)
contents - 消息列表,每个元素视为一个消息节点public static java.util.List<java.util.Map<java.lang.String,java.lang.Object>> generateForwardMsg(java.lang.String uin,
java.lang.String name,
java.util.List<?> contents)
contents - 消息列表,每个元素视为一个消息节点,Object 可为 List<ArrayMsg> 或 CQCodeuin - 发送者 QQ 号name - 发送者显示名字public static java.util.List<java.util.Map<java.lang.String,java.lang.Object>> generateForwardMsg(BaseBot bot, java.util.List<?> contents)
contents - 消息列表,每个元素视为一个消息节点,Object 可为 List<ArrayMsg> 或 CQCodebot - 机器人实例,用于获取登录信息和版本信息public static java.util.List<java.util.Map<java.lang.String,java.lang.Object>> generateForwardMsg(java.util.List<java.lang.String> contents,
java.util.List<java.lang.String> quoteMsgId)
contents - 消息列表,每个元素视为一个消息节点quoteMsgId - 引用的消息ID