Skip to content

核心类型

本页讲解你在收发消息时最常打交道的那些类型:「我要传给方法的对象」 长什么样,「我收到的对象」 又长什么样。所有类型都可从 @icqqjs/icqq 引入(import type)。


Sendable

发送方法(sendMsg 等)接收的内容类型:

ts
type Sendable = string | MessageElem | (string | MessageElem)[]
  • 字符串:当作纯文本。
  • 单个消息段:用 segment.xxx(...) 构造。
  • 数组:把字符串和消息段拼成一条图文消息。
js
await client.pickFriend(<friend_id>).sendMsg([
  "你好 ",
  segment.at(<friend_id>),
  segment.image("/tmp/1.jpg")
])

MessageElem

收到的消息里,e.messageMessageElem[],每个元素是下面这些接口之一,靠 type 字段区分。发送时你也可以直接传这些对象(一般用 segment 构造更方便)。

下面按类型逐个列出字段(标「接收时有效」的字段是对方发来时才会带上)。

TextElem 文本

字段类型说明
type"text"固定值。
textstring文字内容。

AtElem @提及

字段类型说明
type"at"固定值。
qqnumber | "all"被 @ 的账号;"all" 为全体;频道消息中为 0
idstring | "all"频道中的 tiny_id
textstring@ 后跟随的文字(接收时有效)。
dummyboolean是否为假 @。

FaceElem 表情

字段类型说明
type"face" | "sface"经典表情 / 小表情。
idnumber表情 id(face 约 0~324)。
textstring表情说明(接收时有效)。
bigboolean是否超级表情。

ImageElem 图片

字段类型说明
type"image"固定值。
filestring | Buffer | Readable发送时:本地路径 / URL / base64 / Buffer / 流。
cacheboolean网络图片是否使用缓存。
timeoutnumber流超时时间(秒),默认 60
urlstring图片地址(接收时有效,用于下载)。
namestring图片名(接收时有效)。
summarystring图片概要。
asfaceboolean是否作为表情发送。
originboolean是否显示「查看原图」。
md5 / sha1string校验值(接收时有效)。
width / heightnumber宽高(接收时有效)。
sizenumber大小(接收时有效)。

FlashElem(闪照)字段与 ImageElem 相同,仅 type"flash"

PttElem 语音

字段类型说明
type"record"固定值。
filestring | Buffer发送时:本地路径 / Buffer(支持 silk / amr)。
urlstring语音地址(接收时有效)。
secondsnumber时长(秒)。
sizenumber大小(接收时有效)。
transcodeboolean是否转码,默认 true
tempboolean发送后是否删除源文件。
md5 / sha1string校验值。

VideoElem 视频

字段类型说明
type"video"固定值。
filestring | Buffer发送时:本地路径 / Buffer。
namestring视频名(接收时有效)。
fidstring作为文件的 id(接收时有效)。
secondsnumber时长(秒,接收时有效)。
width / heightnumber宽高。
sizenumber大小(接收时有效)。
tempboolean发送后是否删除源文件。

ShareElem 互联分享

字段类型说明
type"share"固定值。
urlstring跳转地址(必填)。
titlestring标题。
summarystring描述。
contentstring消息列表中显示的文字。
imagestring预览图地址。
audiostring音频地址。
configShareConfig分享 app 配置。

LocationElem 位置

字段类型说明
type"location"固定值。
addressstring地址描述。
latnumber纬度。
lngnumber经度。
namestring名称。
idstring位置 id。

JsonElem / XmlElem 卡片

字段类型说明
type"json"JSON 卡片。
dataany卡片数据。
字段类型说明
type"xml"XML 卡片。
datastringXML 字符串。
idnumber服务类型 id。

PokeElem 戳一戳

字段类型说明
type"poke"固定值。
idnumber类型 0~6
textstring动作描述。

MiraiElem 特殊消息

字段类型说明
type"mirai"固定值。
datastring自定义携带数据(官方客户端无法解析)。

FileElem 文件

字段类型说明
type"file"固定值。
filestring | Buffer发送时:本地路径 / Buffer。
namestring文件名。
fidstring文件 id。
sizenumber大小。
md5 / sha1string校验值。
durationnumber存在时间。
tempboolean发送后是否删除源文件。

ReplyElem / QuoteElem 引用回复

QuoteElem 是收到消息里表示「引用了某条消息」的段:

字段类型说明
type"quote"固定值。
user_idnumber被引用消息的发送者。
timenumber时间(秒)。
seqnumber序号。
randnumber随机标识。
messageSendable被引用的消息内容。

ReplyElemtype: "reply",带 id)是旧版兼容形式,新代码用 Quotable 引用回复。

ForwardNodeElem 转发节点

字段类型说明
type"node"固定值。
user_idnumber发言人账号。
messageSendable这条子消息内容。
nicknamestring显示昵称。
timenumber显示时间(秒)。

segment.node(...) 构造,配合 client.makeForwardMsg 生成合并转发消息。


Quotable

引用回复时传给 sendMsg(content, source)source 对象。一般直接把收到的消息事件传进去即可。

字段类型说明
user_idnumber被引用消息的发送方账号。
timenumber时间(秒)。
seqnumber序号。
randnumber随机标识(私聊回复必须有)。
messageSendable被引用的消息内容。
js
client.on("message.group", (e) => {
  // e 本身满足 Quotable,可直接作为引用源
  e.reply("收到", true)
})

Forwardable

构造合并转发节点时的内容,对应 segment.node 的参数集合。

字段类型说明
user_idnumber发送方账号。
messageSendable发送的消息。
nicknamestring发送方昵称。
timenumber发送时间(秒)。
seq / randnumber可选标识。
previewstring预览文字。

MessageRet

发送消息成功后的返回值。

字段类型说明
message_idstring消息 id,用于撤回 / 引用。是字符串,不要当数字解析。
seqnumber消息序号。
randnumber随机标识。
timenumber发送时间(秒)。

Config

createClient(config) 的配置项,全部可选。

字段类型默认说明
platformPlatformAndroid登录设备,见 枚举
verstring-使用的版本(同一 platform 有多个版本时有效)。
log_levelLogLevel"info"日志等级。
data_dirstring主模块下的 data/数据存储目录,需可写权限。
sign_api_addrstring-签名服务器地址。未配置可能导致登录失败和无法收发消息。
ignore_selfbooleantrue群聊 / 频道中过滤自己发的消息。
resendbooleanfalse被风控时是否尝试分片发送。
reconn_intervalnumber5掉线后重连间隔(秒),0 表示不自动重连。
cache_group_memberbooleantrue是否缓存群员列表(群多时占内存)。
auto_serverbooleantrue是否自动选择最优服务器。
ffmpeg_pathstring-ffmpeg 可执行路径。
ffprobe_pathstring-ffprobe 可执行路径。
js
const { createClient, Platform } = require("@icqqjs/icqq")
const client = createClient({
  platform: Platform.Android,
  sign_api_addr: "<your_sign_api_addr>",
  log_level: "info"
})

资料类型

获取好友 / 群 / 成员 / 陌生人信息时返回的对象。

StrangerInfo 陌生人

字段类型说明
user_idnumber账号。
nicknamestring昵称。

FriendInfo 好友

继承 StrangerInfo,额外有:

字段类型说明
sexGender性别。
remarkstring备注。
class_idnumber分组 id。
user_uidstring好友 uid。

GroupInfo 群

字段类型说明
group_idnumber群号。
group_namestring群名。
member_countnumber群员数。
max_member_countnumber群员上限。
owner_idnumber群主账号。
admin_flagboolean自己是否为该群管理员。
last_join_timenumber上次入群时间。
last_sent_timenumber上次发言时间。
shutup_time_wholenumber全员禁言时间。
shutup_time_menumber自己被禁言时间。
create_timenumber群创建时间。
gradenumber群活跃等级。
max_admin_countnumber管理员上限。
active_member_countnumber在线群员数。
update_timenumber群信息更新时间。

MemberInfo 群员

字段类型说明
group_idnumber所在群号。
user_idnumber群员账号。
nicknamestring昵称。
cardstring群名片。
sexGender性别。
agenumber年龄。
areastring地区。
join_timenumber入群时间。
last_sent_timenumber上次发言时间。
levelnumber聊天等级。
rankstring聊天排名。
roleGroupRole群权限(owner / admin / member)。
titlestring头衔。
title_expire_timenumber头衔到期时间。
shutup_timenumber被禁言时间。
update_timenumber信息更新时间。
user_uidstring群员 uid。

相关

消息段 segment · 事件类型参考 · 枚举与常量