diff --git a/src/core/apis/msg.ts b/src/core/apis/msg.ts index d7f9844d..dda4af1a 100644 --- a/src/core/apis/msg.ts +++ b/src/core/apis/msg.ts @@ -1,5 +1,5 @@ import { ChatType, GetFileListParam, Peer, RawMessage, SendMessageElement, SendStatusType } from '@/core/types'; -import { GroupFileInfoUpdateItem, InstanceContext, NapCatCore } from '@/core'; +import { GroupFileInfoUpdateItem, InstanceContext, NapCatCore, NodeIKernelMsgService } from '@/core'; import { GeneralCallResult } from '@/core/services/common'; export class NTQQMsgApi { @@ -12,6 +12,11 @@ export class NTQQMsgApi { this.context = context; this.core = core; } + + async clickInlineKeyboardButton(...params: Parameters) { + return this.context.session.getMsgService().clickInlineKeyboardButton(...params); + } + getMsgByClientSeqAndTime(peer: Peer, replyMsgClientSeq: string, replyMsgTime: string) { // https://bot.q.qq.com/wiki/develop/api-v2/openapi/emoji/model.html#EmojiType 可以用过特殊方式拉取 return this.context.session.getMsgService().getMsgByClientSeqAndTime(peer, replyMsgClientSeq, replyMsgTime); diff --git a/src/core/services/NodeIKernelMsgService.ts b/src/core/services/NodeIKernelMsgService.ts index 98d0ec71..6eb1f5b0 100644 --- a/src/core/services/NodeIKernelMsgService.ts +++ b/src/core/services/NodeIKernelMsgService.ts @@ -464,7 +464,16 @@ export interface NodeIKernelMsgService { setMsgEmojiLikesForRole(...args: unknown[]): unknown; - clickInlineKeyboardButton(...args: unknown[]): unknown; + clickInlineKeyboardButton(params: { + guildId: string, + peerId: string, + botAppid: string, + msgSeq: string, + buttonId: string, + callback_data: string, + dmFlag: number, + chatType: number + }): Promise; setCurOnScreenMsg(...args: unknown[]): unknown; diff --git a/src/onebot/action/extends/ClickInlineKeyboardButton.ts b/src/onebot/action/extends/ClickInlineKeyboardButton.ts new file mode 100644 index 00000000..124886ce --- /dev/null +++ b/src/onebot/action/extends/ClickInlineKeyboardButton.ts @@ -0,0 +1,30 @@ +import { ActionName } from '@/onebot/action/router'; +import { OneBotAction } from '../OneBotAction'; +import { Static, Type } from '@sinclair/typebox'; + +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + bot_appid: Type.String(), + button_id: Type.String({ default: '' }), + callback_data: Type.String({ default: '' }), +}); + +type Payload = Static; + +export class ClickInlineKeyboardButton extends OneBotAction { + override actionName = ActionName.ClickInlineKeyboardButton; + override payloadSchema = SchemaData; + + async _handle(payload: Payload) { + return await this.core.apis.MsgApi.clickInlineKeyboardButton({ + buttonId: payload.button_id, + guildId: '',// 频道使用 + peerId: payload.group_id.toString(), + botAppid: payload.bot_appid, + msgSeq: '10086', + callback_data: payload.callback_data, + dmFlag: 0, + chatType: 1 + }) + } +} diff --git a/src/onebot/action/index.ts b/src/onebot/action/index.ts index b3781912..a9044277 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -105,6 +105,7 @@ import { SendPacket } from './extends/SendPacket'; import { SendPoke } from '@/onebot/action/packet/SendPoke'; import { SetDiyOnlineStatus } from './extends/SetDiyOnlineStatus'; import { BotExit } from './extends/BotExit'; +import { ClickInlineKeyboardButton } from './extends/ClickInlineKeyboardButton'; export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCore) { @@ -223,6 +224,7 @@ export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCo new SendPoke(obContext, core), new GetGroupSystemMsg(obContext, core), new BotExit(obContext, core), + new ClickInlineKeyboardButton(obContext, core), ]; type HandlerUnion = typeof actionHandlers[number]; diff --git a/src/onebot/action/router.ts b/src/onebot/action/router.ts index fb9dc37e..7e065de9 100644 --- a/src/onebot/action/router.ts +++ b/src/onebot/action/router.ts @@ -10,6 +10,7 @@ export interface InvalidCheckResult { } export const ActionName = { + ClickInlineKeyboardButton: 'click_inline_keyboard_button', GetUnidirectionalFriendList: 'get_unidirectional_friend_list', // onebot 11 SendPrivateMsg: 'send_private_msg', @@ -142,6 +143,6 @@ export const ActionName = { SendGroupAiRecord: 'send_group_ai_record', GetClientkey: 'get_clientkey', - + SendPoke: 'send_poke', } as const;