import { ActionName } from '@/napcat-onebot/action/router'; import { GetPacketStatusDepends } from '@/napcat-onebot/action/packet/GetPacketStatus'; import { Static, Type } from '@sinclair/typebox'; import { PacketActionsExamples } from '../example/PacketActionsExamples'; export const SendPokePayloadSchema = Type.Object({ group_id: Type.Optional(Type.String({ description: '群号' })), user_id: Type.String({ description: '用户QQ' }), target_id: Type.Optional(Type.String({ description: '目标QQ' })), }); export type SendPokePayload = Static; export class SendPokeBase extends GetPacketStatusDepends { override payloadSchema = SendPokePayloadSchema; override returnSchema = Type.Null(); override actionSummary = '发送戳一戳'; override actionDescription = '在群聊或私聊中发送戳一戳动作'; override actionTags = ['核心接口']; override payloadExample = PacketActionsExamples.SendPoke.payload; override returnExample = PacketActionsExamples.SendPoke.response; async _handle (payload: SendPokePayload) { // 这里的 !! 可以传入空字符串 忽略这些数据有利用接口统一接口 const target_id = payload.target_id?.toString() || payload.user_id?.toString(); const peer_id = payload.group_id?.toString() || payload.user_id?.toString(); const is_group = !!payload.group_id; if (!target_id || !peer_id) { throw new Error('请检查参数,缺少 user_id 或 group_id'); } await this.core.apis.PacketApi.pkt.operation.SendPoke(is_group, +peer_id, +target_id); } } export class SendPoke extends SendPokeBase { override actionName = ActionName.SendPoke; } export class GroupPoke extends SendPokeBase { override actionName = ActionName.GroupPoke; } export class FriendPoke extends SendPokeBase { override actionName = ActionName.FriendPoke; }