feat: claude的设定

This commit is contained in:
ikechan8370 2023-04-17 12:48:01 +08:00
parent a2d903a2ae
commit 06fd121950
5 changed files with 79 additions and 8 deletions

View file

@ -27,6 +27,7 @@ import ChatGLMClient from '../utils/chatglm.js'
import { convertFaces } from '../utils/face.js'
import uploadRecord from '../utils/uploadRecord.js'
import {SlackClaudeClient} from "../utils/slack/slackClient.js";
import {getPromptByName} from "../utils/prompts.js";
try {
await import('keyv')
} catch (err) {
@ -174,6 +175,10 @@ export class chatgpt extends plugin {
reg: '^#chatgpt删除对话',
fnc: 'deleteConversation',
permission: 'master'
},
{
reg: '^#claude开启新对话',
fnc: 'newClaudeConversation'
}
]
})
@ -1390,6 +1395,14 @@ export class chatgpt extends plugin {
slackUserToken: Config.slackUserToken,
slackChannelId: Config.slackChannelId
})
let conversationId = await redis.get(`CHATGPT:SLACK_CONVERSATION:${e.sender.user_id}`)
if (!conversationId) {
// 如果是新对话
if (Config.slackClaudeEnableGlobalPreset && Config.slackClaudeGlobalPreset) {
// 先发送设定
await client.sendMessage(Config.slackClaudeGlobalPreset, e)
}
}
let text = await client.sendMessage(prompt, e)
return {
text
@ -1449,6 +1462,39 @@ export class chatgpt extends plugin {
}
}
async newClaudeConversation (e) {
let presetName = e.msg.replace(/^#claude开启新对话/, '').trim()
let client = new SlackClaudeClient({
slackUserToken: Config.slackUserToken,
slackChannelId: Config.slackChannelId
})
let response
if (!presetName || presetName === '空' || presetName === '无设定') {
let conversationId = await redis.get(`CHATGPT:SLACK_CONVERSATION:${e.sender.user_id}`)
if (conversationId) {
// 如果有对话进行中,先删除
logger.info('开启Claude新对话但旧对话未结束自动结束上一次对话')
await redis.del(`CHATGPT:SLACK_CONVERSATION:${e.sender.user_id}`)
}
response = await client.sendMessage('', e)
await e.reply(response, true)
} else {
let preset = getPromptByName(presetName)
if (!preset) {
await e.reply('没有这个设定', true)
} else {
let conversationId = await redis.get(`CHATGPT:SLACK_CONVERSATION:${e.sender.user_id}`)
if (conversationId) {
// 如果有对话进行中,先删除
logger.info('开启Claude新对话但旧对话未结束自动结束上一次对话')
await redis.del(`CHATGPT:SLACK_CONVERSATION:${e.sender.user_id}`)
}
response = await client.sendMessage(preset.content, e)
await e.reply(response, true)
}
}
}
async emptyQueue (e) {
await redis.lTrim('CHATGPT:CHAT_QUEUE', 1, 0)
await this.reply('已清空当前等待队列')