import { z } from 'zod'; import type { ZodSchema } from 'zod'; import { baseResponseSchema, commonResponseDataSchema } from '../response'; import messageNodeSchema, { nodeMessage } from './node'; const oneBotHttpApiMessageGroup: Record< string, { description?: string request: ZodSchema response: ZodSchema } > = { '/send_group_msg': { description: '发送群消息', request: z .object({ group_id: z .union([z.string(), z.number()]) .describe('群号') .describe('群号'), message: z.array(messageNodeSchema).describe('消息内容'), }) .refine( (data) => { const hasReply = data.message.some((item) => item.type === 'reply'); if (hasReply) { return data.message[0].type === 'reply'; } return true; }, { message: '如果 message 包含 reply 类型的消息,那么只能包含一个,而且排在最前面', } ), response: baseResponseSchema.extend({ data: commonResponseDataSchema, }), }, '/send_group_forward_msg': { description: '发送群合并转发消息', request: z.object({ group_id: z.union([z.string(), z.number()]).describe('群号'), messages: z.array(nodeMessage).describe('消息内容'), news: z .array( z.object({ text: z.string(), }) ) .describe('?'), prompt: z.string().describe('外显'), summary: z.string().describe('底下文本'), source: z.string().describe('内容'), }), response: baseResponseSchema.extend({ data: commonResponseDataSchema, }), }, '/forward_group_single_msg': { description: '消息转发到群', request: z.object({ group_id: z.union([z.string(), z.number()]).describe('群号'), message_id: z.union([z.string(), z.number()]).describe('消息 ID'), }), response: baseResponseSchema.extend({ data: commonResponseDataSchema, }), }, '/group_poke': { description: '发送戳一戳', request: z.object({ group_id: z.union([z.string(), z.number()]).describe('群号'), user_id: z.union([z.string(), z.number()]).describe('对方QQ号'), }), response: baseResponseSchema, }, }; export default oneBotHttpApiMessageGroup;