mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-05 15:11:15 +00:00
* feat: pnpm new * Refactor build and release workflows, update dependencies Switch build scripts and workflows from npm to pnpm, update build and artifact paths, and simplify release workflow by removing version detection and changelog steps. Add new dependencies (silk-wasm, express, ws, node-pty-prebuilt-multiarch), update exports in package.json files, and add vite config for napcat-framework. Also, rename manifest.json for framework package and fix static asset copying in shell build config.
745 lines
28 KiB
TypeScript
745 lines
28 KiB
TypeScript
import { z } from 'zod';
|
||
|
||
import messageNodeSchema from './message/node';
|
||
import { baseResponseSchema, commonResponseDataSchema } from './response';
|
||
|
||
const oneBotHttpApiGroup = {
|
||
'/set_group_kick': {
|
||
description: '群踢人',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
user_id: z.union([z.string(), z.number()]).describe('QQ 号'),
|
||
reject_add_request: z.boolean().describe('拒绝此人的加群请求'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/set_group_ban': {
|
||
description: '群禁言',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
user_id: z.union([z.string(), z.number()]).describe('QQ 号'),
|
||
duration: z.number(),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/get_group_system_msg': {
|
||
description: '获取群系统消息',
|
||
request: z.object({}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
InvitedRequest: z
|
||
.array(
|
||
z
|
||
.object({
|
||
request_id: z.string().describe('请求 ID'),
|
||
invitor_uin: z.string().describe('邀请人 QQ 号'),
|
||
invitor_nick: z.string().describe('邀请人昵称'),
|
||
group_id: z.string().describe('群号'),
|
||
message: z.string().describe('入群回答'),
|
||
group_name: z.string().describe('群名称'),
|
||
checked: z.boolean().describe('是否已处理'),
|
||
actor: z.string().describe('处理人 QQ 号'),
|
||
})
|
||
.describe('邀请入群请求')
|
||
)
|
||
.describe('邀请入群请求列表'),
|
||
join_requests: z.array(
|
||
z.object({
|
||
request_id: z.string().describe('请求 ID'),
|
||
requester_uin: z.string().describe('请求人 QQ 号'),
|
||
requester_nick: z.string().describe('请求人昵称'),
|
||
group_id: z.string().describe('群号'),
|
||
message: z.string().describe('入群回答'),
|
||
group_name: z.string().describe('群名称'),
|
||
checked: z.boolean().describe('是否已处理'),
|
||
actor: z.string().describe('处理人 QQ 号'),
|
||
})
|
||
),
|
||
}),
|
||
}),
|
||
},
|
||
'/get_essence_msg_list': {
|
||
description: '获取精华消息',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z
|
||
.array(
|
||
z
|
||
.object({
|
||
msg_seq: z.number().describe('消息序号'),
|
||
msg_random: z.number().describe('消息随机数'),
|
||
sender_id: z.number().describe('发送人 QQ 号'),
|
||
sender_nick: z.string().describe('发送人昵称'),
|
||
operator_id: z.number().describe('操作人 QQ 号'),
|
||
operator_nick: z.string().describe('操作人昵称'),
|
||
message_id: z.string().describe('消息 ID'),
|
||
operator_time: z.string().describe('操作时间'),
|
||
content: z.array(messageNodeSchema),
|
||
})
|
||
.describe('精华消息')
|
||
)
|
||
.describe('精华消息列表'),
|
||
}),
|
||
},
|
||
'/set_group_whole_ban': {
|
||
description: '全员禁言',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
enable: z.boolean().describe('是否开启'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/set_group_portrait': {
|
||
description: '设置群头像',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
file: z.string().describe('图片文件路径,服务器本地路径或远程 URL'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: commonResponseDataSchema,
|
||
}),
|
||
},
|
||
'/set_group_admin': {
|
||
description: '设置群管理',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
user_id: z.union([z.string(), z.number()]).describe('QQ 号'),
|
||
enable: z.boolean().describe('是否设置为管理员'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/set_essence_msg': {
|
||
description: '设置群精华消息',
|
||
request: z.object({
|
||
message_id: z.union([z.string(), z.number()]).describe('消息 ID'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
errCode: z.number().describe('错误码'),
|
||
errMsg: z.string().describe('错误信息'),
|
||
result: z
|
||
.object({
|
||
wording: z.string().describe('?'),
|
||
digestUin: z.string().describe('?QQ号'),
|
||
digestTime: z.number().describe('设置时间?'),
|
||
msg: z
|
||
.object({
|
||
groupCode: z.string().describe('群号'),
|
||
msgSeq: z.number().describe('消息序号'),
|
||
msgRandom: z.number().describe('消息随机数'),
|
||
msgContent: z.array(messageNodeSchema).describe('消息内容'),
|
||
textSize: z.string().describe('文本大小'),
|
||
picSize: z.string().describe('图片大小'),
|
||
videoSize: z.string().describe('视频大小'),
|
||
senderUin: z.string().describe('发送人 QQ 号'),
|
||
senderTime: z.number().describe('发送时间'),
|
||
addDigestUin: z.string().describe('添加精华消息人 QQ 号'),
|
||
addDigestTime: z.number().describe('添加精华消息时间'),
|
||
startTime: z.number().describe('开始时间'),
|
||
latestMsgSeq: z.number().describe('最新消息序号'),
|
||
opType: z.number().describe('操作类型'),
|
||
})
|
||
.describe('消息内容'),
|
||
errorCode: z.number().describe('错误码'),
|
||
})
|
||
.describe('结果'),
|
||
}),
|
||
}),
|
||
},
|
||
'/set_group_card': {
|
||
description: '设置群成员名片',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
user_id: z.union([z.string(), z.number()]).describe('QQ 号'),
|
||
card: z.string().describe('名片'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/delete_essence_msg': {
|
||
description: '删除群精华消息',
|
||
request: z.object({
|
||
message_id: z.union([z.string(), z.number()]).describe('消息 ID'),
|
||
}),
|
||
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
errCode: z.number().describe('错误码'),
|
||
errMsg: z.string().describe('错误信息'),
|
||
result: z
|
||
.object({
|
||
wording: z.string().describe('?'),
|
||
digestUin: z.string().describe('?QQ号'),
|
||
digestTime: z.number().describe('设置时间?'),
|
||
msg: z.object({
|
||
groupCode: z.string().describe('群号'),
|
||
msgSeq: z.number().describe('消息序号'),
|
||
msgRandom: z.number().describe('消息随机数'),
|
||
msgContent: z.array(messageNodeSchema).describe('消息内容'),
|
||
textSize: z.string().describe('文本大小'),
|
||
picSize: z.string().describe('图片大小'),
|
||
videoSize: z.string().describe('视频大小'),
|
||
senderUin: z.string().describe('发送人 QQ 号'),
|
||
senderTime: z.number().describe('发送时间'),
|
||
addDigestUin: z.string().describe('添加精华消息人 QQ 号'),
|
||
addDigestTime: z.number().describe('添加精华消息时间'),
|
||
startTime: z.number().describe('开始时间'),
|
||
latestMsgSeq: z.number().describe('最新消息序号'),
|
||
opType: z.number().describe('操作类型'),
|
||
}),
|
||
errorCode: z.number().describe('错误码'),
|
||
})
|
||
.describe('结果'),
|
||
}),
|
||
}),
|
||
},
|
||
'/set_group_name': {
|
||
description: '设置群名称',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
group_name: z.string().describe('群名称'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/set_group_leave': {
|
||
description: '退出群聊',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/_send_group_notice': {
|
||
description: '发送群公告',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
content: z.string().describe('公告内容'),
|
||
image: z.string().optional().describe('图片地址'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/_get_group_notice': {
|
||
description: '获取群公告',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.array(
|
||
z.object({
|
||
notice_id: z.string().describe('公告 ID'),
|
||
sender_id: z.number().describe('发送人 QQ 号'),
|
||
publish_time: z.number().describe('发布时间'),
|
||
message: z.object({
|
||
text: z.string().describe('文本内容'),
|
||
image: z
|
||
.array(
|
||
z
|
||
.object({
|
||
id: z.string().describe('图片 ID'),
|
||
height: z.string().describe('高度'),
|
||
width: z.string().describe('宽度'),
|
||
})
|
||
.describe('图片信息')
|
||
)
|
||
.describe('图片内容列表'),
|
||
}),
|
||
})
|
||
),
|
||
}),
|
||
},
|
||
'/set_group_special_title': {
|
||
description: '设置群成员专属头衔',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
user_id: z.union([z.string(), z.number()]).describe('QQ 号'),
|
||
special_title: z.string().describe('专属头衔内容'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/upload_group_file': {
|
||
description: '上传群文件',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
file: z.string().describe('文件路径'),
|
||
name: z.string().describe('文件名'),
|
||
folder_id: z.string().describe('文件夹 ID'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: commonResponseDataSchema,
|
||
}),
|
||
},
|
||
'/set_group_add_request': {
|
||
description: '处理加群请求',
|
||
request: z.object({
|
||
flag: z.string().describe('请求ID'),
|
||
approve: z.boolean().describe('是否同意'),
|
||
reason: z.string().optional().describe('拒绝理由'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/get_group_info': {
|
||
description: '获取群信息',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({}),
|
||
}),
|
||
},
|
||
'/get_group_info_ex': {
|
||
description: '获取群信息扩展',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z
|
||
.object({
|
||
groupCode: z.string().describe('群号'),
|
||
resultCode: z.number().describe('结果码'),
|
||
extInfo: z
|
||
.object({
|
||
groupInfoExtSeq: z.number().describe('群信息序列号'),
|
||
reserve: z.number().describe('?'),
|
||
luckyWordId: z.string().describe('幸运字符ID'),
|
||
lightCharNum: z.number().describe('?'),
|
||
luckyWord: z.string().describe('幸运字符'),
|
||
starId: z.number().describe('?'),
|
||
essentialMsgSwitch: z.number().describe('精华消息开关'),
|
||
todoSeq: z.number().describe('?'),
|
||
blacklistExpireTime: z.number().describe('黑名单过期时间'),
|
||
isLimitGroupRtc: z.number().describe('是否限制群视频通话'),
|
||
companyId: z.number().describe('公司ID'),
|
||
hasGroupCustomPortrait: z.number().describe('是否有群自定义头像'),
|
||
bindGuildId: z.string().describe('绑定频道ID?'),
|
||
groupOwnerId: z
|
||
.object({
|
||
memberUin: z.string().describe('群主QQ号'),
|
||
memberUid: z.string().describe('群主ID'),
|
||
memberQid: z.string().describe('群主QID'),
|
||
})
|
||
.describe('群主信息'),
|
||
essentialMsgPrivilege: z.number().describe('精华消息权限'),
|
||
msgEventSeq: z.string().describe('消息事件序列号'),
|
||
inviteRobotSwitch: z.number().describe('邀请机器人开关'),
|
||
gangUpId: z.string().describe('?'),
|
||
qqMusicMedalSwitch: z.number().describe('QQ音乐勋章开关'),
|
||
showPlayTogetherSwitch: z.number().describe('显示一起玩开关'),
|
||
groupFlagPro1: z.string()?.describe('群标识1'),
|
||
groupBindGuildIds: z
|
||
.object({
|
||
guildIds: z.array(z.string()),
|
||
})
|
||
.describe('绑定频道ID列表?'),
|
||
viewedMsgDisappearTime: z.string().describe('消息消失时间'),
|
||
groupExtFlameData: z.object({
|
||
switchState: z.number().describe('开关状态'),
|
||
state: z.number().describe('状态'),
|
||
dayNums: z.array(z.number()).describe('天数列表'),
|
||
version: z.number().describe('版本号'),
|
||
updateTime: z.string().describe('更新时间'),
|
||
isDisplayDayNum: z.boolean().describe('是否显示天数'),
|
||
}),
|
||
groupBindGuildSwitch: z.number().describe('绑定频道开关'),
|
||
groupAioBindGuildId: z.string().describe('AIO绑定频道ID'),
|
||
groupExcludeGuildIds: z
|
||
.object({
|
||
guildIds: z.array(z.string()).describe('排除频道ID'),
|
||
})
|
||
.describe('排除频道ID列表?'),
|
||
fullGroupExpansionSwitch: z.number().describe('全员群扩容开关'),
|
||
fullGroupExpansionSeq: z.string().describe('全员群扩容序列号'),
|
||
inviteRobotMemberSwitch: z
|
||
.number()
|
||
.describe('邀请机器人成员开关'),
|
||
inviteRobotMemberExamine: z
|
||
.number()
|
||
.describe('邀请机器人成员审核'),
|
||
groupSquareSwitch: z.number().describe('群广场开关'),
|
||
})
|
||
.describe('扩展信息'),
|
||
})
|
||
.describe('结果'),
|
||
}),
|
||
},
|
||
'/create_group_file_folder': {
|
||
description: '创建群文件夹',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
folder_name: z.string().describe('文件夹名称'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z
|
||
.object({
|
||
result: z
|
||
.object({
|
||
retCode: z.number().describe('结果码'),
|
||
retMsg: z.string().describe('结果信息'),
|
||
clientWording: z.string().describe('客户端提示'),
|
||
})
|
||
.describe('结果'),
|
||
groupItem: z
|
||
.object({
|
||
peerId: z.string().describe('?'),
|
||
type: z.string().describe('类型'),
|
||
folderInfo: z
|
||
.object({
|
||
folderId: z.string().describe('文件夹 ID'),
|
||
parentFolderId: z.string().describe('父文件夹 ID'),
|
||
folderName: z.string().describe('文件夹名称'),
|
||
createTime: z.number().describe('创建时间'),
|
||
modifyTime: z.number().describe('修改时间'),
|
||
createUin: z.string().describe('创建人 QQ 号'),
|
||
creatorName: z.string().describe('创建人昵称'),
|
||
totalFileCount: z.string().describe('文件总数'),
|
||
modifyUin: z.string().describe('修改人 QQ 号'),
|
||
modifyName: z.string().describe('修改人昵称'),
|
||
usedSpace: z.string().describe('已使用空间'),
|
||
})
|
||
.describe('文件夹信息'),
|
||
})
|
||
.describe('群文件夹信息'),
|
||
})
|
||
.describe('数据'),
|
||
}),
|
||
},
|
||
'/delete_group_file': {
|
||
description: '删除群文件',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
file_id: z.string().describe('文件 ID'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z
|
||
.object({
|
||
result: z.number().describe('结果码'),
|
||
errMsg: z.string().describe('错误信息'),
|
||
transGroupFileResult: z
|
||
.object({
|
||
result: z
|
||
.object({
|
||
retCode: z.number().describe('结果码'),
|
||
retMsg: z.string().describe('结果信息'),
|
||
clientWording: z.string().describe('客户端提示'),
|
||
})
|
||
.describe('结果'),
|
||
successFileIdList: z
|
||
.array(z.string())
|
||
.describe('成功文件 ID 列表'),
|
||
failFileIdList: z.array(z.string()).describe('失败文件 ID 列表'),
|
||
})
|
||
.describe('删除群文件结果'),
|
||
})
|
||
.describe('结果'),
|
||
}),
|
||
},
|
||
'/delete_group_folder': {
|
||
description: '删除群文件夹',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
folder_id: z.string().describe('文件夹 ID'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
retCode: z.number().describe('结果码'),
|
||
retMsg: z.string().describe('结果信息'),
|
||
clientWording: z.string().describe('客户端提示'),
|
||
}),
|
||
}),
|
||
},
|
||
'/get_group_file_system_info': {
|
||
description: '获取群文件系统信息',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
file_count: z.number().describe('文件总数'),
|
||
limit_count: z.number().describe('文件总数限制'),
|
||
used_space: z.number().describe('已使用空间'),
|
||
total_space: z.number().describe('总空间'),
|
||
}),
|
||
}),
|
||
},
|
||
'/get_group_root_files': {
|
||
description: '获取群根目录文件列表',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.array(
|
||
z.object({
|
||
files: z
|
||
.array(
|
||
z
|
||
.object({
|
||
group_id: z.number().describe('群号'),
|
||
file_id: z.string().describe('文件 ID'),
|
||
file_name: z.string().describe('文件名'),
|
||
busid: z.number().describe('?'),
|
||
size: z.number().describe('文件大小'),
|
||
upload_time: z.number().describe('上传时间'),
|
||
dead_time: z.number().describe('过期时间'),
|
||
modify_time: z.number().describe('修改时间'),
|
||
download_times: z.number().describe('下载次数'),
|
||
uploader: z.number().describe('上传人 QQ 号'),
|
||
uploader_name: z.string().describe('上传人昵称'),
|
||
})
|
||
.describe('文件信息')
|
||
)
|
||
.describe('文件列表'),
|
||
folders: z
|
||
.array(
|
||
z
|
||
.object({
|
||
group_id: z.number().describe('群号'),
|
||
folder_id: z.string().describe('文件夹 ID'),
|
||
folder: z.string().describe('文件夹?'),
|
||
folder_name: z.string().describe('文件夹名称'),
|
||
create_time: z.string().describe('创建时间'),
|
||
creator: z.string().describe('创建人 QQ 号'),
|
||
creator_name: z.string().describe('创建人昵称'),
|
||
total_file_count: z.string().describe('文件总数'),
|
||
})
|
||
.describe('文件夹信息')
|
||
)
|
||
.describe('文件夹列表'),
|
||
})
|
||
),
|
||
}),
|
||
},
|
||
'/get_group_files_by_folder': {
|
||
description: '获取群子目录文件列表',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
folder_id: z.string().describe('文件夹 ID'),
|
||
file_count: z.number().describe('文件数量'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
files: z
|
||
.array(
|
||
z
|
||
.object({
|
||
group_id: z.number().describe('群号'),
|
||
file_id: z.string().describe('文件 ID'),
|
||
file_name: z.string().describe('文件名'),
|
||
busid: z.number().describe('?'),
|
||
size: z.number().describe('文件大小'),
|
||
upload_time: z.number().describe('上传时间'),
|
||
dead_time: z.number().describe('过期时间'),
|
||
modify_time: z.number().describe('修改时间'),
|
||
download_times: z.number().describe('下载次数'),
|
||
uploader: z.number().describe('上传人 QQ 号'),
|
||
uploader_name: z.string().describe('上传人昵称'),
|
||
})
|
||
.describe('文件信息')
|
||
)
|
||
.describe('文件列表'),
|
||
folders: z
|
||
.array(
|
||
z
|
||
.object({
|
||
group_id: z.number().describe('群号'),
|
||
folder_id: z.string().describe('文件夹 ID'),
|
||
folder: z.string().describe('文件夹?'),
|
||
folder_name: z.string().describe('文件夹名称'),
|
||
create_time: z.string().describe('创建时间'),
|
||
creator: z.string().describe('创建人 QQ 号'),
|
||
creator_name: z.string().describe('创建人昵称'),
|
||
total_file_count: z.string().describe('文件总数'),
|
||
})
|
||
.describe('文件夹信息')
|
||
)
|
||
.describe('文件夹列表'),
|
||
}),
|
||
}),
|
||
},
|
||
'/get_group_file_url': {
|
||
description: '获取群文件下载链接',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
file_id: z.string().describe('文件 ID'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
url: z.string().describe('下载链接'),
|
||
}),
|
||
}),
|
||
},
|
||
'/get_group_list': {
|
||
description: '获取群列表',
|
||
request: z.object({
|
||
next_token: z.string().optional().describe('下一页标识'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.array(z.object({})),
|
||
}),
|
||
},
|
||
'/get_group_member_info': {
|
||
description: '获取群成员信息',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
user_id: z.union([z.string(), z.number()]).describe('QQ 号'),
|
||
no_cache: z.boolean().describe('是否不使用缓存'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({}),
|
||
}),
|
||
},
|
||
'/get_group_member_list': {
|
||
description: '获取群成员列表',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
no_cache: z.boolean().describe('是否不使用缓存'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.array(z.object({})),
|
||
}),
|
||
},
|
||
'/get_group_honor_info': {
|
||
description: '获取群荣誉',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z
|
||
.object({
|
||
group_id: z.number().describe('群号'),
|
||
current_talkative: z
|
||
.object({
|
||
user_id: z.number().describe('QQ 号'),
|
||
avatar: z.string().describe('头像 URL'),
|
||
nickname: z.string().describe('昵称'),
|
||
day_count: z.number().describe('天数'),
|
||
description: z.string().describe('描述'),
|
||
})
|
||
.describe('当前龙王'),
|
||
talkative_list: z
|
||
.array(
|
||
z.object({
|
||
user_id: z.number().describe('QQ 号'),
|
||
avatar: z.string().describe('头像 URL'),
|
||
nickname: z.string().describe('昵称'),
|
||
day_count: z.number().describe('天数'),
|
||
description: z.string().describe('描述'),
|
||
})
|
||
)
|
||
.describe('龙王榜'),
|
||
performer_list: z
|
||
.array(
|
||
z.object({
|
||
user_id: z.number().describe('QQ 号'),
|
||
avatar: z.string().describe('头像 URL'),
|
||
nickname: z.string().describe('昵称'),
|
||
description: z.string().describe('描述'),
|
||
})
|
||
)
|
||
.describe('?'),
|
||
legend_list: z.array(z.string()).describe('?'),
|
||
emotion_list: z.array(z.string()).describe('?'),
|
||
strong_newbie_list: z.array(z.string()).describe('?'),
|
||
})
|
||
.describe('群荣誉信息'),
|
||
}),
|
||
},
|
||
'/get_group_at_all_remain': {
|
||
description: '获取群 @全体成员 剩余次数',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
can_at_all: z.boolean().describe('是否可以 @全体成员'),
|
||
remain_at_all_count_for_group: z.number().describe('剩余次数(group?)'),
|
||
remain_at_all_count_for_uin: z.number().describe('剩余次数(qq?)'),
|
||
}),
|
||
}),
|
||
},
|
||
'/get_group_ignored_notifies': {
|
||
description: '获取群过滤系统消息',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
join_requests: z
|
||
.array(
|
||
z.object({
|
||
request_id: z.string().describe('请求 ID'),
|
||
requester_uin: z.string().describe('请求人 QQ 号'),
|
||
requester_nick: z.string().describe('请求人昵称'),
|
||
group_id: z.string().describe('群号'),
|
||
group_name: z.string().describe('群名称'),
|
||
checked: z.boolean().describe('是否已处理'),
|
||
actor: z.string().describe('处理人 QQ 号'),
|
||
})
|
||
)
|
||
.describe('入群请求列表'),
|
||
}),
|
||
}),
|
||
},
|
||
'/set_group_sign': {
|
||
description: '设置群打卡',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/send_group_sign': {
|
||
description: '发送群打卡',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
}),
|
||
response: baseResponseSchema,
|
||
},
|
||
'/get_ai_characters': {
|
||
description: '获取AI语音人物',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
chat_type: z.union([z.string(), z.number()]).describe('聊天类型'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.array(
|
||
z.object({
|
||
type: z.string().describe('类型'),
|
||
characters: z.array(
|
||
z
|
||
.object({
|
||
character_id: z.string().describe('人物 ID'),
|
||
character_name: z.string().describe('人物名称'),
|
||
preview_url: z.string().describe('预览音频地址'),
|
||
})
|
||
.describe('人物信息')
|
||
),
|
||
})
|
||
),
|
||
}),
|
||
},
|
||
'/send_group_ai_record': {
|
||
description: '发送群AI语音',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群号'),
|
||
character: z.string().describe('人物ID'),
|
||
text: z.string().describe('文本内容'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
message_id: z.string().describe('消息 ID'),
|
||
}),
|
||
}),
|
||
},
|
||
'/get_ai_record': {
|
||
description: '获取AI语音',
|
||
request: z.object({
|
||
group_id: z.string().describe('群号'),
|
||
character: z.string().describe('人物ID'),
|
||
text: z.string().describe('文本内容'),
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.string(),
|
||
}),
|
||
},
|
||
} as const;
|
||
|
||
export default oneBotHttpApiGroup;
|