diff --git a/package.json b/package.json index 4291466..6b70464 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "deploy-win": "cmd /c \"xcopy /C /S /Y dist\\* %LITELOADERQQNT_PROFILE%\\plugins\\LLOneBot\\\"", "format": "prettier -cw .", "check": "tsc", - "compile:proto": "pbjs --no-create --no-convert --no-encode --no-verify -t static-module -w es6 -p src/ntqqapi/proto -o src/ntqqapi/proto/compiled.js systemMessage.proto profileLikeTip.proto groupMemberIncrease.proto && pbts -o src/ntqqapi/proto/compiled.d.ts src/ntqqapi/proto/compiled.js" + "compile:proto": "pbjs --no-create --no-convert --no-encode --no-verify -t static-module -w es6 -p src/ntqqapi/proto -o src/ntqqapi/proto/compiled.js systemMessage.proto profileLikeTip.proto groupMemberChange.proto && pbts -o src/ntqqapi/proto/compiled.d.ts src/ntqqapi/proto/compiled.js" }, "author": "", "license": "MIT", diff --git a/src/main/main.ts b/src/main/main.ts index 35619ee..f60e3ee 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -171,7 +171,7 @@ function onLoad() { log(arg) }) - const intervalId = setInterval(() => { + const intervalId = setInterval(async () => { const self = Object.assign(selfInfo, { uin: globalThis.authData?.uin, uid: globalThis.authData?.uid, @@ -185,6 +185,7 @@ function onLoad() { if (config.enableLLOB && (config.satori.enable || config.ob11.enable)) { startHook() + await ctx.sleep(300) } else { llonebotError.otherError = 'LLOneBot 未启动' log('LLOneBot 开关设置为关闭,不启动 LLOneBot') diff --git a/src/ntqqapi/api/user.ts b/src/ntqqapi/api/user.ts index ab1abd1..6232177 100644 --- a/src/ntqqapi/api/user.ts +++ b/src/ntqqapi/api/user.ts @@ -173,7 +173,7 @@ export class NTQQUserApi extends Service { async getUinByUidV2(uid: string) { let uin = (await invoke('nodeIKernelGroupService/getUinByUids', [{ uidList: [uid] }])).uins.get(uid) - if (uin) return uin + if (uin && uin !== '0') return uin uin = (await invoke('nodeIKernelProfileService/getUinByUid', [{ callFrom: 'FriendsServiceImpl', uid: [uid] }])).get(uid) if (uin) return uin uin = (await invoke('nodeIKernelUixConvertService/getUin', [{ uids: [uid] }])).uinInfo.get(uid) diff --git a/src/ntqqapi/proto/compiled.d.ts b/src/ntqqapi/proto/compiled.d.ts index 3d6e972..fc0f684 100644 --- a/src/ntqqapi/proto/compiled.d.ts +++ b/src/ntqqapi/proto/compiled.d.ts @@ -461,64 +461,64 @@ export namespace SysMsg { public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a GroupMemberIncrease. */ - interface IGroupMemberIncrease { + /** Properties of a GroupMemberChange. */ + interface IGroupMemberChange { - /** GroupMemberIncrease groupCode */ + /** GroupMemberChange groupCode */ groupCode?: (number|null); - /** GroupMemberIncrease memberUid */ + /** GroupMemberChange memberUid */ memberUid?: (string|null); - /** GroupMemberIncrease type */ + /** GroupMemberChange type */ type?: (number|null); - /** GroupMemberIncrease adminUid */ + /** GroupMemberChange adminUid */ adminUid?: (string|null); } - /** Represents a GroupMemberIncrease. */ - class GroupMemberIncrease implements IGroupMemberIncrease { + /** Represents a GroupMemberChange. */ + class GroupMemberChange implements IGroupMemberChange { /** - * Constructs a new GroupMemberIncrease. + * Constructs a new GroupMemberChange. * @param [properties] Properties to set */ - constructor(properties?: SysMsg.IGroupMemberIncrease); + constructor(properties?: SysMsg.IGroupMemberChange); - /** GroupMemberIncrease groupCode. */ + /** GroupMemberChange groupCode. */ public groupCode: number; - /** GroupMemberIncrease memberUid. */ + /** GroupMemberChange memberUid. */ public memberUid: string; - /** GroupMemberIncrease type. */ + /** GroupMemberChange type. */ public type: number; - /** GroupMemberIncrease adminUid. */ + /** GroupMemberChange adminUid. */ public adminUid: string; /** - * Decodes a GroupMemberIncrease message from the specified reader or buffer. + * Decodes a GroupMemberChange message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns GroupMemberIncrease + * @returns GroupMemberChange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): SysMsg.GroupMemberIncrease; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): SysMsg.GroupMemberChange; /** - * Decodes a GroupMemberIncrease message from the specified reader or buffer, length delimited. + * Decodes a GroupMemberChange message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns GroupMemberIncrease + * @returns GroupMemberChange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): SysMsg.GroupMemberIncrease; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): SysMsg.GroupMemberChange; /** - * Gets the default type url for GroupMemberIncrease + * Gets the default type url for GroupMemberChange * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ diff --git a/src/ntqqapi/proto/compiled.js b/src/ntqqapi/proto/compiled.js index 1f0f50b..b7169d8 100644 --- a/src/ntqqapi/proto/compiled.js +++ b/src/ntqqapi/proto/compiled.js @@ -1015,27 +1015,27 @@ export const SysMsg = $root.SysMsg = (() => { return ProfileLikeTip; })(); - SysMsg.GroupMemberIncrease = (function() { + SysMsg.GroupMemberChange = (function() { /** - * Properties of a GroupMemberIncrease. + * Properties of a GroupMemberChange. * @memberof SysMsg - * @interface IGroupMemberIncrease - * @property {number|null} [groupCode] GroupMemberIncrease groupCode - * @property {string|null} [memberUid] GroupMemberIncrease memberUid - * @property {number|null} [type] GroupMemberIncrease type - * @property {string|null} [adminUid] GroupMemberIncrease adminUid + * @interface IGroupMemberChange + * @property {number|null} [groupCode] GroupMemberChange groupCode + * @property {string|null} [memberUid] GroupMemberChange memberUid + * @property {number|null} [type] GroupMemberChange type + * @property {string|null} [adminUid] GroupMemberChange adminUid */ /** - * Constructs a new GroupMemberIncrease. + * Constructs a new GroupMemberChange. * @memberof SysMsg - * @classdesc Represents a GroupMemberIncrease. - * @implements IGroupMemberIncrease + * @classdesc Represents a GroupMemberChange. + * @implements IGroupMemberChange * @constructor - * @param {SysMsg.IGroupMemberIncrease=} [properties] Properties to set + * @param {SysMsg.IGroupMemberChange=} [properties] Properties to set */ - function GroupMemberIncrease(properties) { + function GroupMemberChange(properties) { if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -1043,52 +1043,52 @@ export const SysMsg = $root.SysMsg = (() => { } /** - * GroupMemberIncrease groupCode. + * GroupMemberChange groupCode. * @member {number} groupCode - * @memberof SysMsg.GroupMemberIncrease + * @memberof SysMsg.GroupMemberChange * @instance */ - GroupMemberIncrease.prototype.groupCode = 0; + GroupMemberChange.prototype.groupCode = 0; /** - * GroupMemberIncrease memberUid. + * GroupMemberChange memberUid. * @member {string} memberUid - * @memberof SysMsg.GroupMemberIncrease + * @memberof SysMsg.GroupMemberChange * @instance */ - GroupMemberIncrease.prototype.memberUid = ""; + GroupMemberChange.prototype.memberUid = ""; /** - * GroupMemberIncrease type. + * GroupMemberChange type. * @member {number} type - * @memberof SysMsg.GroupMemberIncrease + * @memberof SysMsg.GroupMemberChange * @instance */ - GroupMemberIncrease.prototype.type = 0; + GroupMemberChange.prototype.type = 0; /** - * GroupMemberIncrease adminUid. + * GroupMemberChange adminUid. * @member {string} adminUid - * @memberof SysMsg.GroupMemberIncrease + * @memberof SysMsg.GroupMemberChange * @instance */ - GroupMemberIncrease.prototype.adminUid = ""; + GroupMemberChange.prototype.adminUid = ""; /** - * Decodes a GroupMemberIncrease message from the specified reader or buffer. + * Decodes a GroupMemberChange message from the specified reader or buffer. * @function decode - * @memberof SysMsg.GroupMemberIncrease + * @memberof SysMsg.GroupMemberChange * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {SysMsg.GroupMemberIncrease} GroupMemberIncrease + * @returns {SysMsg.GroupMemberChange} GroupMemberChange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GroupMemberIncrease.decode = function decode(reader, length) { + GroupMemberChange.decode = function decode(reader, length) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - let end = length === undefined ? reader.len : reader.pos + length, message = new $root.SysMsg.GroupMemberIncrease(); + let end = length === undefined ? reader.len : reader.pos + length, message = new $root.SysMsg.GroupMemberChange(); while (reader.pos < end) { let tag = reader.uint32(); switch (tag >>> 3) { @@ -1117,37 +1117,37 @@ export const SysMsg = $root.SysMsg = (() => { }; /** - * Decodes a GroupMemberIncrease message from the specified reader or buffer, length delimited. + * Decodes a GroupMemberChange message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof SysMsg.GroupMemberIncrease + * @memberof SysMsg.GroupMemberChange * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {SysMsg.GroupMemberIncrease} GroupMemberIncrease + * @returns {SysMsg.GroupMemberChange} GroupMemberChange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - GroupMemberIncrease.decodeDelimited = function decodeDelimited(reader) { + GroupMemberChange.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Gets the default type url for GroupMemberIncrease + * Gets the default type url for GroupMemberChange * @function getTypeUrl - * @memberof SysMsg.GroupMemberIncrease + * @memberof SysMsg.GroupMemberChange * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - GroupMemberIncrease.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + GroupMemberChange.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/SysMsg.GroupMemberIncrease"; + return typeUrlPrefix + "/SysMsg.GroupMemberChange"; }; - return GroupMemberIncrease; + return GroupMemberChange; })(); return SysMsg; diff --git a/src/ntqqapi/proto/groupMemberIncrease.proto b/src/ntqqapi/proto/groupMemberChange.proto similarity index 53% rename from src/ntqqapi/proto/groupMemberIncrease.proto rename to src/ntqqapi/proto/groupMemberChange.proto index 8b6a0bc..dd0ed38 100644 --- a/src/ntqqapi/proto/groupMemberIncrease.proto +++ b/src/ntqqapi/proto/groupMemberChange.proto @@ -1,10 +1,9 @@ syntax = "proto3"; package SysMsg; -// GroupChange? -message GroupMemberIncrease { +message GroupMemberChange { uint32 groupCode = 1; string memberUid = 3; - uint32 type = 4; // 130:主动 131:被邀请 + uint32 type = 4; // 130:主动 131:被动 string adminUid = 5; } diff --git a/src/onebot11/adapter.ts b/src/onebot11/adapter.ts index 85d9160..d657116 100644 --- a/src/onebot11/adapter.ts +++ b/src/onebot11/adapter.ts @@ -362,14 +362,22 @@ class OneBot11Adapter extends Service { const event = new OB11ProfileLikeEvent(detail.uin!, detail.nickname!, +times) this.dispatch(event) } else if (msgType === 33) { - const tip = SysMsg.GroupMemberIncrease.decode(sysMsg.bodyWrapper!.body!) + const tip = SysMsg.GroupMemberChange.decode(sysMsg.bodyWrapper!.body!) if (tip.type !== 130) return this.ctx.logger.info('群成员增加', tip) const memberUin = await this.ctx.ntUserApi.getUinByUid(tip.memberUid) const operatorUin = await this.ctx.ntUserApi.getUinByUid(tip.adminUid) const event = new OB11GroupIncreaseEvent(tip.groupCode, +memberUin, +operatorUin) this.dispatch(event) - } + }/* else if (msgType === 34) { + const tip = SysMsg.GroupMemberChange.decode(sysMsg.bodyWrapper!.body!) + this.ctx.logger.info('群成员减少', tip) + const memberUin = await this.ctx.ntUserApi.getUinByUid(tip.memberUid) + const operatorUin = await this.ctx.ntUserApi.getUinByUid(tip.adminUid) //0 + const subType = tip.type === 130 ? 'leave' : 'kick' + const event = new OB11GroupDecreaseEvent(tip.groupCode, +memberUin, +operatorUin, subType) + this.dispatch(event) + }*/ }) } } diff --git a/src/onebot11/event/notice/OB11GroupDecreaseEvent.ts b/src/onebot11/event/notice/OB11GroupDecreaseEvent.ts index 4a36195..ad85264 100644 --- a/src/onebot11/event/notice/OB11GroupDecreaseEvent.ts +++ b/src/onebot11/event/notice/OB11GroupDecreaseEvent.ts @@ -12,7 +12,7 @@ export class OB11GroupDecreaseEvent extends OB11GroupNoticeEvent { constructor(groupId: number, userId: number, operatorId: number, subType: GroupDecreaseSubType = 'leave') { super() this.group_id = groupId - this.operator_id = operatorId // 实际上不应该这么实现,但是现在还没有办法识别用户是被踢出的,还是自己主动退出的 + this.operator_id = operatorId this.user_id = userId this.sub_type = subType }