mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2026-02-05 07:01:16 +00:00
Added or updated actionSummary, actionTags, payloadExample, and returnExample properties for all OneBot action classes in the napcat-onebot package. This improves API documentation and discoverability by providing concise summaries, categorization tags, and usage examples for each action.
56 lines
1.9 KiB
TypeScript
56 lines
1.9 KiB
TypeScript
import { ActionName } from '@/napcat-onebot/action/router';
|
|
import { OneBotAction } from '@/napcat-onebot/action/OneBotAction';
|
|
import { MessageUnique } from 'napcat-common/src/message-unique';
|
|
import { Static, Type } from '@sinclair/typebox';
|
|
|
|
const PayloadSchema = Type.Object({
|
|
message_id: Type.Union([Type.Number(), Type.String()], { description: '消息ID' }),
|
|
emoji_id: Type.Union([Type.Number(), Type.String()], { description: '表情ID' }),
|
|
set: Type.Optional(Type.Union([Type.Boolean(), Type.String()], { description: '是否设置' })),
|
|
});
|
|
|
|
type PayloadType = Static<typeof PayloadSchema>;
|
|
|
|
const ReturnSchema = Type.Any({ description: '操作结果' });
|
|
|
|
type ReturnType = Static<typeof ReturnSchema>;
|
|
|
|
export class SetMsgEmojiLike extends OneBotAction<PayloadType, ReturnType> {
|
|
override actionName = ActionName.SetMsgEmojiLike;
|
|
override actionSummary = '设置消息表情点赞';
|
|
override actionTags = ['消息扩展'];
|
|
override payloadExample = {
|
|
message_id: 12345,
|
|
emoji_id: '123',
|
|
set: true
|
|
};
|
|
override returnExample = {
|
|
result: true
|
|
};
|
|
override payloadSchema = PayloadSchema;
|
|
override returnSchema = ReturnSchema;
|
|
|
|
async _handle (payload: PayloadType) {
|
|
const msg = MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id);
|
|
if (!msg) {
|
|
throw new Error('msg not found');
|
|
}
|
|
if (!payload.emoji_id) {
|
|
throw new Error('emojiId not found');
|
|
}
|
|
payload.set = payload.set ?? true;
|
|
|
|
const msgData = (await this.core.apis.MsgApi.getMsgsByMsgId(msg.Peer, [msg.MsgId])).msgList;
|
|
if (!msgData || msgData.length === 0 || !msgData[0]?.msgSeq) {
|
|
throw new Error('find msg by msgid error');
|
|
}
|
|
|
|
return await this.core.apis.MsgApi.setEmojiLike(
|
|
msg.Peer,
|
|
msgData[0].msgSeq,
|
|
payload.emoji_id.toString(),
|
|
typeof payload.set === 'string' ? payload.set === 'true' : !!payload.set
|
|
);
|
|
}
|
|
}
|