mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
feat(onebot): delete_friend
API
This commit is contained in:
parent
c82b849ead
commit
fecb4c4655
@ -62,9 +62,10 @@ class Store extends Service {
|
||||
}
|
||||
|
||||
createMsgShortId(peer: Peer, msgId: string): number {
|
||||
// OneBot 11 要求 message_id 为 int32
|
||||
const cacheKey = `${msgId}|${peer.chatType}|${peer.peerUid}`
|
||||
const hash = createHash('md5').update(cacheKey).digest()
|
||||
hash[0] &= 0x7f //设置第一个bit为0 保证shortId为正数
|
||||
hash[0] &= 0x7f //保证shortId为正数
|
||||
const shortId = hash.readInt32BE()
|
||||
this.cache.set(cacheKey, shortId)
|
||||
this.ctx.database.upsert('message', [{
|
||||
|
@ -16,7 +16,7 @@ import path from 'node:path'
|
||||
import { existsSync } from 'node:fs'
|
||||
import { ReceiveCmdS } from '../hook'
|
||||
import { RkeyManager } from '@/ntqqapi/helper/rkey'
|
||||
import { OnRichMediaDownloadCompleteParams, Peer } from '@/ntqqapi/types/msg'
|
||||
import { RichMediaDownloadCompleteNotify, Peer } from '@/ntqqapi/types/msg'
|
||||
import { calculateFileMD5 } from '@/common/utils/file'
|
||||
import { copyFile, stat, unlink } from 'node:fs/promises'
|
||||
import { Time } from 'cosmokit'
|
||||
@ -113,7 +113,7 @@ export class NTQQFileApi extends Service {
|
||||
return sourcePath
|
||||
}
|
||||
}
|
||||
const data = await invoke<{ notifyInfo: OnRichMediaDownloadCompleteParams }>(
|
||||
const data = await invoke<{ notifyInfo: RichMediaDownloadCompleteNotify }>(
|
||||
'nodeIKernelMsgService/downloadRichMedia',
|
||||
[{
|
||||
getReq: {
|
||||
@ -185,7 +185,7 @@ export class NTQQFileApi extends Service {
|
||||
}
|
||||
|
||||
async downloadFileForModelId(peer: Peer, fileModelId: string, timeout = 2 * Time.minute) {
|
||||
const data = await invoke<{ notifyInfo: OnRichMediaDownloadCompleteParams }>(
|
||||
const data = await invoke<{ notifyInfo: RichMediaDownloadCompleteNotify }>(
|
||||
'nodeIKernelRichMediaService/downloadFileForModelId',
|
||||
[{
|
||||
peer,
|
||||
|
@ -116,4 +116,14 @@ export class NTQQFriendApi extends Service {
|
||||
remarkParams: { uid, remark }
|
||||
}])
|
||||
}
|
||||
|
||||
async delBuddy(friendUid: string) {
|
||||
return await invoke('nodeIKernelBuddyService/delBuddy', [{
|
||||
delInfo: {
|
||||
friendUid,
|
||||
tempBlock: false,
|
||||
tempBothDel: true
|
||||
}
|
||||
}])
|
||||
}
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ export class NTQQMsgApi extends Service {
|
||||
}
|
||||
|
||||
async activateChatAndGetHistory(peer: Peer, cnt: number) {
|
||||
// 消息从旧到新
|
||||
return await invoke(NTMethod.ACTIVE_CHAT_HISTORY, [{ peer, cnt, msgId: '0', queryOrder: true }])
|
||||
}
|
||||
|
||||
|
@ -476,7 +476,7 @@ export interface MessageElement {
|
||||
actionBarElement?: unknown
|
||||
}
|
||||
|
||||
export interface OnRichMediaDownloadCompleteParams {
|
||||
export interface RichMediaDownloadCompleteNotify {
|
||||
fileModelId: string
|
||||
msgElementId: string
|
||||
msgId: string
|
||||
|
21
src/onebot11/action/go-cqhttp/DeleteFriend.ts
Normal file
21
src/onebot11/action/go-cqhttp/DeleteFriend.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { BaseAction, Schema } from '../BaseAction'
|
||||
import { ActionName } from '../types'
|
||||
|
||||
interface Payload {
|
||||
user_id: number | string
|
||||
}
|
||||
|
||||
export class DeleteFriend extends BaseAction<Payload, null> {
|
||||
actionName = ActionName.GoCQHTTP_DeleteFriend
|
||||
payloadSchema = Schema.object({
|
||||
user_id: Schema.union([Number, String]).required()
|
||||
})
|
||||
|
||||
protected async _handle(payload: Payload) {
|
||||
const uin = payload.user_id.toString()
|
||||
const uid = await this.ctx.ntUserApi.getUidByUin(uin)
|
||||
if (!uid) throw new Error('无法获取用户信息')
|
||||
await this.ctx.ntFriendApi.delBuddy(uid)
|
||||
return null
|
||||
}
|
||||
}
|
@ -72,6 +72,7 @@ import { UploadPrivateFile } from './go-cqhttp/UploadPrivateFile'
|
||||
import { GetGroupFileUrl } from './go-cqhttp/GetGroupFileUrl'
|
||||
import { GetGroupNotice } from './go-cqhttp/GetGroupNotice'
|
||||
import { GetRobotUinRange } from './llonebot/GetRobotUinRange'
|
||||
import { DeleteFriend } from './go-cqhttp/DeleteFriend'
|
||||
|
||||
export function initActionMap(adapter: Adapter) {
|
||||
const actionHandlers = [
|
||||
@ -149,6 +150,7 @@ export function initActionMap(adapter: Adapter) {
|
||||
new GetGroupFilesByFolder(adapter),
|
||||
new GetGroupFileUrl(adapter),
|
||||
new GetGroupNotice(adapter),
|
||||
new DeleteFriend(adapter),
|
||||
]
|
||||
const actionMap = new Map<string, BaseAction<any, unknown>>()
|
||||
for (const action of actionHandlers) {
|
||||
|
@ -85,4 +85,5 @@ export enum ActionName {
|
||||
GoCQHTTP_GetGroupFilesByFolder = 'get_group_files_by_folder',
|
||||
GoCQHTTP_GetGroupFileUrl = 'get_group_file_url',
|
||||
GoCQHTTP_GetGroupNotice = '_get_group_notice',
|
||||
GoCQHTTP_DeleteFriend = 'delete_friend',
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user