Files
SnowCatQQ/packages/snowcat-onebot/action/schemas.ts
T
天天的鸟蛋蛋 b9655a5ab1 SnowCat 雪猫底层全源码:NapCat 4.18.28 底座 + SnowLuma 能力移植 + V8 通道适配 9.9.37
26 包 monorepo(TS 全源码):
- snowcat-core: NT 内核 API 封装 + listener(含 9.9.37 六回调适配)+ Packet 发包
- snowcat-onebot: OneBot v11 全动作 + MCP Streamable HTTP 适配器 + 稳定线
- snowcat-webui-frontend/backend: 雪猫控制台(React+HeroUI)
- snowcat-shell: 单文件 bundle 出口(vite inlineDynamicImports)
- snowcat-native: napi2native / MoeHoo / ffmpeg / pty 运行时
- 56 项 SnowLuma 独门动作移植(qzone 全家桶/群相册/装扮/闪照/收藏)
- 工具件: 解包器/启动器/便携制作器/doctor

GitHub 关联已全量指向 DandanLLab/SnowCatQQ
2026-11-12 06:27:36 +08:00

99 lines
5.5 KiB
TypeScript

import { Type } from '@sinclair/typebox';
export const OB11UserSchema = Type.Object({
birthday_year: Type.Optional(Type.Number({ description: '出生年份' })),
birthday_month: Type.Optional(Type.Number({ description: '出生月份' })),
birthday_day: Type.Optional(Type.Number({ description: '出生日期' })),
phone_num: Type.Optional(Type.String({ description: '手机号' })),
email: Type.Optional(Type.String({ description: '邮箱' })),
category_id: Type.Optional(Type.Number({ description: '分组ID' })),
user_id: Type.Number({ description: 'QQ号' }),
nickname: Type.String({ description: '昵称' }),
remark: Type.Optional(Type.String({ description: '备注' })),
sex: Type.Optional(Type.String({ description: '性别' })),
level: Type.Optional(Type.Number({ description: '等级' })),
age: Type.Optional(Type.Number({ description: '年龄' })),
qid: Type.Optional(Type.String({ description: 'QID' })),
login_days: Type.Optional(Type.Number({ description: '登录天数' })),
categoryName: Type.Optional(Type.String({ description: '分组名称' })),
categoryId: Type.Optional(Type.Number({ description: '分组ID' })),
}, { $id: 'OB11User', description: 'OneBot 11 用户信息' });
export const OB11GroupSchema = Type.Object({
group_all_shut: Type.Number({ description: '是否全员禁言' }),
group_remark: Type.String({ description: '群备注' }),
group_id: Type.Number({ description: '群号' }),
group_name: Type.String({ description: '群名称' }),
member_count: Type.Optional(Type.Number({ description: '成员人数' })),
max_member_count: Type.Optional(Type.Number({ description: '最大成员人数' })),
}, { $id: 'OB11Group', description: 'OneBot 11 群信息' });
export const OB11GroupMemberSchema = Type.Object({
group_id: Type.Number({ description: '群号' }),
user_id: Type.Number({ description: 'QQ号' }),
nickname: Type.String({ description: '昵称' }),
card: Type.Optional(Type.String({ description: '名片' })),
sex: Type.Optional(Type.String({ description: '性别' })),
age: Type.Optional(Type.Number({ description: '年龄' })),
join_time: Type.Optional(Type.Number({ description: '入群时间戳' })),
last_sent_time: Type.Optional(Type.Number({ description: '最后发言时间戳' })),
level: Type.Optional(Type.String({ description: '等级' })),
qq_level: Type.Optional(Type.Number({ description: 'QQ等级' })),
role: Type.Optional(Type.String({ description: '角色 (owner/admin/member)' })),
title: Type.Optional(Type.String({ description: '头衔' })),
area: Type.Optional(Type.String({ description: '地区' })),
unfriendly: Type.Optional(Type.Boolean({ description: '是否不良记录' })),
title_expire_time: Type.Optional(Type.Number({ description: '头衔过期时间' })),
card_changeable: Type.Optional(Type.Boolean({ description: '是否允许修改名片' })),
shut_up_timestamp: Type.Optional(Type.Number({ description: '禁言截止时间戳' })),
is_robot: Type.Optional(Type.Boolean({ description: '是否为机器人' })),
qage: Type.Optional(Type.Number({ description: 'Q龄' })),
}, { $id: 'OB11GroupMember', description: 'OneBot 11 群成员信息' });
export const OB11NotifySchema = Type.Object({
request_id: Type.Number({ description: '请求ID' }),
invitor_uin: Type.Number({ description: '邀请者QQ' }),
invitor_nick: Type.String({ description: '邀请者昵称' }),
group_id: Type.Number({ description: '群号' }),
group_name: Type.String({ description: '群名称' }),
message: Type.String({ description: '附言' }),
checked: Type.Boolean({ description: '是否已处理' }),
actor: Type.Number({ description: '操作者QQ' }),
requester_nick: Type.String({ description: '申请者昵称' }),
}, { $id: 'OB11Notify', description: 'OneBot 11 通知信息' });
export const lastestMessageSchema = Type.Object({
self_id: Type.Number({ description: '发送者QQ号' }),
user_id: Type.Number({ description: '接收者QQ号' }),
time: Type.Number({ description: '时间戳' }),
real_seq: Type.String({ description: '消息序号' }),
message_type: Type.String({ description: '消息类型' }),
sender: Type.Object({
user_id: Type.Number({ description: '用户QQ号' }),
nickname: Type.String({ description: '用户昵称' }),
card: Type.Optional(Type.String({ description: '用户名片' })),
role: Type.Optional(Type.String({ description: '用户角色' })),
}),
raw_message: Type.String({ description: '原始消息' }),
font: Type.Number({ description: '字体大小' }),
sub_type: Type.String({ description: '子类型' }),
message: Type.Unknown({ description: '消息内容' }),
message_format: Type.String({ description: '消息格式' }),
post_type: Type.String({ description: '发布类型' }),
group_id: Type.Number({ description: '群号' }),
group_name: Type.String({ description: '群名称' }),
}, { $id: 'OB11LatestMessage', description: '最后一条消息' });
export const OB11MessageSchema = Type.Intersect([
Type.Omit(lastestMessageSchema, []),
Type.Object({
message_id: Type.Number({ description: '消息ID' }),
message_seq: Type.Number({ description: '消息序列号' }),
emoji_likes_list: Type.Array(Type.Object({
emoji_id: Type.String({ description: '表情符号ID' }),
emoji_type: Type.String({ description: '表情符号类型' }),
likes_cnt: Type.String({ description: '点赞数' }),
})),
}, { description: 'OneBot 11 消息信息' }),
], { $id: 'OB11ActionMessage', description: 'OneBot 11 消息信息' });