Compare commits

..

8 Commits

Author SHA1 Message Date
linyuchen
0fb30df1bc chore: version 4.3.1 2024-11-17 15:22:06 +08:00
linyuchen
62e23614fb Merge branch 'dev' 2024-11-17 15:20:45 +08:00
linyuchen
5514bf0bb8 chore: bump version 2024-11-17 15:20:22 +08:00
linyuchen
f5d093cc45 fix: 调用发包接口时检查 QQ 版本,兼容 27333 - 27597 的戳一戳 2024-11-17 15:19:48 +08:00
linyuchen
44c6debd01 Merge branch 'dev' 2024-11-16 23:03:01 +08:00
linyuchen
2c1d12e04b Merge remote-tracking branch 'origin/dev' into dev 2024-11-16 23:01:39 +08:00
linyuchen
110193ea15 fix: 调用发包接口时检查QQ版本 2024-11-16 23:01:24 +08:00
idranme
fafcf058b1 refactor 2024-11-16 19:39:14 +08:00
16 changed files with 173 additions and 4291 deletions

View File

@@ -4,7 +4,7 @@
"name": "LLOneBot",
"slug": "LLOneBot",
"description": "实现 OneBot 11 和 Satori 协议,用于 QQ 机器人开发",
"version": "4.3.0",
"version": "4.3.1",
"icon": "./icon.webp",
"authors": [
{

View File

@@ -107,8 +107,7 @@ export class NTQQFriendApi extends Service {
return ret.arkMsg
}
async setBuddyRemark(uid: string, remark?: string) {
remark = remark ?? ''
async setBuddyRemark(uid: string, remark = '') {
return await invoke('nodeIKernelBuddyService/setBuddyRemark', [{
remarkParams: { uid, remark }
}])
@@ -125,6 +124,6 @@ export class NTQQFriendApi extends Service {
}
async setBuddyCategory(uid: string, categoryId: number) {
return await invoke('nodeIKernelBuddyService/setBuddyCategory', [{uid, categoryId}])
return await invoke('nodeIKernelBuddyService/setBuddyCategory', [{ uid, categoryId }])
}
}

View File

@@ -9,7 +9,8 @@ import {
PublishGroupBulletinReq,
GroupAllInfo,
GroupFileInfo,
GroupBulletinListResult
GroupBulletinListResult,
GroupMsgMask
} from '../types'
import { invoke, NTClass, NTMethod } from '../ntcall'
import { GeneralCallResult } from '../services'
@@ -22,12 +23,6 @@ declare module 'cordis' {
}
}
export enum GroupMsgMask {
ALLOW_NOTIFY = 1, // 允许提醒
ALLOW_NOT_NOTIFY = 4, // 接受消息不提醒
BOX_NOT_NOTIFY = 2, // 收进群助手不提醒
NOT_ALLOW = 3, // 屏蔽
}
export class NTQQGroupApi extends Service {
static inject = ['ntWindowApi']
@@ -348,12 +343,11 @@ export class NTQQGroupApi extends Service {
)
}
async setGroupMsgMask(groupCode: string, msgMask: GroupMsgMask){
async setGroupMsgMask(groupCode: string, msgMask: GroupMsgMask) {
return await invoke('nodeIKernelGroupService/setGroupMsgMask', [{ groupCode, msgMask }])
}
async setGroupRemark(groupCode: string, groupRemark?: string) {
groupRemark = groupRemark ?? ''
async setGroupRemark(groupCode: string, groupRemark = '') {
return await invoke('nodeIKernelGroupService/modifyGroupRemark', [{ groupCode, groupRemark }])
}
}

View File

@@ -8,13 +8,11 @@ declare module 'cordis' {
}
export class NTQQSystemApi extends Service {
static inject = ['ntUserApi']
constructor(protected ctx: Context) {
super(ctx, 'ntSystemApi', true)
}
async restart(){
async restart() {
// todo: 调用此接口后会将 NTQQ 设置里面的自动登录和无需手机确认打开,重启后将状态恢复到之前的状态
// 设置自动登录
@@ -27,13 +25,14 @@ export class NTQQSystemApi extends Service {
// 等待登录界面,模拟点击登录按钮?还是直接调用登录方法?
}
// 是否自动登录
async getSettingAutoLogin(): Promise<boolean>{
async getSettingAutoLogin() {
// 查询是否自动登录
return invoke('nodeIKernelNodeMiscService/queryAutoRun', [])
}
async setSettingAutoLogin(state: boolean){
await invoke('nodeIKernelSettingService/setNeedConfirmSwitch', [{state: 1}]) // 1不需要手机确认2需要手机确认
await invoke('nodeIKernelSettingService/setAutoLoginSwitch', [{state}])
async setSettingAutoLogin(state: boolean) {
await invoke('nodeIKernelSettingService/setNeedConfirmSwitch', [{ state: 1 }]) // 1不需要手机确认2需要手机确认
await invoke('nodeIKernelSettingService/setAutoLoginSwitch', [{ state }])
}
}

View File

@@ -28,7 +28,7 @@ export enum ReceiveCmdS {
MEDIA_UPLOAD_COMPLETE = 'nodeIKernelMsgListener/onRichMediaUploadComplete',
}
const logHook = true
const logHook = false
const receiveHooks: Map<string, {
method: ReceiveCmdS[]

View File

@@ -1,13 +1,13 @@
import { WrapperSession } from './wrapper-session/types';
export { initWrapperSession } from './wrapper-session';
export declare function checkSupportVersion(): void;
export declare class NTQQPacketApi {
private qqVersion;
private packetSession;
private readonly packetClient;
private readonly packer;
private logger;
private readonly wrapperSession;
constructor(wrapperSession: WrapperSession);
get available(): boolean;
private checkQQVersion;
private InitSendPacket;
private sendPacket;
private sendOidbPacket;

File diff suppressed because one or more lines are too long

View File

@@ -13,7 +13,7 @@ export interface NodeIKernelBuddyService {
}[]
}>
setBuddyRemark(arg: unknown): void
setBuddyRemark(arg: unknown): Promise<GeneralCallResult>
isBuddy(uid: string): boolean

View File

@@ -12,4 +12,6 @@ export interface NodeIKernelNodeMiscService {
score: ''
}[]
}>
queryAutoRun(): Promise<boolean>
}

View File

@@ -1,10 +1,3 @@
export enum GroupListUpdateType {
REFRESHALL,
GETALL,
MODIFIED,
REMOVE
}
export interface Group {
groupCode: string
maxMember: number
@@ -188,3 +181,10 @@ export interface GroupBulletinListResult {
nextIndex: number
jointime: string
}
export enum GroupMsgMask {
AllowNotify = 1, // 允许提醒
AllowNotNotify = 4, // 接受消息不提醒
BoxNotNotify = 2, // 收进群助手不提醒
NotAllow = 3, // 屏蔽
}

View File

@@ -1,5 +1,6 @@
import { BaseAction, Schema } from '../BaseAction'
import { ActionName } from '../types'
import { getBuildVersion } from '@/common/utils'
interface Payload {
user_id: number | string
@@ -12,15 +13,12 @@ export class FriendPoke extends BaseAction<Payload, null> {
})
async _handle(payload: Payload) {
// if (!this.ctx.app.native.checkPlatform()) {
// throw new Error('当前系统平台或架构不支持')
// }
// if (!this.ctx.app.native.checkVersion()) {
// throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27333—27597`)
// }
// await this.ctx.app.native.sendFriendPoke(+payload.user_id)
await this.ctx.app.packet.sendPokePacket(+payload.user_id)
if (!this.ctx.app.native.checkPlatform() || !this.ctx.app.native.checkVersion()) {
await this.ctx.app.packet.sendPokePacket(+payload.user_id)
}
else{
await this.ctx.app.native.sendFriendPoke(+payload.user_id)
}
return null
}
}

View File

@@ -1,5 +1,6 @@
import { BaseAction, Schema } from '../BaseAction'
import { ActionName } from '../types'
import { getBuildVersion } from '@/common/utils'
interface Payload {
group_id: number | string
@@ -14,14 +15,12 @@ export class GroupPoke extends BaseAction<Payload, null> {
})
async _handle(payload: Payload) {
// if (!this.ctx.app.native.checkPlatform()) {
// throw new Error('当前系统平台或架构不支持')
// }
// if (!this.ctx.app.native.checkVersion()) {
// throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27333—27597`)
// }
// await this.ctx.app.native.sendGroupPoke(+payload.group_id, +payload.user_id)
await this.ctx.app.packet.sendPokePacket(+payload.user_id, +payload.group_id)
if (!this.ctx.app.native.checkPlatform() || !this.ctx.app.native.checkVersion()) {
await this.ctx.app.packet.sendPokePacket(+payload.user_id, +payload.group_id)
}
else{
await this.ctx.app.native.sendGroupPoke(+payload.group_id, +payload.user_id)
}
return null
}
}

View File

@@ -1,15 +1,19 @@
import { BaseAction } from '../BaseAction'
import { BaseAction, Schema } from '../BaseAction'
import { ActionName } from '../types'
interface Payload {
user_id: string,
category_id: number
user_id: number | string
category_id: number | string
}
export class SetFriendCategory extends BaseAction<Payload, null> {
export class SetFriendCategory extends BaseAction<Payload, unknown> {
actionName = ActionName.SetFriendCategory
payloadSchema = Schema.object({
user_id: Schema.union([Number, String]).required(),
category_id: Schema.union([Number, String]).required()
})
protected async _handle(payload: Payload): Promise<null> {
protected async _handle(payload: Payload) {
const uid = await this.ctx.ntUserApi.getUidByUin(payload.user_id.toString())
if (!uid) throw new Error('无法获取好友信息')
return this.ctx.ntFriendApi.setBuddyCategory(uid, +payload.category_id)

View File

@@ -1,15 +1,19 @@
import { BaseAction } from '../BaseAction'
import { BaseAction, Schema } from '../BaseAction'
import { ActionName } from '../types'
interface Payload {
user_id: string,
user_id: number | string
remark?: string
}
export class SetFriendRemark extends BaseAction<Payload, null> {
export class SetFriendRemark extends BaseAction<Payload, unknown> {
actionName = ActionName.SetFriendRemark
payloadSchema = Schema.object({
user_id: Schema.union([Number, String]).required(),
remark: Schema.string()
})
protected async _handle(payload: Payload): Promise<null> {
protected async _handle(payload: Payload) {
const uid = await this.ctx.ntUserApi.getUidByUin(payload.user_id.toString())
if (!uid) throw new Error('无法获取好友信息')
return this.ctx.ntFriendApi.setBuddyRemark(uid, payload.remark || '')

View File

@@ -1,16 +1,19 @@
import { BaseAction } from '../BaseAction'
import { BaseAction, Schema } from '../BaseAction'
import { ActionName } from '../types'
import { GroupMsgMask } from '@/ntqqapi/api'
interface Payload {
group_id: string,
mask: GroupMsgMask
group_id: number | string
mask: number | string // 1, 2, 3, 4
}
export class SetGroupMsgMask extends BaseAction<Payload, unknown> {
actionName = ActionName.SetGroupMsgMask
payloadSchema = Schema.object({
group_id: Schema.union([Number, String]).required(),
mask: Schema.union([Number, String]).required()
})
protected async _handle(payload: Payload): Promise<unknown>{
protected async _handle(payload: Payload) {
return this.ctx.ntGroupApi.setGroupMsgMask(payload.group_id.toString(), +payload.mask)
}
}

View File

@@ -1 +1 @@
export const version = '4.3.0'
export const version = '4.3.1'