diff --git a/src/core/apis/msg.ts b/src/core/apis/msg.ts index 03b2fbb2..326cefe0 100644 --- a/src/core/apis/msg.ts +++ b/src/core/apis/msg.ts @@ -16,6 +16,9 @@ export class NTQQMsgApi { return this.context.session.getMsgService().fetchLongMsg(peer, msgId); } + async sendShowInputStatusReq(peer: Peer, eventType: number) { + return this.context.session.getMsgService().sendShowInputStatusReq(peer.chatType, eventType, peer.peerUid); + } async getMsgEmojiLikesList(peer: Peer, msgSeq: string, emojiId: string, emojiType: string, count: number = 20) { //console.log(peer, msgSeq, emojiId, emojiType, count); //注意此处emojiType 可选值一般为1-2 2好像是unicode表情dec值 大部分情况 Taged M likiowa diff --git a/src/onebot/action/extends/SetInputStatus.ts b/src/onebot/action/extends/SetInputStatus.ts new file mode 100644 index 00000000..5bc7e8f1 --- /dev/null +++ b/src/onebot/action/extends/SetInputStatus.ts @@ -0,0 +1,44 @@ +import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import BaseAction from '../BaseAction'; +import { ActionName } from '../types'; +import { ChatType, Peer } from '@/core'; + +const SchemaData = { + type: 'object', + properties: { + eventType: { type: 'string' }, + group_id: { type: 'string' }, + user_id: { type: 'string' } + }, + required: ['eventType'], +} as const satisfies JSONSchema; + +type Payload = FromSchema; + +export class SetInputStatus extends BaseAction { + actionName = ActionName.SetInputStatus; + + async _handle(payload: Payload) { + const NTQQUserApi = this.CoreContext.apis.UserApi; + const NTQQMsgApi = this.CoreContext.apis.MsgApi; + let peer: Peer; + if (payload.group_id) { + peer = { + chatType: ChatType.group, + peerUid: payload.group_id + } + } else if (payload.user_id) { + let uid = await NTQQUserApi.getUidByUinV2(payload.user_id); + if (!uid) throw new Error('uid is empty'); + peer = { + chatType: ChatType.friend, + peerUid: uid + } + } else { + throw new Error('请指定 group_id 或 user_id'); + } + + const ret = await NTQQMsgApi.sendShowInputStatusReq(peer, parseInt(payload.eventType)); + return ret; + } +} diff --git a/src/onebot/action/index.ts b/src/onebot/action/index.ts index c5dcdf72..7ff7da6d 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -78,6 +78,7 @@ import { NapCatCore } from '@/core'; import { NapCatOneBot11Adapter } from '@/onebot'; import GetGuildProfile from './guild/GetGuildProfile'; import SetModelShow from './go-cqhttp/SetModelShow'; +import { SetInputStatus } from './extends/SetInputStatus'; export type ActionMap = Map>; @@ -165,6 +166,7 @@ export function createActionMap(onebotContext: NapCatOneBot11Adapter, coreContex new GoCQHTTPUploadPrivateFile(onebotContext, coreContext), new GetGuildProfile(onebotContext, coreContext), new SetModelShow(onebotContext, coreContext), + new SetInputStatus(onebotContext, coreContext), ]; const actionMap = new Map(); for (const action of actionHandlers) { diff --git a/src/onebot/action/types.ts b/src/onebot/action/types.ts index 161b4470..26204339 100644 --- a/src/onebot/action/types.ts +++ b/src/onebot/action/types.ts @@ -106,5 +106,6 @@ export enum ActionName { TestApi01 = 'test_api_01', FetchEmojiLike = 'fetch_emoji_like', GetGuildProfile = "get_guild_service_profile", - SetModelShow = "_set_model_show" + SetModelShow = "_set_model_show", + SetInputStatus = "set_input_status" }