diff --git a/src/ntqqapi/api/user.ts b/src/ntqqapi/api/user.ts index be61f29..3e4360b 100644 --- a/src/ntqqapi/api/user.ts +++ b/src/ntqqapi/api/user.ts @@ -334,4 +334,14 @@ export class NTQQUserApi extends Service { } return selfInfo.nick } + + async setSelfStatus(status: number, extStatus: number, batteryStatus: number) { + return await invoke('nodeIKernelMsgService/setStatus', [{ + statusReq: { + status, + extStatus, + batteryStatus, + } + }, null]) + } } diff --git a/src/ntqqapi/hook.ts b/src/ntqqapi/hook.ts index 5eaf14c..edf76ba 100644 --- a/src/ntqqapi/hook.ts +++ b/src/ntqqapi/hook.ts @@ -26,7 +26,7 @@ export const ReceiveCmdS = { CACHE_SCAN_FINISH: 'nodeIKernelStorageCleanListener/onFinishScan', MEDIA_UPLOAD_COMPLETE: 'nodeIKernelMsgListener/onRichMediaUploadComplete', SKEY_UPDATE: 'onSkeyUpdate', -} +} as const export type ReceiveCmd = string diff --git a/src/onebot11/action/index.ts b/src/onebot11/action/index.ts index e511196..7cebfb4 100644 --- a/src/onebot11/action/index.ts +++ b/src/onebot11/action/index.ts @@ -60,6 +60,7 @@ import { CreateGroupFileFolder } from './go-cqhttp/CreateGroupFileFolder' import { DelGroupFolder } from './go-cqhttp/DelGroupFolder' import { GetGroupAtAllRemain } from './go-cqhttp/GetGroupAtAllRemain' import { GetGroupRootFiles } from './go-cqhttp/GetGroupRootFiles' +import { SetOnlineStatus } from './llonebot/SetOnlineStatus' export function initActionMap(adapter: Adapter) { const actionHandlers = [ @@ -71,6 +72,7 @@ export function initActionMap(adapter: Adapter) { new SetQQAvatar(adapter), new GetFriendWithCategory(adapter), new GetEvent(adapter), + new SetOnlineStatus(adapter), // onebot11 new SendLike(adapter), new GetMsg(adapter), diff --git a/src/onebot11/action/llonebot/SetOnlineStatus.ts b/src/onebot11/action/llonebot/SetOnlineStatus.ts new file mode 100644 index 0000000..98e67e2 --- /dev/null +++ b/src/onebot11/action/llonebot/SetOnlineStatus.ts @@ -0,0 +1,25 @@ +import BaseAction from '../BaseAction' +import { ActionName } from '../types' + +interface Payload { + status: number | string + ext_status: number | string + battery_status: number | string +} + +export class SetOnlineStatus extends BaseAction { + actionName = ActionName.SetOnlineStatus + + async _handle(payload: Payload) { + const ret = await this.ctx.ntUserApi.setSelfStatus( + Number(payload.status), + Number(payload.ext_status), + Number(payload.battery_status), + ) + if (ret.result !== 0) { + this.ctx.logger.error(ret) + throw new Error('设置在线状态失败') + } + return null + } +} \ No newline at end of file diff --git a/src/onebot11/action/types.ts b/src/onebot11/action/types.ts index 75b6926..deab293 100644 --- a/src/onebot11/action/types.ts +++ b/src/onebot11/action/types.ts @@ -23,6 +23,7 @@ export enum ActionName { GetFile = 'get_file', GetFriendsWithCategory = 'get_friends_with_category', GetEvent = 'get_event', + SetOnlineStatus = 'set_online_status', // onebot 11 SendLike = 'send_like', GetLoginInfo = 'get_login_info',