refactor: friend

This commit is contained in:
手瓜一十雪
2024-06-11 12:34:04 +08:00
parent 85f90f1133
commit 2b83b94afd
51 changed files with 67 additions and 95 deletions

View File

@@ -1,14 +1,12 @@
import BaseAction from '../BaseAction';
import { OB11Message, OB11User } from '../../types';
import { getFriend, friends } from '@/core/data';
import { ActionName } from '../types';
import { ChatType } from '@/core/entities';
import { dbUtil } from '@/common/utils/db';
import { NTQQMsgApi } from '@/core/apis/msg';
import { OB11Constructor } from '../../constructor';
import { logDebug } from '@/common/utils/log';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
import { NTQQUserApi } from '@/core';
import { NTQQFriendApi, NTQQUserApi } from '@/core';
interface Response {
messages: OB11Message[];
@@ -35,7 +33,7 @@ export default class GetFriendMsgHistory extends BaseAction<Payload, Response> {
throw `记录${payload.user_id}不存在`;
}
const startMsgId = (await dbUtil.getMsgByShortId(payload.message_seq))?.msgId || '0';
const friend = await getFriend(uid);
const friend = await NTQQFriendApi.isBuddy(uid);
const historyResult = (await NTQQMsgApi.getMsgHistory({
chatType: friend ? ChatType.friend : ChatType.temp,
peerUid: uid

View File

@@ -1,8 +1,7 @@
import { ChatType, Peer } from '@/core/entities';
import BaseAction from '../BaseAction';
import { ActionName } from '../types';
import { NTQQMsgApi, NTQQUserApi } from '@/core/apis';
import { getFriend } from '@/core/data';
import { NTQQFriendApi, NTQQMsgApi, NTQQUserApi } from '@/core/apis';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
const SchemaData = {
@@ -22,8 +21,8 @@ class MarkMsgAsRead extends BaseAction<PlayloadType, null> {
if (!peerUid) {
throw `私聊${payload.user_id}不存在`;
}
const friend = await getFriend(peerUid);
return { chatType: friend ? ChatType.friend : ChatType.temp, peerUid };
const isBuddy = await NTQQFriendApi.isBuddy(peerUid);
return { chatType: isBuddy ? ChatType.friend : ChatType.temp, peerUid };
}
if (!payload.group_id) {
throw '缺少参数 group_id 或 user_id';

View File

@@ -7,17 +7,15 @@ import {
OB11PostSendMsg
} from '@/onebot11/types';
import { ActionName, BaseCheckResult } from '@/onebot11/action/types';
import { getFriend, getGroup } from '@/core/data';
import { getGroup } from '@/core/data';
import { dbUtil } from '@/common/utils/db';
import { ChatType, ElementType, Group, NTQQMsgApi, NTQQUserApi, Peer, SendMessageElement, } from '@/core';
import { ChatType, ElementType, Group, NTQQFileApi, NTQQFriendApi, NTQQMsgApi, NTQQUserApi, Peer, SendMessageElement, } from '@/core';
import fs from 'node:fs';
import { logDebug, logError } from '@/common/utils/log';
import { decodeCQCode } from '@/onebot11/cqcode';
import createSendElements from './create-send-elements';
import { handleForwardNode } from '@/onebot11/action/msg/SendMsg/handle-forward-node';
const ALLOW_SEND_TEMP_MSG = false;
export interface ReturnDataType {
message_id: number;
}
@@ -90,24 +88,12 @@ async function createContext(payload: OB11PostSendMsg): Promise<{
group: group,
};
} else if (payload.user_id) { // take this as a private message
const friend = await getFriend(payload.user_id.toString());
if (!friend) {
if (ALLOW_SEND_TEMP_MSG) {
//const tempUid = getUidByUin(payload.user_id.toString());
const tempUid = await NTQQUserApi.getUidByUin(payload.user_id.toString());
if (tempUid) return {
peer: {
chatType: ChatType.temp,
peerUid: tempUid
},
};
}
throw `找不到私聊对象 ${payload.user_id}`;
}
const Uid = await NTQQUserApi.getUidByUin(payload.user_id.toString());
const isBuddy = await NTQQFriendApi.isBuddy(payload.user_id.toString());
return {
peer: {
chatType: ChatType.friend,
peerUid: friend.uid
chatType: isBuddy ? ChatType.friend : ChatType.temp,
peerUid: Uid!
},
};
}
@@ -134,16 +120,18 @@ export class SendMsg extends BaseAction<OB11PostSendMsg, ReturnDataType> {
return { valid: false, message: `${payload.group_id}不存在` };
}
if (payload.user_id && payload.message_type !== 'group') {
if (!(await getFriend(payload.user_id))) {
let isBuddy = await NTQQFriendApi.isBuddy(payload.user_id.toString());
// 此处有问题
if (!isBuddy) {
if (
!ALLOW_SEND_TEMP_MSG &&
!(await NTQQUserApi.getUidByUin(payload.user_id))
) {
return { valid: false, message: '不能发送临时消息' };
return { valid: false, message: '异常消息' };
}
}
}
return { valid: true, };
return { valid: true };
}
protected async _handle(payload: OB11PostSendMsg): Promise<{ message_id: number }> {

View File

@@ -1,8 +1,6 @@
import { NTQQUserApi } from '@/core/apis';
import BaseAction from '../BaseAction';
import { getFriend } from '@/core/data';
import { ActionName } from '../types';
import { log, logDebug } from '@/common/utils/log';
import { FromSchema, JSONSchema } from 'json-schema-to-ts';
const SchemaData = {
@@ -23,13 +21,7 @@ export default class SendLike extends BaseAction<Payload, null> {
//logDebug('点赞参数', payload);
try {
const qq = payload.user_id.toString();
const friend = await getFriend(qq);
let uid: string;
if (!friend) {
uid = await NTQQUserApi.getUidByUin(qq) || '';
} else {
uid = friend.uid;
}
let uid: string = await NTQQUserApi.getUidByUin(qq) || '';
const result = await NTQQUserApi.like(uid, parseInt(payload.times?.toString()) || 1);
//logDebug('点赞结果', result);
if (result.result !== 0) {

View File

@@ -39,7 +39,7 @@ import { OB11GroupTitleEvent } from './event/notice/OB11GroupTitleEvent';
import { OB11GroupCardEvent } from './event/notice/OB11GroupCardEvent';
import { OB11GroupDecreaseEvent } from './event/notice/OB11GroupDecreaseEvent';
import { ob11Config } from '@/onebot11/config';
import { deleteGroup, getFriend, getGroupMember, groupMembers, selfInfo, tempGroupCodeMap } from '@/core/data';
import { deleteGroup, getGroupMember, groupMembers, selfInfo, tempGroupCodeMap } from '@/core/data';
import { NTQQFileApi, NTQQGroupApi, NTQQMsgApi, NTQQUserApi } from '@/core/apis';
import { OB11GroupMsgEmojiLikeEvent } from '@/onebot11/event/notice/OB11MsgEmojiLikeEvent';
import { napCatCore } from '@/core';
@@ -80,10 +80,8 @@ export class OB11Constructor {
}
else if (msg.chatType == ChatType.friend) {
resMsg.sub_type = 'friend';
const friend = await getFriend(msg.senderUin!);
if (friend) {
resMsg.sender.nickname = friend.nick;
}
let user = await NTQQUserApi.getUserDetailInfoByUin(msg.senderUin!);
resMsg.sender.nickname = user.info.nick;
}
else if (msg.chatType == ChatType.temp) {
resMsg.sub_type = 'group';

View File

@@ -19,7 +19,7 @@ import { OB11Config, ob11Config } from '@/onebot11/config';
import { httpHeart, ob11HTTPServer } from '@/onebot11/server/http';
import { ob11WebsocketServer } from '@/onebot11/server/ws/WebsocketServer';
import { ob11ReverseWebsockets } from '@/onebot11/server/ws/ReverseWebsocket';
import { getFriend, getGroup, getGroupMember, groupNotifies, selfInfo, tempGroupCodeMap } from '@/core/data';
import { getGroup, getGroupMember, groupNotifies, selfInfo, tempGroupCodeMap } from '@/core/data';
import { dbUtil } from '@/common/utils/db';
import { BuddyListener, GroupListener, NodeIKernelBuddyListener } from '@/core/listeners';
import { OB11FriendRequestEvent } from '@/onebot11/event/request/OB11FriendRequest';
@@ -474,10 +474,7 @@ export class NapCatOnebot11 {
logDebug('收到邀请我加群通知');
const groupInviteEvent = new OB11GroupRequestEvent();
groupInviteEvent.group_id = parseInt(notify.group.groupCode);
let user_id = (await getFriend(notify.user2.uid))?.uin;
if (!user_id) {
user_id = (await NTQQUserApi.getUinByUid(notify.user2.uid)) || '';
}
let user_id = (await NTQQUserApi.getUinByUid(notify.user2.uid)) || '';
groupInviteEvent.user_id = parseInt(user_id);
groupInviteEvent.sub_type = 'invite';
groupInviteEvent.flag = flag;