mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
fix: at
element
This commit is contained in:
parent
ddf7ffcabe
commit
433a175809
@ -16,7 +16,7 @@ export class NTQQFriendApi extends Service {
|
||||
|
||||
/** 大于或等于 26702 应使用 getBuddyV2 */
|
||||
async getFriends() {
|
||||
const data = await invoke<{
|
||||
const res = await invoke<{
|
||||
data: {
|
||||
categoryId: number
|
||||
categroyName: string
|
||||
@ -28,11 +28,7 @@ export class NTQQFriendApi extends Service {
|
||||
cbCmd: ReceiveCmdS.FRIENDS,
|
||||
afterFirstCmd: false
|
||||
})
|
||||
const _friends: Friend[] = []
|
||||
for (const item of data.data) {
|
||||
_friends.push(...item.buddyList)
|
||||
}
|
||||
return _friends
|
||||
return res.data.flatMap(e => e.buddyList)
|
||||
}
|
||||
|
||||
async handleFriendRequest(friendUid: string, reqTime: string, accept: boolean) {
|
||||
|
@ -296,4 +296,30 @@ export class NTQQGroupApi extends Service {
|
||||
async setGroupAvatar(groupCode: string, path: string) {
|
||||
return await invoke('nodeIKernelGroupService/setHeader', [{ path, groupCode }])
|
||||
}
|
||||
|
||||
async searchMember(groupCode: string, keyword: string) {
|
||||
await invoke('nodeIKernelGroupListener/onSearchMemberChange', [], {
|
||||
registerEvent: true
|
||||
})
|
||||
const sceneId = await invoke(NTMethod.GROUP_MEMBER_SCENE, [{
|
||||
groupCode,
|
||||
scene: 'groupMemberList_MainWindow'
|
||||
}])
|
||||
const data = await invoke<{
|
||||
sceneId: string
|
||||
keyword: string
|
||||
infos: Map<string, GroupMember>
|
||||
}>(
|
||||
'nodeIKernelGroupService/searchMember',
|
||||
[{ sceneId, keyword }],
|
||||
{
|
||||
cbCmd: 'nodeIKernelGroupListener/onSearchMemberChange',
|
||||
cmdCB: payload => {
|
||||
return payload.sceneId === sceneId && payload.keyword === keyword
|
||||
},
|
||||
afterFirstCmd: false
|
||||
}
|
||||
)
|
||||
return data.infos
|
||||
}
|
||||
}
|
||||
|
@ -108,18 +108,23 @@ export class NTQQUserApi extends Service {
|
||||
async getUidByUinV1(uin: string, groupCode?: string) {
|
||||
let uid = (await invoke('nodeIKernelUixConvertService/getUid', [{ uins: [uin] }])).uidInfo.get(uin)
|
||||
if (!uid) {
|
||||
const unveifyUid = (await this.getUserDetailInfoByUin(uin)).info.uid //特殊转换
|
||||
if (unveifyUid.indexOf('*') === -1) {
|
||||
uid = unveifyUid
|
||||
}
|
||||
}
|
||||
if (!uid) {
|
||||
const friends = await this.ctx.ntFriendApi.getFriends() //从好友列表转
|
||||
const friends = await this.ctx.ntFriendApi.getFriends()
|
||||
uid = friends.find(item => item.uin === uin)?.uid
|
||||
}
|
||||
if (!uid && groupCode) {
|
||||
const members = await this.ctx.ntGroupApi.getGroupMembers(groupCode)
|
||||
uid = Array.from(members.values()).find(e => e.uin === uin)?.uid
|
||||
let member = await this.ctx.ntGroupApi.searchMember(groupCode, uin)
|
||||
if (member.size === 0) {
|
||||
await this.ctx.ntGroupApi.getGroupMembers(groupCode, 1)
|
||||
await this.ctx.sleep(30)
|
||||
member = await this.ctx.ntGroupApi.searchMember(groupCode, uin)
|
||||
}
|
||||
uid = member.values().find(e => e.uin === uin)?.uid
|
||||
}
|
||||
if (!uid) {
|
||||
const unveifyUid = (await this.getUserDetailInfoByUin(uin)).info.uid
|
||||
if (!unveifyUid.includes('*')) {
|
||||
uid = unveifyUid
|
||||
}
|
||||
}
|
||||
return uid
|
||||
}
|
||||
|
@ -125,4 +125,6 @@ export interface NodeIKernelGroupService {
|
||||
removeGroupEssence(param: { groupCode: string, msgRandom: number, msgSeq: number }): Promise<unknown>
|
||||
|
||||
setHeader(args: unknown[]): Promise<GeneralCallResult>
|
||||
|
||||
searchMember(sceneId: string, keyword: string): Promise<void>
|
||||
}
|
||||
|
@ -66,15 +66,10 @@ export async function createSendElements(
|
||||
}
|
||||
}
|
||||
else if (peer.chatType === ChatType.Group) {
|
||||
const uid = await ctx.ntUserApi.getUidByUin(atQQ) ?? ''
|
||||
const uid = await ctx.ntUserApi.getUidByUin(atQQ, peer.peerUid) ?? ''
|
||||
let display = ''
|
||||
if (sendMsg.data.name) {
|
||||
display = `@${sendMsg.data.name}`
|
||||
} else {
|
||||
try {
|
||||
const member = await ctx.ntGroupApi.getGroupMember(peer.peerUid, uid)
|
||||
display = `@${member.cardName || member.nick}`
|
||||
} catch { }
|
||||
}
|
||||
sendElements.push(SendElement.at(atQQ, uid, AtType.One, display))
|
||||
}
|
||||
|
@ -175,10 +175,14 @@ export class MessageEncoder {
|
||||
if (type === 'text') {
|
||||
this.elements.push(SendElement.text(attrs.content))
|
||||
} else if (type === 'at') {
|
||||
this.peer ??= await getPeer(this.ctx, this.channelId)
|
||||
if (this.peer.chatType !== NT.ChatType.Group) {
|
||||
return
|
||||
}
|
||||
if (attrs.type === 'all') {
|
||||
this.elements.push(SendElement.at('', '', NT.AtType.All, '@全体成员'))
|
||||
} else {
|
||||
const uid = await this.ctx.ntUserApi.getUidByUin(attrs.id) ?? ''
|
||||
const uid = await this.ctx.ntUserApi.getUidByUin(attrs.id, this.peer.peerUid) ?? ''
|
||||
const display = attrs.name ? '@' + attrs.name : ''
|
||||
this.elements.push(SendElement.at(attrs.id, uid, NT.AtType.One, display))
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user