remove: todo -> work

This commit is contained in:
手瓜一十雪 2024-11-14 12:44:21 +08:00
parent 71a6c4ccc5
commit 756dea71fc
16 changed files with 24 additions and 25 deletions

View File

@ -1,4 +1,4 @@
// TODO: further refactor in NapCat.Packet v2 // work:further refactor in NapCat.Packet v2
import { NapProtoMsg, ProtoField, ScalarType } from "@napneko/nap-proto-core"; import { NapProtoMsg, ProtoField, ScalarType } from "@napneko/nap-proto-core";
const LikeDetail = { const LikeDetail = {

View File

@ -1,4 +1,4 @@
// TODO: further refactor in NapCat.Packet v2 // work:further refactor in NapCat.Packet v2
import { NapProtoMsg, ProtoField, ScalarType } from "@napneko/nap-proto-core"; import { NapProtoMsg, ProtoField, ScalarType } from "@napneko/nap-proto-core";
const BodyInner = { const BodyInner = {

View File

@ -210,7 +210,7 @@ export class NapCatCore {
}); });
}; };
groupListener.onMemberListChange = (arg) => { groupListener.onMemberListChange = (arg) => {
// todo: 应该加一个内部自己维护的成员变动callback用于判断成员变化通知 // work:应该加一个内部自己维护的成员变动callback用于判断成员变化通知
const groupCode = arg.sceneId.split('_')[0]; const groupCode = arg.sceneId.split('_')[0];
if (this.apis.GroupApi.groupMemberCache.has(groupCode)) { if (this.apis.GroupApi.groupMemberCache.has(groupCode)) {
const existMembers = this.apis.GroupApi.groupMemberCache.get(groupCode)!; const existMembers = this.apis.GroupApi.groupMemberCache.get(groupCode)!;

View File

@ -1,8 +1,7 @@
import { Data, WebSocket } from "ws"; import { Data, WebSocket, ErrorEvent } from "ws";
import { IPacketClient, RecvPacket } from "@/core/packet/client/baseClient"; import { IPacketClient, RecvPacket } from "@/core/packet/client/baseClient";
import { PacketContext } from "@/core/packet/context/packetContext"; import { PacketContext } from "@/core/packet/context/packetContext";
import { LogStack } from "@/core/packet/context/clientContext"; import { LogStack } from "@/core/packet/context/clientContext";
import { ErrorEvent } from "ws";
export class WsPacketClient extends IPacketClient { export class WsPacketClient extends IPacketClient {
private websocket: WebSocket | null = null; private websocket: WebSocket | null = null;

View File

@ -228,7 +228,7 @@ export class PacketHighwayContext {
}); });
await this.hwClient.upload( await this.hwClient.upload(
1005, 1005,
fs.createReadStream(video.filePath!, { highWaterMark: BlockSize }), fs.createReadStream(video.filePath, { highWaterMark: BlockSize }),
+video.fileSize!, +video.fileSize!,
md5, md5,
extend extend
@ -256,7 +256,7 @@ export class PacketHighwayContext {
}); });
await this.hwClient.upload( await this.hwClient.upload(
1006, 1006,
fs.createReadStream(video.thumbPath!, { highWaterMark: BlockSize }), fs.createReadStream(video.thumbPath, { highWaterMark: BlockSize }),
+video.thumbSize!, +video.thumbSize!,
md5, md5,
extend extend
@ -293,7 +293,7 @@ export class PacketHighwayContext {
}); });
await this.hwClient.upload( await this.hwClient.upload(
1001, 1001,
fs.createReadStream(video.filePath!, { highWaterMark: BlockSize }), fs.createReadStream(video.filePath, { highWaterMark: BlockSize }),
+video.fileSize!, +video.fileSize!,
md5, md5,
extend extend
@ -321,7 +321,7 @@ export class PacketHighwayContext {
}); });
await this.hwClient.upload( await this.hwClient.upload(
1002, 1002,
fs.createReadStream(video.thumbPath!, { highWaterMark: BlockSize }), fs.createReadStream(video.thumbPath, { highWaterMark: BlockSize }),
+video.thumbSize!, +video.thumbSize!,
md5, md5,
extend extend

View File

@ -16,7 +16,7 @@ export class PacketMsgBuilder {
return element.map((node): NapProtoEncodeStructType<typeof PushMsgBody> => { return element.map((node): NapProtoEncodeStructType<typeof PushMsgBody> => {
const avatar = `https://q.qlogo.cn/headimg_dl?dst_uin=${node.senderUin}&spec=640&img_type=jpg`; const avatar = `https://q.qlogo.cn/headimg_dl?dst_uin=${node.senderUin}&spec=640&img_type=jpg`;
const msgContent = node.msg.reduceRight((acc: undefined | Uint8Array, msg: IPacketMsgElement<PacketSendMsgElement>) => { const msgContent = node.msg.reduceRight((acc: undefined | Uint8Array, msg: IPacketMsgElement<PacketSendMsgElement>) => {
return acc !== undefined ? acc : msg.buildContent(); return acc ?? msg.buildContent();
}, undefined); }, undefined);
const msgElement = node.msg.flatMap(msg => msg.buildElement() ?? []); const msgElement = node.msg.flatMap(msg => msg.buildElement() ?? []);
if (!msgContent && !msgElement.length) { if (!msgContent && !msgElement.length) {

View File

@ -76,7 +76,7 @@ export type rawMsgWithSendMsg = {
msg: PacketSendMsgElement[] msg: PacketSendMsgElement[]
} }
// TODO: make it become adapter? // work:make it become adapter?
export class PacketMsgConverter { export class PacketMsgConverter {
private isValidElementType(type: ElementType): type is keyof ElementToPacketMsgConverters { private isValidElementType(type: ElementType): type is keyof ElementToPacketMsgConverters {
return SupportedElementTypes.includes(type); return SupportedElementTypes.includes(type);
@ -116,7 +116,7 @@ export class PacketMsgConverter {
[ElementType.MARKDOWN]: (element) => { [ElementType.MARKDOWN]: (element) => {
return new PacketMsgMarkDownElement(element as SendMarkdownElement); return new PacketMsgMarkDownElement(element as SendMarkdownElement);
}, },
// TODO: check this logic, move it in arkElement? // work:check this logic, move it in arkElement?
[ElementType.STRUCTLONGMSG]: (element) => { [ElementType.STRUCTLONGMSG]: (element) => {
return new PacketMultiMsgElement(element as SendStructLongMsgElement); return new PacketMultiMsgElement(element as SendStructLongMsgElement);
} }

View File

@ -32,7 +32,7 @@ import { ForwardMsgBuilder } from "@/common/forward-msg-builder";
import { PacketMsg, PacketSendMsgElement } from "@/core/packet/message/message"; import { PacketMsg, PacketSendMsgElement } from "@/core/packet/message/message";
// raw <-> packet // raw <-> packet
// TODO: SendStructLongMsgElement // work:SendStructLongMsgElement
export abstract class IPacketMsgElement<T extends PacketSendMsgElement> { export abstract class IPacketMsgElement<T extends PacketSendMsgElement> {
protected constructor(rawElement: T) { protected constructor(rawElement: T) {
} }
@ -118,7 +118,7 @@ export class PacketMsgReplyElement extends IPacketMsgElement<SendReplyElement> {
this.targetUin = +(element.replyElement.senderUin ?? 0); this.targetUin = +(element.replyElement.senderUin ?? 0);
this.targetUid = element.replyElement.senderUidStr ?? ''; this.targetUid = element.replyElement.senderUidStr ?? '';
this.time = +(element.replyElement.replyMsgTime ?? 0); this.time = +(element.replyElement.replyMsgTime ?? 0);
this.elems = []; // TODO: in replyElement.sourceMsgTextElems this.elems = []; // work:in replyElement.sourceMsgTextElems
} }
get isGroupReply(): boolean { get isGroupReply(): boolean {
@ -131,7 +131,7 @@ export class PacketMsgReplyElement extends IPacketMsgElement<SendReplyElement> {
origSeqs: [this.isGroupReply ? this.messageClientSeq : this.messageSeq], origSeqs: [this.isGroupReply ? this.messageClientSeq : this.messageSeq],
senderUin: BigInt(this.targetUin), senderUin: BigInt(this.targetUin),
time: this.time, time: this.time,
elems: [], // TODO: in replyElement.sourceMsgTextElems elems: [], // work:in replyElement.sourceMsgTextElems
pbReserve: { pbReserve: {
messageId: this.messageId, messageId: this.messageId,
}, },
@ -346,9 +346,9 @@ export class PacketMsgPttElement extends IPacketMsgElement<SendPttElement> {
constructor(element: SendPttElement) { constructor(element: SendPttElement) {
super(element); super(element);
this.filePath = element.pttElement.filePath; this.filePath = element.pttElement.filePath;
this.fileSize = +element.pttElement.fileSize; // TODO: cc this.fileSize = +element.pttElement.fileSize; // work:cc
this.fileMd5 = element.pttElement.md5HexStr; this.fileMd5 = element.pttElement.md5HexStr;
this.fileDuration = Math.round(element.pttElement.duration); // TODO: cc this.fileDuration = Math.round(element.pttElement.duration); // work:cc
} }
get valid(): boolean { get valid(): boolean {

View File

@ -25,7 +25,7 @@ class DownloadOfflineFile extends PacketTransformer<typeof proto.OidbSvcTrpcTcp0
return OidbBase.build(0xE37, 800, body, false, false); return OidbBase.build(0xE37, 800, body, false, false);
} }
// TODO: check // work:check
parse(data: Buffer) { parse(data: Buffer) {
const oidbBody = OidbBase.parse(data).body; const oidbBody = OidbBase.parse(data).body;
return new NapProtoMsg(proto.OidbSvcTrpcTcp0XE37Response).decode(oidbBody); return new NapProtoMsg(proto.OidbSvcTrpcTcp0XE37Response).decode(oidbBody);

View File

@ -16,7 +16,7 @@ class FetchSessionKey extends PacketTransformer<typeof proto.HttpConn0x6ff_501Re
field4: 1, field4: 1,
field6: 3, field6: 3,
serviceTypes: [1, 5, 10, 21], serviceTypes: [1, 5, 10, 21],
// tgt: "", // TODO: do we really need tgt? seems not // tgt: "", // work:do we really need tgt? seems not
field9: 2, field9: 2,
field10: 9, field10: 9,
field11: 8, field11: 8,

View File

@ -40,7 +40,7 @@ class UploadGroupImage extends PacketTransformer<typeof proto.NTV2RichMediaResp>
fileName: img.name, fileName: img.name,
type: { type: {
type: 1, type: 1,
picFormat: img.picType, //TODO: extend NapCat imgType /cc @MliKiowa picFormat: img.picType, //work:extend NapCat imgType /cc @MliKiowa
videoFormat: 0, videoFormat: 0,
voiceFormat: 0, voiceFormat: 0,
}, },

View File

@ -40,7 +40,7 @@ class UploadPrivateImage extends PacketTransformer<typeof proto.NTV2RichMediaRes
fileName: img.name, fileName: img.name,
type: { type: {
type: 1, type: 1,
picFormat: img.picType, //TODO: extend NapCat imgType /cc @MliKiowa picFormat: img.picType, //work:extend NapCat imgType /cc @MliKiowa
videoFormat: 0, videoFormat: 0,
voiceFormat: 0, voiceFormat: 0,
}, },

View File

@ -15,7 +15,7 @@ type Payload = FromSchema<typeof SchemaData>;
export class GetGroupFileSystemInfo extends BaseAction<Payload, { export class GetGroupFileSystemInfo extends BaseAction<Payload, {
file_count: number, file_count: number,
limit_count: number, // unimplemented limit_count: number, // unimplemented
used_space: number, // todo: unimplemented, but can be implemented later used_space: number, // work:unimplemented, but can be implemented later
total_space: number, // unimplemented, 10 GB by default total_space: number, // unimplemented, 10 GB by default
}> { }> {
actionName = ActionName.GoCQHTTP_GetGroupFileSystemInfo; actionName = ActionName.GoCQHTTP_GetGroupFileSystemInfo;

View File

@ -7,7 +7,7 @@ export abstract class GetPacketStatusDepends<PT, RT> extends BaseAction<PT, RT>
protected async check(payload: PT): Promise<BaseCheckResult>{ protected async check(payload: PT): Promise<BaseCheckResult>{
if (!this.core.apis.PacketApi.available) { if (!this.core.apis.PacketApi.available) {
// TODO: add error stack? // work:add error stack?
return { return {
valid: false, valid: false,
message: "packetBackend不可用请参照文档 https://napneko.github.io/config/advanced 和启动日志检查packetBackend状态或进行配置" + message: "packetBackend不可用请参照文档 https://napneko.github.io/config/advanced 和启动日志检查packetBackend状态或进行配置" +

View File

@ -5,7 +5,7 @@ export type GroupDecreaseSubType = 'leave' | 'kick' | 'kick_me';
export class OB11GroupDecreaseEvent extends OB11GroupNoticeEvent { export class OB11GroupDecreaseEvent extends OB11GroupNoticeEvent {
notice_type = 'group_decrease'; notice_type = 'group_decrease';
sub_type: GroupDecreaseSubType = 'leave'; // TODO: 实现其他几种子类型的识别 ("leave" | "kick" | "kick_me") sub_type: GroupDecreaseSubType = 'leave'; // work:实现其他几种子类型的识别 ("leave" | "kick" | "kick_me")
operator_id: number; operator_id: number;
constructor(core: NapCatCore, groupId: number, userId: number, operatorId: number, subType: GroupDecreaseSubType = 'leave') { constructor(core: NapCatCore, groupId: number, userId: number, operatorId: number, subType: GroupDecreaseSubType = 'leave') {

View File

@ -563,7 +563,7 @@ export class NapCatOneBot11Adapter {
for (const message of msgList) { for (const message of msgList) {
// log("message update", message.sendStatus, message.msgId, message.msgSeq) // log("message update", message.sendStatus, message.msgId, message.msgSeq)
const peer: Peer = { chatType: message.chatType, peerUid: message.peerUid, guildId: '' }; const peer: Peer = { chatType: message.chatType, peerUid: message.peerUid, guildId: '' };
if (message.recallTime != '0' && !cache.get(message.msgId)) { //todo: 这个判断方法不太好,应该使用灰色消息元素来判断? if (message.recallTime != '0' && !cache.get(message.msgId)) { //work:这个判断方法不太好,应该使用灰色消息元素来判断?
cache.put(message.msgId, true); cache.put(message.msgId, true);
// 撤回消息上报 // 撤回消息上报
let oriMessageId = MessageUnique.getShortIdByMsgId(message.msgId); let oriMessageId = MessageUnique.getShortIdByMsgId(message.msgId);