diff --git a/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts b/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts index 33451b7..edb813d 100644 --- a/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts +++ b/src/onebot11/action/go-cqhttp/GetStrangerInfo.ts @@ -1,19 +1,59 @@ import BaseAction from '../BaseAction' import { OB11User } from '../../types' -import { getUidByUin, uidMaps } from '../../../common/data' import { OB11Constructor } from '../../constructor' import { ActionName } from '../types' import { NTQQUserApi } from '../../../ntqqapi/api/user' +import { getBuildVersion } from '@/common/utils/QQBasicInfo' +import { OB11UserSex } from '../../types' +import { calcQQLevel } from '@/common/utils/qqlevel' -export default class GoCQHTTPGetStrangerInfo extends BaseAction<{ user_id: number }, OB11User> { +interface Payload { + user_id: number | string +} + +export default class GoCQHTTPGetStrangerInfo extends BaseAction { actionName = ActionName.GoCQHTTP_GetStrangerInfo - protected async _handle(payload: { user_id: number }): Promise { - const user_id = payload.user_id.toString() - const uid = getUidByUin(user_id) - if (!uid) { - throw new Error('查无此人') + protected async _handle(payload: Payload): Promise { + if (!(getBuildVersion() >= 26702)) { + const user_id = payload.user_id.toString() + const extendData = await NTQQUserApi.getUserDetailInfoByUin(user_id) + const uid = (await NTQQUserApi.getUidByUin(user_id))! + if (!uid || uid.indexOf('*') != -1) { + const ret = { + ...extendData, + user_id: parseInt(extendData.info.uin) || 0, + nickname: extendData.info.nick, + sex: OB11UserSex.unknown, + age: (extendData.info.birthday_year == 0) ? 0 : new Date().getFullYear() - extendData.info.birthday_year, + qid: extendData.info.qid, + level: extendData.info.qqLevel && calcQQLevel(extendData.info.qqLevel) || 0, + login_days: 0, + uid: '' + } + return ret + } + const data = { ...extendData, ...(await NTQQUserApi.getUserDetailInfo(uid)) } + return OB11Constructor.stranger(data) + } else { + const user_id = payload.user_id.toString() + const extendData = await NTQQUserApi.getUserDetailInfoByUinV2(user_id) + const uid = (await NTQQUserApi.getUidByUin(user_id))! + if (!uid || uid.indexOf('*') != -1) { + const ret = { + ...extendData, + user_id: parseInt(extendData.detail.uin) || 0, + nickname: extendData.detail.simpleInfo.coreInfo.nick, + sex: OB11UserSex.unknown, + age: 0, + level: extendData.detail.commonExt.qqLevel && calcQQLevel(extendData.detail.commonExt.qqLevel) || 0, + login_days: 0, + uid: '' + } + return ret + } + const data = { ...extendData, ...(await NTQQUserApi.getUserDetailInfo(uid)) } + return OB11Constructor.stranger(data) } - return OB11Constructor.stranger(await NTQQUserApi.getUserDetailInfo(uid, true)) } } diff --git a/src/onebot11/action/llonebot/GetGroupAddRequest.ts b/src/onebot11/action/llonebot/GetGroupAddRequest.ts index 6f986aa..562a9b9 100644 --- a/src/onebot11/action/llonebot/GetGroupAddRequest.ts +++ b/src/onebot11/action/llonebot/GetGroupAddRequest.ts @@ -1,10 +1,8 @@ import { GroupNotify, GroupNotifyStatus } from '../../../ntqqapi/types' import BaseAction from '../BaseAction' import { ActionName } from '../types' -import { uidMaps } from '../../../common/data' import { NTQQUserApi } from '../../../ntqqapi/api/user' import { NTQQGroupApi } from '../../../ntqqapi/api/group' -import { log } from '../../../common/utils/log' interface OB11GroupRequestNotify { group_id: number @@ -17,11 +15,10 @@ export default class GetGroupAddRequest extends BaseAction { const data = await NTQQGroupApi.getGroupIgnoreNotifies() - log(data) - let notifies: GroupNotify[] = data.notifies.filter((notify) => notify.status === GroupNotifyStatus.WAIT_HANDLE) - let returnData: OB11GroupRequestNotify[] = [] + const notifies: GroupNotify[] = data.notifies.filter((notify) => notify.status === GroupNotifyStatus.WAIT_HANDLE) + const returnData: OB11GroupRequestNotify[] = [] for (const notify of notifies) { - const uin = uidMaps[notify.user1.uid] || (await NTQQUserApi.getUserDetailInfo(notify.user1.uid))?.uin + const uin = await NTQQUserApi.getUinByUid(notify.user1.uid) returnData.push({ group_id: parseInt(notify.group.groupCode), user_id: parseInt(uin), diff --git a/src/onebot11/action/user/GetFriendList.ts b/src/onebot11/action/user/GetFriendList.ts index 99fa97c..8025153 100644 --- a/src/onebot11/action/user/GetFriendList.ts +++ b/src/onebot11/action/user/GetFriendList.ts @@ -1,7 +1,7 @@ +import BaseAction from '../BaseAction' import { OB11User } from '../../types' import { OB11Constructor } from '../../constructor' import { friends } from '@/common/data' -import BaseAction from '../BaseAction' import { ActionName } from '../types' import { NTQQFriendApi } from '@/ntqqapi/api' import { getBuildVersion } from '@/common/utils/QQBasicInfo' diff --git a/src/onebot11/constructor.ts b/src/onebot11/constructor.ts index 590fbea..4f70b38 100644 --- a/src/onebot11/constructor.ts +++ b/src/onebot11/constructor.ts @@ -27,7 +27,7 @@ import { FriendV2, ChatType2 } from '../ntqqapi/types' -import { deleteGroup, getGroupMember, selfInfo, uidMaps } from '../common/data' +import { deleteGroup, getGroupMember, selfInfo } from '../common/data' import { EventType } from './event/OB11BaseEvent' import { encodeCQCode } from './cqcode' import { dbUtil } from '../common/db' @@ -332,7 +332,11 @@ export class OB11Constructor { //筛选item带有uid的元素 const poke_uid = pokedetail.filter(item => item.uid) if (poke_uid.length == 2) { - return new OB11FriendPokeEvent(parseInt((uidMaps[poke_uid[0].uid])!), parseInt((uidMaps[poke_uid[1].uid])), pokedetail) + return new OB11FriendPokeEvent( + parseInt(await NTQQUserApi.getUinByUid(poke_uid[0].uid)), + parseInt(await NTQQUserApi.getUinByUid(poke_uid[1].uid)), + pokedetail + ) } } //下面得改 上面也是错的grayTipElement.subElementType == GrayTipElementSubType.MEMBER_NEW_TITLE @@ -537,7 +541,12 @@ export class OB11Constructor { //筛选item带有uid的元素 const poke_uid = pokedetail.filter(item => item.uid) if (poke_uid.length == 2) { - return new OB11GroupPokeEvent(parseInt(msg.peerUid), parseInt((uidMaps[poke_uid[0].uid])!), parseInt((uidMaps[poke_uid[1].uid])), pokedetail) + return new OB11GroupPokeEvent( + parseInt(msg.peerUid), + parseInt(await NTQQUserApi.getUinByUid(poke_uid[0].uid)), + parseInt(await NTQQUserApi.getUinByUid(poke_uid[1].uid)), + pokedetail + ) } } if (grayTipElement.jsonGrayTipElement.busiId == 2401) {