mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
Compare commits
57 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9453b71943 | ||
![]() |
0fb30df1bc | ||
![]() |
62e23614fb | ||
![]() |
5514bf0bb8 | ||
![]() |
f5d093cc45 | ||
![]() |
44c6debd01 | ||
![]() |
2c1d12e04b | ||
![]() |
110193ea15 | ||
![]() |
fafcf058b1 | ||
![]() |
825c7c8e29 | ||
![]() |
c8d5eebe5d | ||
![]() |
466a3e4d66 | ||
![]() |
56f26e9aa8 | ||
![]() |
9e03071629 | ||
![]() |
4a2523463b | ||
![]() |
a23a99310a | ||
![]() |
0d27ef7ebc | ||
![]() |
e3dffa24f8 | ||
![]() |
edf7a97269 | ||
![]() |
66335ddf9b | ||
![]() |
70b3005005 | ||
![]() |
ac5fe4d275 | ||
![]() |
4aadcd5288 | ||
![]() |
2f74de667e | ||
![]() |
8b89fd7a0b | ||
![]() |
8239e9a243 | ||
![]() |
951afea794 | ||
![]() |
a4beeba528 | ||
![]() |
9b32140f87 | ||
![]() |
e10a67ce05 | ||
![]() |
e07c06f3e9 | ||
![]() |
0d8d3ac24f | ||
![]() |
9d0f9e7096 | ||
![]() |
e988908784 | ||
![]() |
b40c81c5cb | ||
![]() |
457ffc0922 | ||
![]() |
41822eb052 | ||
![]() |
0bc6e23343 | ||
![]() |
9ec09c6eee | ||
![]() |
0876e4645f | ||
![]() |
36d990e328 | ||
![]() |
d5875c9e5b | ||
![]() |
a58fb31f8e | ||
![]() |
f9270c38cf | ||
![]() |
e5ab6134cd | ||
![]() |
24f09d485e | ||
![]() |
f400d43b8a | ||
![]() |
1c6364d98f | ||
![]() |
ac07c98ae1 | ||
![]() |
6c66dab3dc | ||
![]() |
936b1d911c | ||
![]() |
1876dd29ac | ||
![]() |
64c5eb6c04 | ||
![]() |
476d498e44 | ||
![]() |
b03bcf9a7c | ||
![]() |
9284fc7e8a | ||
![]() |
1d63473a04 |
@@ -23,6 +23,10 @@ TG 群:<https://t.me/+nLZEnpne-pQ1OWFl>
|
|||||||
|
|
||||||
[](https://starchart.cc/LLOneBot/LLOneBot)
|
[](https://starchart.cc/LLOneBot/LLOneBot)
|
||||||
|
|
||||||
|
## 贡献者
|
||||||
|
|
||||||
|
[](https://github.com/LOneBot/LLOneBot/graphs/contributors)
|
||||||
|
|
||||||
## 鸣谢
|
## 鸣谢
|
||||||
|
|
||||||
- [NapCatQQ](https://github.com/NapNeko/NapCatQQ)
|
- [NapCatQQ](https://github.com/NapNeko/NapCatQQ)
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"name": "LLOneBot",
|
"name": "LLOneBot",
|
||||||
"slug": "LLOneBot",
|
"slug": "LLOneBot",
|
||||||
"description": "实现 OneBot 11 和 Satori 协议,用于 QQ 机器人开发",
|
"description": "实现 OneBot 11 和 Satori 协议,用于 QQ 机器人开发",
|
||||||
"version": "4.2.2",
|
"version": "4.3.1",
|
||||||
"icon": "./icon.webp",
|
"icon": "./icon.webp",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
|
@@ -35,6 +35,7 @@ import {
|
|||||||
NTQQWindowApi
|
NTQQWindowApi
|
||||||
} from '../ntqqapi/api'
|
} from '../ntqqapi/api'
|
||||||
import { existsSync, mkdirSync } from 'node:fs'
|
import { existsSync, mkdirSync } from 'node:fs'
|
||||||
|
import { NTQQSystemApi } from '@/ntqqapi/api/system'
|
||||||
|
|
||||||
declare module 'cordis' {
|
declare module 'cordis' {
|
||||||
interface Events {
|
interface Events {
|
||||||
@@ -74,6 +75,7 @@ function onLoad() {
|
|||||||
ctx.plugin(NTQQWebApi)
|
ctx.plugin(NTQQWebApi)
|
||||||
ctx.plugin(NTQQWindowApi)
|
ctx.plugin(NTQQWindowApi)
|
||||||
ctx.plugin(Database)
|
ctx.plugin(Database)
|
||||||
|
ctx.plugin(NTQQSystemApi)
|
||||||
|
|
||||||
let started = false
|
let started = false
|
||||||
|
|
||||||
|
@@ -107,7 +107,7 @@ export class NTQQFriendApi extends Service {
|
|||||||
return ret.arkMsg
|
return ret.arkMsg
|
||||||
}
|
}
|
||||||
|
|
||||||
async setBuddyRemark(uid: string, remark: string) {
|
async setBuddyRemark(uid: string, remark = '') {
|
||||||
return await invoke('nodeIKernelBuddyService/setBuddyRemark', [{
|
return await invoke('nodeIKernelBuddyService/setBuddyRemark', [{
|
||||||
remarkParams: { uid, remark }
|
remarkParams: { uid, remark }
|
||||||
}])
|
}])
|
||||||
@@ -122,4 +122,8 @@ export class NTQQFriendApi extends Service {
|
|||||||
}
|
}
|
||||||
}])
|
}])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async setBuddyCategory(uid: string, categoryId: number) {
|
||||||
|
return await invoke('nodeIKernelBuddyService/setBuddyCategory', [{ uid, categoryId }])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,7 +9,8 @@ import {
|
|||||||
PublishGroupBulletinReq,
|
PublishGroupBulletinReq,
|
||||||
GroupAllInfo,
|
GroupAllInfo,
|
||||||
GroupFileInfo,
|
GroupFileInfo,
|
||||||
GroupBulletinListResult
|
GroupBulletinListResult,
|
||||||
|
GroupMsgMask
|
||||||
} from '../types'
|
} from '../types'
|
||||||
import { invoke, NTClass, NTMethod } from '../ntcall'
|
import { invoke, NTClass, NTMethod } from '../ntcall'
|
||||||
import { GeneralCallResult } from '../services'
|
import { GeneralCallResult } from '../services'
|
||||||
@@ -341,4 +342,12 @@ export class NTQQGroupApi extends Service {
|
|||||||
[{ groupId }]
|
[{ groupId }]
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async setGroupMsgMask(groupCode: string, msgMask: GroupMsgMask) {
|
||||||
|
return await invoke('nodeIKernelGroupService/setGroupMsgMask', [{ groupCode, msgMask }])
|
||||||
|
}
|
||||||
|
|
||||||
|
async setGroupRemark(groupCode: string, groupRemark = '') {
|
||||||
|
return await invoke('nodeIKernelGroupService/modifyGroupRemark', [{ groupCode, groupRemark }])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
38
src/ntqqapi/api/system.ts
Normal file
38
src/ntqqapi/api/system.ts
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
import { Context, Service } from 'cordis'
|
||||||
|
import { invoke, NTClass } from '@/ntqqapi/ntcall'
|
||||||
|
|
||||||
|
declare module 'cordis' {
|
||||||
|
interface Context {
|
||||||
|
ntSystemApi: NTQQSystemApi
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class NTQQSystemApi extends Service {
|
||||||
|
constructor(protected ctx: Context) {
|
||||||
|
super(ctx, 'ntSystemApi', true)
|
||||||
|
}
|
||||||
|
|
||||||
|
async restart() {
|
||||||
|
// todo: 调用此接口后会将 NTQQ 设置里面的自动登录和无需手机确认打开,重启后将状态恢复到之前的状态
|
||||||
|
|
||||||
|
// 设置自动登录
|
||||||
|
await this.setSettingAutoLogin(true)
|
||||||
|
// 退出账号
|
||||||
|
invoke('quitAccount', [], {
|
||||||
|
className: NTClass.BUSINESS_API
|
||||||
|
}).then()
|
||||||
|
invoke('notifyQQClose', [{ type: 1 }], { className: NTClass.QQ_EX_API }).then()
|
||||||
|
// 等待登录界面,模拟点击登录按钮?还是直接调用登录方法?
|
||||||
|
}
|
||||||
|
|
||||||
|
async getSettingAutoLogin() {
|
||||||
|
// 查询是否自动登录
|
||||||
|
return invoke('nodeIKernelNodeMiscService/queryAutoRun', [])
|
||||||
|
}
|
||||||
|
|
||||||
|
async setSettingAutoLogin(state: boolean) {
|
||||||
|
await invoke('nodeIKernelSettingService/setNeedConfirmSwitch', [{ state: 1 }]) // 1:不需要手机确认,2:需要手机确认
|
||||||
|
|
||||||
|
await invoke('nodeIKernelSettingService/setAutoLoginSwitch', [{ state }])
|
||||||
|
}
|
||||||
|
}
|
@@ -20,7 +20,6 @@ import { selfInfo } from '../common/globalVars'
|
|||||||
import { version } from '../version'
|
import { version } from '../version'
|
||||||
import { invoke } from './ntcall'
|
import { invoke } from './ntcall'
|
||||||
import { Native } from './native/crychic'
|
import { Native } from './native/crychic'
|
||||||
import { initWrapperSession, NTQQPacketApi } from './native/napcat-protocol-packet'
|
|
||||||
|
|
||||||
declare module 'cordis' {
|
declare module 'cordis' {
|
||||||
interface Context {
|
interface Context {
|
||||||
@@ -41,14 +40,10 @@ class Core extends Service {
|
|||||||
static inject = ['ntMsgApi', 'ntFriendApi', 'ntGroupApi', 'store']
|
static inject = ['ntMsgApi', 'ntFriendApi', 'ntGroupApi', 'store']
|
||||||
public startTime = 0
|
public startTime = 0
|
||||||
public native
|
public native
|
||||||
public packet!: NTQQPacketApi
|
|
||||||
|
|
||||||
constructor(protected ctx: Context, public config: Core.Config) {
|
constructor(protected ctx: Context, public config: Core.Config) {
|
||||||
super(ctx, 'app', true)
|
super(ctx, 'app', true)
|
||||||
this.native = new Native(ctx)
|
this.native = new Native(ctx)
|
||||||
initWrapperSession().then(session => {
|
|
||||||
this.packet = new NTQQPacketApi(session)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public start() {
|
public start() {
|
||||||
|
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;
|
|
||||||
};
|
|
@@ -29,7 +29,8 @@ export enum NTClass {
|
|||||||
SKEY_API = 'ns-SkeyApi',
|
SKEY_API = 'ns-SkeyApi',
|
||||||
GROUP_HOME_WORK = 'ns-GroupHomeWork',
|
GROUP_HOME_WORK = 'ns-GroupHomeWork',
|
||||||
GROUP_ESSENCE = 'ns-GroupEssence',
|
GROUP_ESSENCE = 'ns-GroupEssence',
|
||||||
NODE_STORE_API = 'ns-NodeStoreApi'
|
NODE_STORE_API = 'ns-NodeStoreApi',
|
||||||
|
QQ_EX_API = 'ns-QQEXApi',
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum NTMethod {
|
export enum NTMethod {
|
||||||
|
@@ -13,7 +13,7 @@ export interface NodeIKernelBuddyService {
|
|||||||
}[]
|
}[]
|
||||||
}>
|
}>
|
||||||
|
|
||||||
setBuddyRemark(arg: unknown): void
|
setBuddyRemark(arg: unknown): Promise<GeneralCallResult>
|
||||||
|
|
||||||
isBuddy(uid: string): boolean
|
isBuddy(uid: string): boolean
|
||||||
|
|
||||||
|
@@ -12,4 +12,6 @@ export interface NodeIKernelNodeMiscService {
|
|||||||
score: ''
|
score: ''
|
||||||
}[]
|
}[]
|
||||||
}>
|
}>
|
||||||
|
|
||||||
|
queryAutoRun(): Promise<boolean>
|
||||||
}
|
}
|
||||||
|
@@ -1,10 +1,3 @@
|
|||||||
export enum GroupListUpdateType {
|
|
||||||
REFRESHALL,
|
|
||||||
GETALL,
|
|
||||||
MODIFIED,
|
|
||||||
REMOVE
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Group {
|
export interface Group {
|
||||||
groupCode: string
|
groupCode: string
|
||||||
maxMember: number
|
maxMember: number
|
||||||
@@ -188,3 +181,10 @@ export interface GroupBulletinListResult {
|
|||||||
nextIndex: number
|
nextIndex: number
|
||||||
jointime: string
|
jointime: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export enum GroupMsgMask {
|
||||||
|
AllowNotify = 1, // 允许提醒
|
||||||
|
AllowNotNotify = 4, // 接受消息不提醒
|
||||||
|
BoxNotNotify = 2, // 收进群助手不提醒
|
||||||
|
NotAllow = 3, // 屏蔽
|
||||||
|
}
|
||||||
|
@@ -13,7 +13,7 @@ export class SendGroupSign extends BaseAction<Payload, null> {
|
|||||||
})
|
})
|
||||||
|
|
||||||
async _handle(payload: Payload) {
|
async _handle(payload: Payload) {
|
||||||
await this.ctx.app.packet.sendGroupSignPacket(selfInfo.uin, payload.group_id.toString())
|
throw new Error('暂未实现群签到功能')
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,7 +24,7 @@ export class SetGroupSpecialTitle extends BaseAction<Payload, null> {
|
|||||||
if (self.role !== GroupMemberRole.Owner){
|
if (self.role !== GroupMemberRole.Owner){
|
||||||
throw new Error(`不是群${payload.group_id}的群主,无法设置群头衔`)
|
throw new Error(`不是群${payload.group_id}的群主,无法设置群头衔`)
|
||||||
}
|
}
|
||||||
await this.ctx.app.packet.sendSetSpecialTittlePacket(payload.group_id.toString(), uid, payload.special_title || "")
|
throw new Error('暂未实现设置群头衔功能')
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -80,6 +80,11 @@ import { GetGroupFileSystemInfo } from './go-cqhttp/GetGroupFileSystemInfo'
|
|||||||
import { GetCredentials } from './system/GetCredentials'
|
import { GetCredentials } from './system/GetCredentials'
|
||||||
import { SetGroupSpecialTitle } from '@/onebot11/action/go-cqhttp/SetGroupSpecialTitle'
|
import { SetGroupSpecialTitle } from '@/onebot11/action/go-cqhttp/SetGroupSpecialTitle'
|
||||||
import { SendGroupSign } from '@/onebot11/action/go-cqhttp/SendGroupSign'
|
import { SendGroupSign } from '@/onebot11/action/go-cqhttp/SendGroupSign'
|
||||||
|
import { SetRestart } from '@/onebot11/action/system/SetRestart'
|
||||||
|
import { SetFriendCategory } from '@/onebot11/action/llonebot/SetFriendCategory'
|
||||||
|
import { SetFriendRemark } from '@/onebot11/action/llonebot/SetFriendRemark'
|
||||||
|
import { SetGroupMsgMask } from '@/onebot11/action/llonebot/SetGroupMsgMask'
|
||||||
|
import { SetGroupRemark } from '@/onebot11/action/llonebot/SetGroupRemark'
|
||||||
|
|
||||||
export function initActionMap(adapter: Adapter) {
|
export function initActionMap(adapter: Adapter) {
|
||||||
const actionHandlers = [
|
const actionHandlers = [
|
||||||
@@ -100,6 +105,10 @@ export function initActionMap(adapter: Adapter) {
|
|||||||
new GetRobotUinRange(adapter),
|
new GetRobotUinRange(adapter),
|
||||||
new GroupPoke(adapter),
|
new GroupPoke(adapter),
|
||||||
new FriendPoke(adapter),
|
new FriendPoke(adapter),
|
||||||
|
new SetFriendCategory(adapter),
|
||||||
|
new SetFriendRemark(adapter),
|
||||||
|
new SetGroupMsgMask(adapter),
|
||||||
|
new SetGroupRemark(adapter),
|
||||||
// onebot11
|
// onebot11
|
||||||
new SendLike(adapter),
|
new SendLike(adapter),
|
||||||
new GetMsg(adapter),
|
new GetMsg(adapter),
|
||||||
@@ -133,6 +142,7 @@ export function initActionMap(adapter: Adapter) {
|
|||||||
new ForwardFriendSingleMsg(adapter),
|
new ForwardFriendSingleMsg(adapter),
|
||||||
new ForwardGroupSingleMsg(adapter),
|
new ForwardGroupSingleMsg(adapter),
|
||||||
new GetCredentials(adapter),
|
new GetCredentials(adapter),
|
||||||
|
new SetRestart(adapter),
|
||||||
// go-cqhttp
|
// go-cqhttp
|
||||||
new GetEssenceMsgList(adapter),
|
new GetEssenceMsgList(adapter),
|
||||||
new GetGroupHonorInfo(adapter),
|
new GetGroupHonorInfo(adapter),
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
import { BaseAction, Schema } from '../BaseAction'
|
import { BaseAction, Schema } from '../BaseAction'
|
||||||
import { ActionName } from '../types'
|
import { ActionName } from '../types'
|
||||||
|
import { getBuildVersion } from '@/common/utils'
|
||||||
|
|
||||||
interface Payload {
|
interface Payload {
|
||||||
user_id: number | string
|
user_id: number | string
|
||||||
@@ -12,15 +13,13 @@ export class FriendPoke extends BaseAction<Payload, null> {
|
|||||||
})
|
})
|
||||||
|
|
||||||
async _handle(payload: Payload) {
|
async _handle(payload: Payload) {
|
||||||
// if (!this.ctx.app.native.checkPlatform()) {
|
if (!this.ctx.app.native.checkPlatform() || !this.ctx.app.native.checkVersion()) {
|
||||||
// throw new Error('当前系统平台或架构不支持')
|
// await this.ctx.app.packet.sendPokePacket(+payload.user_id)
|
||||||
// }
|
throw new Error('戳一戳暂时只支持Windows QQ 27333 ~ 275970版本')
|
||||||
// if (!this.ctx.app.native.checkVersion()) {
|
}
|
||||||
// throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27333—27597`)
|
else{
|
||||||
// }
|
await this.ctx.app.native.sendFriendPoke(+payload.user_id)
|
||||||
// await this.ctx.app.native.sendFriendPoke(+payload.user_id)
|
}
|
||||||
|
|
||||||
await this.ctx.app.packet.sendPokePacket(+payload.user_id)
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
import { BaseAction, Schema } from '../BaseAction'
|
import { BaseAction, Schema } from '../BaseAction'
|
||||||
import { ActionName } from '../types'
|
import { ActionName } from '../types'
|
||||||
|
import { getBuildVersion } from '@/common/utils'
|
||||||
|
|
||||||
interface Payload {
|
interface Payload {
|
||||||
group_id: number | string
|
group_id: number | string
|
||||||
@@ -14,14 +15,12 @@ export class GroupPoke extends BaseAction<Payload, null> {
|
|||||||
})
|
})
|
||||||
|
|
||||||
async _handle(payload: Payload) {
|
async _handle(payload: Payload) {
|
||||||
// if (!this.ctx.app.native.checkPlatform()) {
|
if (!this.ctx.app.native.checkPlatform() || !this.ctx.app.native.checkVersion()) {
|
||||||
// throw new Error('当前系统平台或架构不支持')
|
throw new Error('戳一戳暂时只支持Windows QQ 27333 ~ 275970版本')
|
||||||
// }
|
}
|
||||||
// if (!this.ctx.app.native.checkVersion()) {
|
else{
|
||||||
// throw new Error(`当前 QQ 版本 ${getBuildVersion()} 不支持,可尝试其他版本 27333—27597`)
|
await this.ctx.app.native.sendGroupPoke(+payload.group_id, +payload.user_id)
|
||||||
// }
|
}
|
||||||
// await this.ctx.app.native.sendGroupPoke(+payload.group_id, +payload.user_id)
|
|
||||||
await this.ctx.app.packet.sendPokePacket(+payload.user_id, +payload.group_id)
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
21
src/onebot11/action/llonebot/SetFriendCategory.ts
Normal file
21
src/onebot11/action/llonebot/SetFriendCategory.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import { BaseAction, Schema } from '../BaseAction'
|
||||||
|
import { ActionName } from '../types'
|
||||||
|
|
||||||
|
interface Payload {
|
||||||
|
user_id: number | string
|
||||||
|
category_id: number | string
|
||||||
|
}
|
||||||
|
|
||||||
|
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) {
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
21
src/onebot11/action/llonebot/SetFriendRemark.ts
Normal file
21
src/onebot11/action/llonebot/SetFriendRemark.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import { BaseAction, Schema } from '../BaseAction'
|
||||||
|
import { ActionName } from '../types'
|
||||||
|
|
||||||
|
interface Payload {
|
||||||
|
user_id: number | string
|
||||||
|
remark?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
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) {
|
||||||
|
const uid = await this.ctx.ntUserApi.getUidByUin(payload.user_id.toString())
|
||||||
|
if (!uid) throw new Error('无法获取好友信息')
|
||||||
|
return this.ctx.ntFriendApi.setBuddyRemark(uid, payload.remark || '')
|
||||||
|
}
|
||||||
|
}
|
19
src/onebot11/action/llonebot/SetGroupMsgMask.ts
Normal file
19
src/onebot11/action/llonebot/SetGroupMsgMask.ts
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import { BaseAction, Schema } from '../BaseAction'
|
||||||
|
import { ActionName } from '../types'
|
||||||
|
|
||||||
|
interface Payload {
|
||||||
|
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) {
|
||||||
|
return this.ctx.ntGroupApi.setGroupMsgMask(payload.group_id.toString(), +payload.mask)
|
||||||
|
}
|
||||||
|
}
|
15
src/onebot11/action/llonebot/SetGroupRemark.ts
Normal file
15
src/onebot11/action/llonebot/SetGroupRemark.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { BaseAction } from '../BaseAction'
|
||||||
|
import { ActionName } from '../types'
|
||||||
|
|
||||||
|
interface Payload {
|
||||||
|
group_id: string,
|
||||||
|
remark?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SetGroupRemark extends BaseAction<Payload, unknown> {
|
||||||
|
actionName = ActionName.SetGroupRemark
|
||||||
|
|
||||||
|
protected async _handle(payload: Payload): Promise<unknown>{
|
||||||
|
return this.ctx.ntGroupApi.setGroupRemark(payload.group_id.toString(), payload.remark)
|
||||||
|
}
|
||||||
|
}
|
10
src/onebot11/action/system/SetRestart.ts
Normal file
10
src/onebot11/action/system/SetRestart.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { BaseAction } from '@/onebot11/action/BaseAction'
|
||||||
|
import { ActionName } from '@/onebot11/action/types'
|
||||||
|
|
||||||
|
export class SetRestart extends BaseAction<null, void> {
|
||||||
|
actionName = ActionName.SetRestart
|
||||||
|
|
||||||
|
protected async _handle() {
|
||||||
|
await this.ctx.ntSystemApi.restart()
|
||||||
|
}
|
||||||
|
}
|
@@ -29,6 +29,10 @@ export enum ActionName {
|
|||||||
GetRobotUinRange = 'get_robot_uin_range',
|
GetRobotUinRange = 'get_robot_uin_range',
|
||||||
GroupPoke = 'group_poke',
|
GroupPoke = 'group_poke',
|
||||||
FriendPoke = 'friend_poke',
|
FriendPoke = 'friend_poke',
|
||||||
|
SetFriendRemark = 'set_friend_remark',
|
||||||
|
SetFriendCategory = 'set_friend_category',
|
||||||
|
SetGroupMsgMask = 'set_group_msg_mask',
|
||||||
|
SetGroupRemark = 'set_group_remark',
|
||||||
// onebot 11
|
// onebot 11
|
||||||
SendLike = 'send_like',
|
SendLike = 'send_like',
|
||||||
GetLoginInfo = 'get_login_info',
|
GetLoginInfo = 'get_login_info',
|
||||||
@@ -47,6 +51,7 @@ export enum ActionName {
|
|||||||
SetGroupLeave = 'set_group_leave',
|
SetGroupLeave = 'set_group_leave',
|
||||||
GetVersionInfo = 'get_version_info',
|
GetVersionInfo = 'get_version_info',
|
||||||
GetStatus = 'get_status',
|
GetStatus = 'get_status',
|
||||||
|
SetRestart = 'set_restart',
|
||||||
CanSendRecord = 'can_send_record',
|
CanSendRecord = 'can_send_record',
|
||||||
CanSendImage = 'can_send_image',
|
CanSendImage = 'can_send_image',
|
||||||
SetGroupKick = 'set_group_kick',
|
SetGroupKick = 'set_group_kick',
|
||||||
|
@@ -1 +1 @@
|
|||||||
export const version = '4.2.2'
|
export const version = '4.3.1'
|
||||||
|
Reference in New Issue
Block a user