style: 强类型大法

This commit is contained in:
手瓜一十雪
2025-02-02 23:22:21 +08:00
parent ac193cc94a
commit 15854c605b
191 changed files with 923 additions and 806 deletions

View File

@@ -8,12 +8,11 @@ const SchemaData = Type.Object({
});
type Payload = Static<typeof SchemaData>;
export default class DelEssenceMsg extends OneBotAction<Payload, unknown> {
override actionName = ActionName.DelEssenceMsg;
override payloadSchema = SchemaData;
export default class DelEssenceMsg extends OneBotAction<Payload, any> {
actionName = ActionName.DelEssenceMsg;
payloadSchema = SchemaData;
async _handle(payload: Payload): Promise<any> {
async _handle(payload: Payload): Promise<unknown> {
const msg = MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id);
if (!msg) {
const data = this.core.apis.GroupApi.essenceLRU.getValue(+payload.message_id);

View File

@@ -9,9 +9,9 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export class DelGroupNotice extends OneBotAction<Payload, any> {
actionName = ActionName.DelGroupNotice;
payloadSchema = SchemaData;
export class DelGroupNotice extends OneBotAction<Payload, void> {
override actionName = ActionName.DelGroupNotice;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
const group = payload.group_id.toString();

View File

@@ -12,11 +12,14 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export class GetAiRecord extends GetPacketStatusDepends<Payload, string> {
actionName = ActionName.GetAiRecord;
payloadSchema = SchemaData;
override actionName = ActionName.GetAiRecord;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
const rawRsp = await this.core.apis.PacketApi.pkt.operation.GetAiVoice(+payload.group_id, payload.character, payload.text, AIVoiceChatType.Sound);
if (!rawRsp.msgInfoBody[0]) {
throw new Error('No voice data');
}
return await this.core.apis.PacketApi.pkt.operation.GetGroupPttUrl(+payload.group_id, rawRsp.msgInfoBody[0].index);
}
}

View File

@@ -12,9 +12,9 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export class GetGroupEssence extends OneBotAction<Payload, any> {
actionName = ActionName.GoCQHTTP_GetEssenceMsg;
payloadSchema = SchemaData;
export class GetGroupEssence extends OneBotAction<Payload, unknown> {
override actionName = ActionName.GoCQHTTP_GetEssenceMsg;
override payloadSchema = SchemaData;
private async msgSeqToMsgId(peer: Peer, msgSeq: string, msgRandom: string) {
const replyMsgList = (await this.core.apis.MsgApi.getMsgsBySeqAndCount(peer, msgSeq, 1, true, true)).msgList.find((msg) => msg.msgSeq === msgSeq && msg.msgRandom === msgRandom);
@@ -27,7 +27,7 @@ export class GetGroupEssence extends OneBotAction<Payload, any> {
};
}
async _handle(payload: Payload, adapter: string, config: NetworkAdapterConfig) {
async _handle(payload: Payload, _adapter: string, config: NetworkAdapterConfig) {
const msglist = (await this.core.apis.WebApi.getGroupEssenceMsgAll(payload.group_id.toString())).flatMap((e) => e.data.msg_list);
if (!msglist) {
throw new Error('获取失败');
@@ -58,7 +58,9 @@ export class GetGroupEssence extends OneBotAction<Payload, any> {
});
const hash = crypto.createHash('md5').update(msgTempData).digest();
//设置第一个bit为0 保证shortId为正数
hash[0] &= 0x7f;
if(hash[0]){
hash[0] &= 0x7f;
}
const shortId = hash.readInt32BE(0);
this.core.apis.GroupApi.essenceLRU.set(shortId, msgTempData);
return {

View File

@@ -9,7 +9,7 @@ interface RetData {
}
export class GetGroupIgnoredNotifies extends OneBotAction<void, RetData> {
actionName = ActionName.GetGroupIgnoredNotifies;
override actionName = ActionName.GetGroupIgnoredNotifies;
async _handle(): Promise<RetData> {
const SingleScreenNotifies = await this.core.apis.GroupApi.getSingleScreenNotifies(false, 50);

View File

@@ -11,8 +11,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
class GetGroupInfo extends OneBotAction<Payload, OB11Group> {
actionName = ActionName.GetGroupInfo;
payloadSchema = SchemaData;
override actionName = ActionName.GetGroupInfo;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
const group = (await this.core.apis.GroupApi.getGroups()).find(e => e.groupCode == payload.group_id.toString());

View File

@@ -11,8 +11,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
class GetGroupList extends OneBotAction<Payload, OB11Group[]> {
actionName = ActionName.GetGroupList;
payloadSchema = SchemaData;
override actionName = ActionName.GetGroupList;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
return OB11Construct.groups(

View File

@@ -13,8 +13,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
class GetGroupMemberInfo extends OneBotAction<Payload, OB11GroupMember> {
actionName = ActionName.GetGroupMemberInfo;
payloadSchema = SchemaData;
override actionName = ActionName.GetGroupMemberInfo;
override payloadSchema = SchemaData;
private parseBoolean(value: boolean | string): boolean {
return typeof value === 'string' ? value === 'true' : value;

View File

@@ -13,8 +13,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export class GetGroupMemberList extends OneBotAction<Payload, OB11GroupMember[]> {
actionName = ActionName.GetGroupMemberList;
payloadSchema = SchemaData;
override actionName = ActionName.GetGroupMemberList;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
const groupIdStr = payload.group_id.toString();

View File

@@ -25,8 +25,8 @@ type Payload = Static<typeof SchemaData>;
type ApiGroupNotice = GroupNotice & WebApiGroupNoticeFeed;
export class GetGroupNotice extends OneBotAction<Payload, GroupNotice[]> {
actionName = ActionName.GoCQHTTP_GetGroupNotice;
payloadSchema = SchemaData;
override actionName = ActionName.GoCQHTTP_GetGroupNotice;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
const group = payload.group_id.toString();
@@ -36,6 +36,9 @@ export class GetGroupNotice extends OneBotAction<Payload, GroupNotice[]> {
}
const retNotices: GroupNotice[] = new Array<ApiGroupNotice>();
for (const key in ret.feeds) {
if (!ret.feeds[key]) {
continue;
}
const retApiNotice: WebApiGroupNoticeFeed = ret.feeds[key];
const retNotice: GroupNotice = {
notice_id: retApiNotice.fid,

View File

@@ -1,3 +1,4 @@
import { ShutUpGroupMember } from '@/core';
import { OneBotAction } from '@/onebot/action/OneBotAction';
import { ActionName } from '@/onebot/action/router';
import { Static, Type } from '@sinclair/typebox';
@@ -8,9 +9,9 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export class GetGroupShutList extends OneBotAction<Payload, any> {
actionName = ActionName.GetGroupShutList;
payloadSchema = SchemaData;
export class GetGroupShutList extends OneBotAction<Payload, ShutUpGroupMember[]> {
override actionName = ActionName.GetGroupShutList;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
return await this.core.apis.GroupApi.getGroupShutUpMemberList(payload.group_id.toString());

View File

@@ -9,9 +9,9 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export class GroupPoke extends GetPacketStatusDepends<Payload, any> {
actionName = ActionName.GroupPoke;
payloadSchema = SchemaData;
export class GroupPoke extends GetPacketStatusDepends<Payload, void> {
override actionName = ActionName.GroupPoke;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
await this.core.apis.PacketApi.pkt.operation.GroupPoke(+payload.group_id, +payload.user_id);

View File

@@ -1,7 +1,5 @@
import { ActionName } from '@/onebot/action/router';
import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus';
import { uriToLocalFile } from '@/common/file';
import { ChatType, Peer } from '@/core';
import { AIVoiceChatType } from '@/core/packet/entities/aiChat';
import { Static, Type } from '@sinclair/typebox';
@@ -17,8 +15,8 @@ type Payload = Static<typeof SchemaData>;
export class SendGroupAiRecord extends GetPacketStatusDepends<Payload, {
message_id: number
}> {
actionName = ActionName.SendGroupAiRecord;
payloadSchema = SchemaData;
override actionName = ActionName.SendGroupAiRecord;
override payloadSchema = SchemaData;
async _handle(payload: Payload) {
await this.core.apis.PacketApi.pkt.operation.GetAiVoice(+payload.group_id, payload.character, payload.text, AIVoiceChatType.Sound);

View File

@@ -4,10 +4,10 @@ import { OB11PostSendMsg } from '@/onebot/types';
// 未检测参数
class SendGroupMsg extends SendMsgBase {
actionName = ActionName.SendGroupMsg;
contextMode: ContextMode = ContextMode.Group;
override actionName = ActionName.SendGroupMsg;
override contextMode: ContextMode = ContextMode.Group;
protected async check(payload: OB11PostSendMsg): Promise<BaseCheckResult> {
protected override async check(payload: OB11PostSendMsg): Promise<BaseCheckResult> {
delete payload.user_id;
payload.message_type = 'group';
return super.check(payload);

View File

@@ -9,11 +9,11 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export default class SetEssenceMsg extends OneBotAction<Payload, any> {
actionName = ActionName.SetEssenceMsg;
payloadSchema = SchemaData;
export default class SetEssenceMsg extends OneBotAction<Payload, unknown> {
override actionName = ActionName.SetEssenceMsg;
override payloadSchema = SchemaData;
async _handle(payload: Payload): Promise<any> {
async _handle(payload: Payload) {
const msg = MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id);
if (!msg) {
throw new Error('msg not found');

View File

@@ -12,8 +12,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export default class SetGroupAddRequest extends OneBotAction<Payload, null> {
actionName = ActionName.SetGroupAddRequest;
payloadSchema = SchemaData;
override actionName = ActionName.SetGroupAddRequest;
override payloadSchema = SchemaData;
async _handle(payload: Payload): Promise<null> {
const flag = payload.flag.toString();

View File

@@ -12,8 +12,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export default class SetGroupAdmin extends OneBotAction<Payload, null> {
actionName = ActionName.SetGroupAdmin;
payloadSchema = SchemaData;
override actionName = ActionName.SetGroupAdmin;
override payloadSchema = SchemaData;
async _handle(payload: Payload): Promise<null> {
const enable = typeof payload.enable === 'string' ? payload.enable === 'true' : !!payload.enable;

View File

@@ -11,8 +11,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export default class SetGroupBan extends OneBotAction<Payload, null> {
actionName = ActionName.SetGroupBan;
payloadSchema = SchemaData;
override actionName = ActionName.SetGroupBan;
override payloadSchema = SchemaData;
async _handle(payload: Payload): Promise<null> {
const uid = await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString());

View File

@@ -11,8 +11,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export default class SetGroupCard extends OneBotAction<Payload, null> {
actionName = ActionName.SetGroupCard;
payloadSchema = SchemaData;
override actionName = ActionName.SetGroupCard;
override payloadSchema = SchemaData;
async _handle(payload: Payload): Promise<null> {
const member = await this.core.apis.GroupApi.getGroupMember(payload.group_id.toString(), payload.user_id.toString());

View File

@@ -11,8 +11,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export default class SetGroupKick extends OneBotAction<Payload, null> {
actionName = ActionName.SetGroupKick;
payloadSchema = SchemaData;
override actionName = ActionName.SetGroupKick;
override payloadSchema = SchemaData;
async _handle(payload: Payload): Promise<null> {
const rejectReq = payload.reject_add_request?.toString() == 'true';

View File

@@ -9,11 +9,11 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export default class SetGroupLeave extends OneBotAction<Payload, any> {
actionName = ActionName.SetGroupLeave;
payloadSchema = SchemaData;
export default class SetGroupLeave extends OneBotAction<Payload, void> {
override actionName = ActionName.SetGroupLeave;
override payloadSchema = SchemaData;
async _handle(payload: Payload): Promise<any> {
async _handle(payload: Payload): Promise<void> {
await this.core.apis.GroupApi.quitGroup(payload.group_id.toString());
}
}

View File

@@ -11,8 +11,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export default class SetGroupName extends OneBotAction<Payload, null> {
actionName = ActionName.SetGroupName;
payloadSchema = SchemaData;
override actionName = ActionName.SetGroupName;
override payloadSchema = SchemaData;
async _handle(payload: Payload): Promise<null> {
const ret = await this.core.apis.GroupApi.setGroupName(payload.group_id.toString(), payload.group_name);

View File

@@ -10,8 +10,8 @@ const SchemaData = Type.Object({
type Payload = Static<typeof SchemaData>;
export default class SetGroupWholeBan extends OneBotAction<Payload, null> {
actionName = ActionName.SetGroupWholeBan;
payloadSchema = SchemaData;
override actionName = ActionName.SetGroupWholeBan;
override payloadSchema = SchemaData;
async _handle(payload: Payload): Promise<null> {
const enable = payload.enable?.toString() !== 'false';