mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-11 23:40:24 +00:00
279 lines
7.9 KiB
TypeScript
279 lines
7.9 KiB
TypeScript
import { z } from 'zod'
|
||
|
||
import onlineStatusDataSchema from './online_status'
|
||
import { baseResponseSchema, commonResponseDataSchema } from './response'
|
||
|
||
const oneBotHttpApiUser = {
|
||
'/set_qq_profile': {
|
||
description: '设置账号信息',
|
||
request: z.object({
|
||
nickname: z.string().describe('昵称'),
|
||
personal_note: z.string().describe('个性签名'),
|
||
sex: z.string().optional().describe('性别')
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: commonResponseDataSchema
|
||
})
|
||
},
|
||
'/ArkSharePeer': {
|
||
description: '获取推荐好友/群聊卡片',
|
||
request: z
|
||
.object({
|
||
group_id: z
|
||
.union([z.string(), z.number()])
|
||
.optional()
|
||
.describe('群聊ID,与 user_id 二选一'),
|
||
user_id: z
|
||
.union([z.string(), z.number()])
|
||
.optional()
|
||
.describe('用户ID,与 group_id 二选一'),
|
||
phoneNumber: z.string().optional().describe('对方手机号码')
|
||
})
|
||
.refine(
|
||
(data) =>
|
||
(data.group_id && !data.user_id) || (!data.group_id && data.user_id),
|
||
{
|
||
message: 'group_id 和 user_id 必须二选一,且不能同时存在或同时为空',
|
||
path: ['group_id', 'user_id'] // 错误路径
|
||
}
|
||
),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
errCode: z.number(),
|
||
errMsg: z.string(),
|
||
arkJson: z.string()
|
||
})
|
||
})
|
||
},
|
||
'/ArkShareGroup': {
|
||
description: '获取推荐群聊卡片',
|
||
request: z.object({
|
||
group_id: z.union([z.string(), z.number()]).describe('群聊ID')
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.string()
|
||
})
|
||
},
|
||
'/set_online_status': {
|
||
description: '设置在线状态',
|
||
request: z.object({
|
||
data: onlineStatusDataSchema
|
||
}),
|
||
response: baseResponseSchema
|
||
},
|
||
'/get_friends_with_category': {
|
||
description: '获取好友分组列表',
|
||
request: z.object({}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.array(
|
||
z.object({
|
||
categoryId: z.number(),
|
||
categorySortId: z.number(),
|
||
categoryName: z.string(),
|
||
categoryMbCount: z.number(),
|
||
onlineCount: z.number(),
|
||
buddyList: z.array(
|
||
z.object({
|
||
qid: z.string(),
|
||
longNick: z.string(),
|
||
birthday_year: z.number(),
|
||
birthday_month: z.number(),
|
||
birthday_day: z.number(),
|
||
age: z.number(),
|
||
sex: z.string(),
|
||
eMail: z.string(),
|
||
phoneNum: z.string(),
|
||
categoryId: z.number(),
|
||
richTime: z.number(),
|
||
richBuffer: z.object({}),
|
||
uid: z.string(),
|
||
uin: z.string(),
|
||
nick: z.string(),
|
||
remark: z.string(),
|
||
user_id: z.number(),
|
||
nickname: z.string(),
|
||
level: z.number()
|
||
})
|
||
)
|
||
})
|
||
)
|
||
})
|
||
},
|
||
'/set_qq_avatar': {
|
||
description: '设置头像',
|
||
request: z.object({
|
||
file: z.string().describe('图片文件路径(服务器本地或者远程均可)')
|
||
}),
|
||
response: baseResponseSchema
|
||
},
|
||
'/send_like': {
|
||
description: '点赞',
|
||
request: z.object({
|
||
user_id: z.union([z.string(), z.number()]).describe('对方QQ号'),
|
||
times: z.number().describe('点赞次数')
|
||
}),
|
||
response: baseResponseSchema
|
||
},
|
||
'/create_collection': {
|
||
description: '创建收藏',
|
||
request: z.object({
|
||
rawData: z.string().describe('收藏内容'),
|
||
brief: z.string().describe('收藏简介')
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: commonResponseDataSchema
|
||
})
|
||
},
|
||
'/set_friend_add_request': {
|
||
description: '处理好友请求',
|
||
request: z.object({
|
||
flag: z.string().describe('请求ID'),
|
||
approve: z.boolean().describe('是否同意'),
|
||
remark: z.string().describe('好友备注')
|
||
}),
|
||
response: baseResponseSchema
|
||
},
|
||
'/set_self_longnick': {
|
||
description: '设置个性签名',
|
||
request: z.object({
|
||
longNick: z.string().describe('签名内容')
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: commonResponseDataSchema
|
||
})
|
||
},
|
||
'/get_stranger_info': {
|
||
description: '获取账号信息',
|
||
request: z.object({
|
||
user_id: z.union([z.string(), z.number()]).describe('对方QQ号')
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
user_id: z.number(),
|
||
uid: z.string(),
|
||
uin: z.string(),
|
||
nickname: z.string(),
|
||
age: z.number(),
|
||
qid: z.string(),
|
||
qqLevel: z.number(),
|
||
sex: z.string(),
|
||
long_nick: z.string(),
|
||
reg_time: z.number(),
|
||
is_vip: z.boolean(),
|
||
is_years_vip: z.boolean(),
|
||
vip_level: z.number(),
|
||
remark: z.string(),
|
||
status: z.number(),
|
||
login_days: z.number()
|
||
})
|
||
})
|
||
},
|
||
'/get_friend_list': {
|
||
description: '获取好友列表',
|
||
request: z.object({
|
||
no_cache: z.boolean().describe('是否不使用缓存')
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.array(
|
||
z.object({
|
||
qid: z.string(),
|
||
longNick: z.string(),
|
||
birthday_year: z.number(),
|
||
birthday_month: z.number(),
|
||
birthday_day: z.number(),
|
||
age: z.number(),
|
||
sex: z.string(),
|
||
eMail: z.string(),
|
||
phoneNum: z.string(),
|
||
categoryId: z.number(),
|
||
richTime: z.number(),
|
||
richBuffer: z.object({}),
|
||
uid: z.string(),
|
||
uin: z.string(),
|
||
nick: z.string(),
|
||
remark: z.string(),
|
||
user_id: z.number(),
|
||
nickname: z.string(),
|
||
level: z.number()
|
||
})
|
||
)
|
||
})
|
||
},
|
||
'/get_profile_like': {
|
||
description: '获取点赞列表',
|
||
request: z.object({}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
total_count: z.number(),
|
||
new_count: z.number(),
|
||
new_nearby_count: z.number(),
|
||
last_visit_time: z.number(),
|
||
userInfos: z.array(
|
||
z.object({
|
||
uid: z.string(),
|
||
src: z.number(),
|
||
latestTime: z.number(),
|
||
count: z.number(),
|
||
giftCount: z.number(),
|
||
customId: z.number(),
|
||
lastCharged: z.number(),
|
||
bAvailableCnt: z.number(),
|
||
bTodayVotedCnt: z.number(),
|
||
nick: z.string(),
|
||
gender: z.number(),
|
||
age: z.number(),
|
||
isFriend: z.boolean(),
|
||
isvip: z.boolean(),
|
||
isSvip: z.boolean(),
|
||
uin: z.number()
|
||
})
|
||
)
|
||
})
|
||
})
|
||
},
|
||
'/fetch_custom_face': {
|
||
description: '获取收藏表情',
|
||
request: z.object({
|
||
count: z.number().optional().describe('获取数量')
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.array(z.string())
|
||
})
|
||
},
|
||
'/upload_private_file': {
|
||
description: '上传私聊文件',
|
||
request: z.object({
|
||
user_id: z.union([z.string(), z.number()]),
|
||
file: z.string(),
|
||
name: z.string()
|
||
}),
|
||
response: baseResponseSchema
|
||
},
|
||
'/delete_friend': {
|
||
description: '删除好友',
|
||
request: z.object({
|
||
user_id: z.union([z.string(), z.number()]).describe('自己QQ号?'),
|
||
friend_id: z.union([z.string(), z.number()]).describe('好友QQ号'),
|
||
temp_block: z.boolean().describe('是否加入黑名单'),
|
||
temp_both_del: z.boolean().describe('是否双向删除')
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: commonResponseDataSchema
|
||
})
|
||
},
|
||
'/nc_get_user_status': {
|
||
description: '获取用户在线状态',
|
||
request: z.object({
|
||
user_id: z.union([z.string(), z.number()]).describe('对方QQ号')
|
||
}),
|
||
response: baseResponseSchema.extend({
|
||
data: z.object({
|
||
status: z.number(),
|
||
ext_status: z.number()
|
||
})
|
||
})
|
||
}
|
||
} as const
|
||
|
||
export default oneBotHttpApiUser
|