mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-16 13:27:08 +00:00
fix: 管理功能(wip)
This commit is contained in:
parent
d20974f25a
commit
89ab58b3d7
2 changed files with 162 additions and 15 deletions
136
utils/command.js
136
utils/command.js
|
|
@ -1,3 +1,6 @@
|
|||
import { Chaite } from 'chaite'
|
||||
import common from '../../../lib/common/common.js'
|
||||
import ChatGPTConfig from '../config/config.js'
|
||||
/**
|
||||
* 模板
|
||||
* @param cmdPrefix
|
||||
|
|
@ -8,47 +11,158 @@
|
|||
*/
|
||||
export function createCRUDCommandRules (cmdPrefix, name, variable, detail = true) {
|
||||
// make the first letter of variable capable
|
||||
variable = variable.charAt(0).toUpperCase() + variable.slice(1)
|
||||
const upperVariable = variable.charAt(0).toUpperCase() + variable.slice(1)
|
||||
const rules = [
|
||||
{
|
||||
reg: cmdPrefix + `${name}列表$`,
|
||||
fnc: `list${variable}`
|
||||
fnc: `list${upperVariable}`
|
||||
},
|
||||
{
|
||||
reg: cmdPrefix + `(编辑|修改)${name}`,
|
||||
fnc: `edit${variable}`
|
||||
fnc: `edit${upperVariable}`
|
||||
},
|
||||
{
|
||||
reg: cmdPrefix + `(添加|新增)${name}$`,
|
||||
fnc: `add${variable}`
|
||||
fnc: `add${upperVariable}`
|
||||
},
|
||||
|
||||
{
|
||||
reg: cmdPrefix + `删除${name}`,
|
||||
fnc: `remove${variable}`
|
||||
fnc: `remove${upperVariable}`
|
||||
}
|
||||
]
|
||||
const manager = getManagerByName(upperVariable)
|
||||
if (detail) {
|
||||
rules.push({
|
||||
reg: cmdPrefix + `${name}详情$`,
|
||||
fnc: `detail${variable}`
|
||||
fnc: `detail${upperVariable}`
|
||||
})
|
||||
this[`detail${upperVariable}`] = async function (e) {
|
||||
const verbose = !e.isGroup
|
||||
const id = e.msg.replace(new RegExp(cmdPrefix + `${name}详情`), '')
|
||||
const instance = await manager.getInstance(id)
|
||||
if (instance) {
|
||||
e.reply(instance.toFormatedString(verbose))
|
||||
} else {
|
||||
e.reply(`${name}不存在`)
|
||||
}
|
||||
}
|
||||
}
|
||||
// todo
|
||||
// 定义对应的函数
|
||||
this[`list${variable}`] = async function (e) {
|
||||
|
||||
this[`list${upperVariable}`] = async function (e) {
|
||||
const verbose = !e.isGroup
|
||||
if (manager) {
|
||||
const instances = await manager.listInstances()
|
||||
if (instances.length === 0) {
|
||||
e.reply(`暂无${name}`)
|
||||
return true
|
||||
}
|
||||
const msgs = instances.map(i => {
|
||||
return i.toFormatedString(verbose)
|
||||
})
|
||||
const forwardedMsg = await common.makeForwardMsg(e, msgs, `${name}列表`)
|
||||
this.reply(forwardedMsg)
|
||||
}
|
||||
}
|
||||
this[`edit${upperVariable}`] = async function (e) {
|
||||
this.reply(`暂不支持编辑${name},请使用后台管理面板编辑`)
|
||||
}
|
||||
this[`add${upperVariable}`] = async function (e) {
|
||||
if (manager) {
|
||||
this.reply(`暂不支持添加${name},请使用后台管理面板添加`)
|
||||
} else {
|
||||
if (variable in ChatGPTConfig.llm) {
|
||||
/** @type {string[]} */
|
||||
const list = ChatGPTConfig.llm[variable]
|
||||
const id = e.msg.replace(new RegExp(cmdPrefix + `(添加|新增)${name}`), '')
|
||||
if (list.indexOf(id) > 0) {
|
||||
e.reply(`${name}已存在`)
|
||||
} else {
|
||||
list.push(id)
|
||||
e.reply(`已添加${name}`)
|
||||
}
|
||||
}
|
||||
if (variable in ChatGPTConfig.management) {
|
||||
if ((/** @type {string[]} **/ChatGPTConfig.management[variable]).indexOf(id) > 0) {
|
||||
e.reply(`${name}已存在`)
|
||||
} else {
|
||||
(/** @type {string[]} **/ChatGPTConfig.management[variable]).push(id)
|
||||
e.reply(`已添加${name}`)
|
||||
}
|
||||
} else {
|
||||
e.reply(`暂不支持添加${name},请使用后台管理面板添加`)
|
||||
}
|
||||
}
|
||||
}
|
||||
this[`remove${upperVariable}`] = async function (e) {
|
||||
const id = e.msg.replace(new RegExp(cmdPrefix + `删除${name}`), '')
|
||||
if (manager) {
|
||||
const instance = await manager.getInstance(id)
|
||||
if (instance) {
|
||||
await manager.deleteInstance(id)
|
||||
e.reply(`已删除${name}`)
|
||||
} else {
|
||||
e.reply(`${name}不存在`)
|
||||
}
|
||||
} else {
|
||||
if (variable in ChatGPTConfig.llm) {
|
||||
if ((/** @type {string[]} **/ChatGPTConfig.llm[variable]).indexOf(id) > 0) {
|
||||
(/** @type {string[]} **/ChatGPTConfig.llm[variable]).splice(
|
||||
(/** @type {string[]} **/ChatGPTConfig.llm[variable]).indexOf(id),
|
||||
1
|
||||
)
|
||||
e.reply(`已删除${name}`)
|
||||
} else {
|
||||
e.reply(`${name}不存在`)
|
||||
}
|
||||
} else if (variable in ChatGPTConfig.management) {
|
||||
if ((/** @type {string[]} **/ChatGPTConfig.management[variable]).indexOf(id) > 0) {
|
||||
(/** @type {string[]} **/ChatGPTConfig.management[variable]).splice(
|
||||
(/** @type {string[]} **/ChatGPTConfig.management[variable]).indexOf(id),
|
||||
1
|
||||
)
|
||||
e.reply(`已删除${name}`)
|
||||
} else {
|
||||
e.reply(`${name}不存在`)
|
||||
}
|
||||
} else {
|
||||
e.reply(`暂不支持删除${name},请使用后台管理面板删除`)
|
||||
}
|
||||
}
|
||||
}
|
||||
return rules
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取管理器
|
||||
* @param {string} name
|
||||
* @returns {import('chaite').NonExecutableShareableManager | import('chaite').ExecutableShareableManager | null}
|
||||
*/
|
||||
function getManagerByName (name) {
|
||||
switch (name.toLowerCase()) {
|
||||
case 'channels': {
|
||||
return Chaite.getInstance().getChannelsManager()
|
||||
}
|
||||
case 'presets': {
|
||||
return Chaite.getInstance().getChatPresetManager()
|
||||
}
|
||||
case 'processors': {
|
||||
return Chaite.getInstance().getProcessorsManager()
|
||||
}
|
||||
case 'tools': {
|
||||
return Chaite.getInstance().getToolsManager()
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
const switchCommandPreset = {
|
||||
0: ['开启', '关闭'],
|
||||
1: ['允许', '禁止']
|
||||
}
|
||||
export function createSwitchCommandRules (cmdPrefix, name, variable, preset = 0) {
|
||||
variable = variable.charAt(0).toUpperCase() + variable.slice(1)
|
||||
const upperVariable = variable.charAt(0).toUpperCase() + variable.slice(1)
|
||||
return {
|
||||
reg: cmdPrefix + `(${switchCommandPreset[preset][0]}|${switchCommandPreset[preset][1]})${name}$`,
|
||||
fnc: `switch${variable}`
|
||||
fnc: `switch${upperVariable}`
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue