mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-16 13:27:08 +00:00
173 lines
4.9 KiB
JavaScript
173 lines
4.9 KiB
JavaScript
import plugin from '../../../lib/plugins/plugin.js'
|
||
import fs from 'fs'
|
||
import _ from 'lodash'
|
||
import { Config } from '../utils/config.js'
|
||
import {limitString, makeForwardMsg} from '../utils/common.js'
|
||
import { getPromptByName, readPrompts, saveOnePrompt } from '../utils/prompts.js'
|
||
export class help extends plugin {
|
||
constructor (e) {
|
||
super({
|
||
name: 'ChatGPT-Plugin 设定管理',
|
||
dsc: 'ChatGPT-Plugin 设定管理',
|
||
event: 'message',
|
||
priority: 500,
|
||
rule: [
|
||
{
|
||
reg: '^#(chatgpt|ChatGPT)设定列表$',
|
||
fnc: 'listPrompts',
|
||
permission: 'master'
|
||
},
|
||
{
|
||
reg: '^#(chatgpt|ChatGPT)查看设定',
|
||
fnc: 'detailPrompt',
|
||
permission: 'master'
|
||
},
|
||
{
|
||
reg: '^#(chatgpt|ChatGPT)使用设定',
|
||
fnc: 'usePrompt',
|
||
permission: 'master'
|
||
},
|
||
{
|
||
reg: '^#(chatgpt|ChatGPT)添加设定',
|
||
fnc: 'addPrompt',
|
||
permission: 'master'
|
||
},
|
||
{
|
||
reg: '^#(chatgpt|ChatGPT)(上传|分享|共享)设定',
|
||
fnc: 'uploadPrompt',
|
||
permission: 'master'
|
||
},
|
||
{
|
||
reg: '^#(chatgpt|ChatGPT)导入设定',
|
||
fnc: 'importPrompt',
|
||
permission: 'master'
|
||
},
|
||
{
|
||
reg: '^#(chatgpt|ChatGPT)设定帮助$',
|
||
fnc: 'helpPrompt',
|
||
permission: 'master'
|
||
}
|
||
]
|
||
})
|
||
}
|
||
|
||
async listPrompts (e) {
|
||
let prompts = []
|
||
let defaultPrompt = {
|
||
name: 'API默认',
|
||
content: Config.promptPrefixOverride
|
||
}
|
||
let defaultSydneyPrompt = {
|
||
name: 'Sydney默认',
|
||
content: Config.sydney
|
||
}
|
||
prompts.push(...[defaultPrompt, defaultSydneyPrompt])
|
||
prompts.push(...readPrompts())
|
||
console.log(prompts)
|
||
e.reply(await makeForwardMsg(e, prompts.map(p => `《${p.name}》\n${limitString(p.content, 500)}`), '设定列表'))
|
||
}
|
||
|
||
async detailPrompt (e) {
|
||
let promptName = e.msg.replace(/^#(chatgpt|ChatGPT)查看设定/, '').trim()
|
||
let prompt = getPromptByName(promptName)
|
||
if (!prompt) {
|
||
if (promptName === 'API默认') {
|
||
prompt = {
|
||
name: 'API默认',
|
||
content: Config.promptPrefixOverride
|
||
}
|
||
} else if (promptName === 'Sydney默认') {
|
||
prompt = {
|
||
name: 'Sydney默认',
|
||
content: Config.sydney
|
||
}
|
||
} else {
|
||
await e.reply('没有这个设定', true)
|
||
return
|
||
}
|
||
}
|
||
await e.reply(`《${prompt.name}》\n${limitString(prompt.content, 500)}`, true)
|
||
}
|
||
|
||
async usePrompt (e) {
|
||
let promptName = e.msg.replace(/^#(chatgpt|ChatGPT)使用设定/, '').trim()
|
||
let prompt = getPromptByName(promptName)
|
||
if (!prompt) {
|
||
console.log(promptName)
|
||
if (promptName === 'API默认') {
|
||
prompt = {
|
||
name: 'API默认',
|
||
content: Config.promptPrefixOverride
|
||
}
|
||
} else if (promptName === 'Sydney默认') {
|
||
prompt = {
|
||
name: 'Sydney默认',
|
||
content: Config.sydney
|
||
}
|
||
} else {
|
||
await e.reply('没有这个设定', true)
|
||
return
|
||
}
|
||
}
|
||
let use = await redis.get('CHATGPT:USE') || 'api'
|
||
if (use.toLowerCase() === 'bing') {
|
||
if (Config.toneStyle === 'Sydney') {
|
||
use = 'sydney'
|
||
}
|
||
}
|
||
const keyMap = {
|
||
api: 'promptPrefixOverride',
|
||
sydney: 'sydney'
|
||
}
|
||
|
||
if (keyMap[use]) {
|
||
Config[keyMap[use]] = prompt.content
|
||
await redis.set(`CHATGPT:PROMPT_USE_${use}`, promptName)
|
||
await e.reply(`你当前正在使用${use}模式,已将该模式设定应用为"${promptName}。更该设定后建议结束对话以使设定更好生效"`, true)
|
||
} else {
|
||
await e.reply(`你当前正在使用${use}模式,改模式不支持设定`, true)
|
||
}
|
||
}
|
||
|
||
async addPrompt (e) {
|
||
this.setContext('addPromptName')
|
||
await e.reply('请输入设定名称', true)
|
||
}
|
||
|
||
async addPromptName () {
|
||
if (!this.e.msg) return
|
||
let name = this.e.msg
|
||
let prompt = getPromptByName(name)
|
||
if (prompt) {
|
||
await this.e.reply('该设定已存在', true)
|
||
this.finish('addPromptName')
|
||
return
|
||
}
|
||
await redis.set('CHATGPT:ADD_PROMPT_NAME', name)
|
||
await this.reply('请输入设定内容', true)
|
||
this.finish('addPromptName')
|
||
this.setContext('addPromptContext')
|
||
}
|
||
|
||
async addPromptContext () {
|
||
if (!this.e.msg) return
|
||
let content = this.e.msg
|
||
let name = await redis.get('CHATGPT:ADD_PROMPT_NAME')
|
||
saveOnePrompt(name, content)
|
||
await redis.del('CHATGPT:ADD_PROMPT_NAME')
|
||
await this.reply('设定添加成功', true)
|
||
this.finish('addPromptContext')
|
||
}
|
||
|
||
async uploadPrompt () {
|
||
await this.reply('敬请期待', true)
|
||
}
|
||
|
||
async importPrompt () {
|
||
await this.reply('敬请期待', true)
|
||
}
|
||
|
||
async helpPrompt () {
|
||
await this.reply('设定目录为/plugins/chatgpt-plugin/prompts,将会读取该目录下的所有[设定名].txt文件作为设定列表', true)
|
||
}
|
||
}
|