mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0d27ef7ebc |
@@ -39,7 +39,6 @@ const config: ElectronViteConfig = {
|
||||
...external.map(genCpModule),
|
||||
{ src: './manifest.json', dest: 'dist' },
|
||||
{ src: './icon.webp', dest: 'dist' },
|
||||
{ src: './src/ntqqapi/native/napcat-protocol-packet/Moehoo/*', dest: 'dist/main/Moehoo' },
|
||||
],
|
||||
}),
|
||||
],
|
||||
|
@@ -4,16 +4,12 @@
|
||||
"name": "LLOneBot",
|
||||
"slug": "LLOneBot",
|
||||
"description": "实现 OneBot 11 和 Satori 协议,用于 QQ 机器人开发",
|
||||
"version": "4.2.0",
|
||||
"version": "4.1.4",
|
||||
"icon": "./icon.webp",
|
||||
"authors": [
|
||||
{
|
||||
"name": "linyuchen",
|
||||
"link": "https://github.com/linyuchen"
|
||||
},
|
||||
{
|
||||
"name": "idranme",
|
||||
"link": "https://github.com/idranme"
|
||||
}
|
||||
],
|
||||
"repository": {
|
||||
|
@@ -13,10 +13,6 @@ const manifest = {
|
||||
{
|
||||
name: 'linyuchen',
|
||||
link: 'https://github.com/linyuchen'
|
||||
},
|
||||
{
|
||||
"name": "idranme",
|
||||
"link": "https://github.com/idranme"
|
||||
}
|
||||
],
|
||||
repository: {
|
||||
|
@@ -27,10 +27,9 @@ export function checkFileReceived(path: string, timeout: number = 3000): Promise
|
||||
|
||||
export function calculateFileMD5(filePath: string): Promise<string> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const hash = createHash('md5')
|
||||
|
||||
// 创建一个流式读取器
|
||||
const stream = fs.createReadStream(filePath)
|
||||
const hash = createHash('md5')
|
||||
|
||||
stream.on('data', (data: Buffer) => {
|
||||
// 当读取到数据时,更新哈希对象的状态
|
||||
|
@@ -36,9 +36,6 @@ import {
|
||||
} from '../ntqqapi/api'
|
||||
import { existsSync, mkdirSync } from 'node:fs'
|
||||
|
||||
import { initWrapperSession} from '@/ntqqapi/native/napcat-protocol-packet'
|
||||
initWrapperSession().then()
|
||||
|
||||
declare module 'cordis' {
|
||||
interface Events {
|
||||
'llob/config-updated': (input: LLOBConfig) => void
|
||||
|
@@ -19,8 +19,7 @@ import {
|
||||
import { selfInfo } from '../common/globalVars'
|
||||
import { version } from '../version'
|
||||
import { invoke } from './ntcall'
|
||||
import { Native } from './native/crychic'
|
||||
import { initWrapperSession, NTQQPacketApi } from './native/napcat-protocol-packet'
|
||||
import { Native } from './native/index'
|
||||
|
||||
declare module 'cordis' {
|
||||
interface Context {
|
||||
@@ -41,12 +40,10 @@ class Core extends Service {
|
||||
static inject = ['ntMsgApi', 'ntFriendApi', 'ntGroupApi', 'store']
|
||||
public startTime = 0
|
||||
public native
|
||||
public ntqqPacketApi: NTQQPacketApi
|
||||
|
||||
constructor(protected ctx: Context, public config: Core.Config) {
|
||||
super(ctx, 'app', true)
|
||||
this.native = new Native(ctx)
|
||||
initWrapperSession().then(session=>{this.ntqqPacketApi = new NTQQPacketApi(session)})
|
||||
}
|
||||
|
||||
public start() {
|
||||
|
@@ -1,9 +1,9 @@
|
||||
import { Context } from 'cordis'
|
||||
import { Dict } from 'cosmokit'
|
||||
import { getBuildVersion } from '../../../common/utils/misc'
|
||||
import { TEMP_DIR } from '../../../common/globalVars'
|
||||
import { getBuildVersion } from '@/common/utils/misc'
|
||||
import { TEMP_DIR } from '@/common/globalVars'
|
||||
import { copyFile } from 'fs/promises'
|
||||
import { ChatType, Peer } from '../../types'
|
||||
import { ChatType, Peer } from '../types'
|
||||
import path from 'node:path'
|
||||
import addon from './external/crychic-win32-x64.node?asset'
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,17 +0,0 @@
|
||||
import { WrapperSession } from './wrapper-session/types';
|
||||
export { initWrapperSession } from './wrapper-session';
|
||||
export declare class NTQQPacketApi {
|
||||
private qqVersion;
|
||||
private packetSession;
|
||||
private logger;
|
||||
private readonly wrapperSession;
|
||||
constructor(wrapperSession: WrapperSession);
|
||||
get available(): boolean;
|
||||
private checkQQVersion;
|
||||
private InitSendPacket;
|
||||
private sendPacket;
|
||||
private sendOidbPacket;
|
||||
sendPokePacket(peer: number, group?: number): Promise<void>;
|
||||
sendGroupSignPacket(selfUin: string, groupCode: string): Promise<void>;
|
||||
sendSetSpecialTittlePacket(groupCode: string, uid: string, tittle: string): Promise<void>;
|
||||
}
|
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
export declare function initWrapperSession(): Promise<any>;
|
@@ -1,6 +0,0 @@
|
||||
export interface MsgService {
|
||||
sendSsoCmdReqByContend: (cmd: string, trace_id: string) => Promise<unknown>;
|
||||
}
|
||||
export type WrapperSession = {
|
||||
getMsgService(): MsgService;
|
||||
};
|
@@ -12,7 +12,6 @@ interface Payload {
|
||||
interface Response extends OB11User {
|
||||
reg_time: number
|
||||
long_nick: string
|
||||
city: string
|
||||
}
|
||||
|
||||
export class GetStrangerInfo extends BaseAction<Payload, Response> {
|
||||
@@ -34,8 +33,7 @@ export class GetStrangerInfo extends BaseAction<Payload, Response> {
|
||||
level: data.detail.commonExt.qqLevel && calcQQLevel(data.detail.commonExt.qqLevel) || 0,
|
||||
login_days: 0,
|
||||
reg_time: data.detail.commonExt.regTime,
|
||||
long_nick: data.detail.simpleInfo.baseInfo.longNick,
|
||||
city: data.detail.commonExt.city
|
||||
long_nick: data.detail.simpleInfo.baseInfo.longNick
|
||||
}
|
||||
} else {
|
||||
const data = await this.ctx.ntUserApi.getUserDetailInfoByUin(uin)
|
||||
@@ -48,8 +46,7 @@ export class GetStrangerInfo extends BaseAction<Payload, Response> {
|
||||
level: data.info.qqLevel && calcQQLevel(data.info.qqLevel) || 0,
|
||||
login_days: 0,
|
||||
reg_time: data.info.regTime,
|
||||
long_nick: data.info.longNick,
|
||||
city: data.info.city
|
||||
long_nick: data.info.longNick
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,20 +0,0 @@
|
||||
import { BaseAction, Schema } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { getBuildVersion } from '@/common/utils/misc'
|
||||
import { selfInfo } from '@/common/globalVars'
|
||||
|
||||
interface Payload {
|
||||
group_id: number | string
|
||||
}
|
||||
|
||||
export class SendGroupSign extends BaseAction<Payload, null> {
|
||||
actionName = ActionName.GoCQHTTP_SendGroupSign
|
||||
payloadSchema = Schema.object({
|
||||
group_id: Schema.union([Number, String]).required(),
|
||||
})
|
||||
|
||||
async _handle(payload: Payload) {
|
||||
await this.ctx.app.ntqqPacketApi.sendGroupSignPacket(selfInfo.uin, payload.group_id.toString())
|
||||
return null
|
||||
}
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
import { BaseAction, Schema } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { getBuildVersion } from '@/common/utils/misc'
|
||||
import { selfInfo } from '@/common/globalVars'
|
||||
import { GroupMemberRole } from '@/ntqqapi/types'
|
||||
|
||||
interface Payload {
|
||||
group_id: number | string
|
||||
user_id: number | string
|
||||
special_title?: string
|
||||
}
|
||||
|
||||
export class SetGroupSpecialTitle extends BaseAction<Payload, null> {
|
||||
actionName = ActionName.GoCQHTTP_SetGroupSpecialTitle
|
||||
payloadSchema = Schema.object({
|
||||
group_id: Schema.union([Number, String]).required(),
|
||||
user_id: Schema.union([Number, String]).required(),
|
||||
special_title: Schema.string()
|
||||
})
|
||||
|
||||
async _handle(payload: Payload) {
|
||||
const uid = await this.ctx.ntUserApi.getUidByUin(payload.user_id.toString(), payload.group_id.toString())
|
||||
if (!uid) throw new Error(`用户${payload.user_id}的uid获取失败`)
|
||||
const self = await this.ctx.ntGroupApi.getGroupMember(payload.group_id.toString(), selfInfo.uid, false)
|
||||
if (self.role !== GroupMemberRole.Owner){
|
||||
throw new Error(`不是群${payload.group_id}的群主,无法设置群头衔`)
|
||||
}
|
||||
await this.ctx.app.ntqqPacketApi.sendSetSpecialTittlePacket(payload.group_id.toString(), uid, payload.special_title || "")
|
||||
return null
|
||||
}
|
||||
}
|
@@ -78,8 +78,6 @@ import { GroupPoke } from './llonebot/GroupPoke'
|
||||
import { FriendPoke } from './llonebot/FriendPoke'
|
||||
import { GetGroupFileSystemInfo } from './go-cqhttp/GetGroupFileSystemInfo'
|
||||
import { GetCredentials } from './system/GetCredentials'
|
||||
import { SetGroupSpecialTitle } from '@/onebot11/action/go-cqhttp/SetGroupSpecialTitle'
|
||||
import { SendGroupSign } from '@/onebot11/action/go-cqhttp/SendGroupSign'
|
||||
|
||||
export function initActionMap(adapter: Adapter) {
|
||||
const actionHandlers = [
|
||||
@@ -163,8 +161,6 @@ export function initActionMap(adapter: Adapter) {
|
||||
new DeleteFriend(adapter),
|
||||
new OCRImage(adapter),
|
||||
new GetGroupFileSystemInfo(adapter),
|
||||
new SetGroupSpecialTitle(adapter),
|
||||
new SendGroupSign(adapter),
|
||||
]
|
||||
const actionMap = new Map()
|
||||
for (const action of actionHandlers) {
|
||||
|
@@ -13,15 +13,13 @@ 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.ntqqPacketApi.sendPokePacket(+payload.user_id)
|
||||
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)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,6 @@
|
||||
import { BaseAction, Schema } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
import { getBuildVersion } from '@/common/utils/misc'
|
||||
import {NTQQPacketApi} from '@/ntqqapi/native/napcat-protocol-packet'
|
||||
|
||||
interface Payload {
|
||||
group_id: number | string
|
||||
@@ -16,14 +15,13 @@ 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.ntqqPacketApi.sendPokePacket(+payload.user_id, +payload.group_id)
|
||||
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)
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
@@ -91,6 +91,4 @@ export enum ActionName {
|
||||
GoCQHTTP_DeleteFriend = 'delete_friend',
|
||||
GoCQHTTP_OCRImage = 'ocr_image',
|
||||
GoCQHTTP_GetGroupFileSystemInfo = 'get_group_file_system_info',
|
||||
GoCQHTTP_SetGroupSpecialTitle = 'set_group_special_title',
|
||||
GoCQHTTP_SendGroupSign = 'send_group_sign',
|
||||
}
|
||||
|
@@ -1 +1 @@
|
||||
export const version = '4.2.0'
|
||||
export const version = '4.1.4'
|
||||
|
Reference in New Issue
Block a user