mirror of
https://github.com/ikechan8370/chatgpt-plugin.git
synced 2025-12-17 13:57:10 +00:00
297 lines
9 KiB
JavaScript
297 lines
9 KiB
JavaScript
import plugin from '../../../lib/plugins/plugin.js'
|
|
|
|
const PLUGIN_CHAT = 'ChatGpt 对话'
|
|
const PLUGIN_MANAGEMENT = 'ChatGPT-Plugin 管理'
|
|
const PLUGIN_ENTERTAINMENT = 'ChatGPT-Plugin 娱乐小功能'
|
|
const FUNCTION_CHAT = 'chatgpt'
|
|
const FUNCTION_CHAT3 = 'chatgpt3'
|
|
const FUNCTION_CHAT1 = 'chatgpt1'
|
|
const FUNCTION_BING = 'bing'
|
|
const FUNCTION_GEMINI = 'gemini'
|
|
const FUNCTION_XH = 'xh'
|
|
const FUNCTION_QWEN = 'qwen'
|
|
const FUNCTION_GLM4 = 'glm4'
|
|
const FUNCTION_CLAUDE2 = 'claude2'
|
|
|
|
const FUNCTION_END = 'destroyConversations'
|
|
const FUNCTION_END_ALL = 'endAllConversations'
|
|
|
|
const FUNCTION_PIC = 'switch2Picture'
|
|
const FUNCTION_TEXT = 'switch2Text'
|
|
const FUNCTION_AUDIO = 'switch2Audio'
|
|
|
|
const FUNCTION_CONFIRM_ON = 'turnOnConfirm'
|
|
const FUNCTION_CONFIRM_OFF = 'turnOffConfirm'
|
|
const FUNCTION_VERSION = 'versionChatGPTPlugin'
|
|
const FUNCTION_SHUTUP = 'shutUp'
|
|
const FUNCTION_OPEN_MOUTH = 'openMouth'
|
|
const FUNCTION_QUERY_CONFIG = 'queryConfig'
|
|
const FUNCTION_ENABLE_CONTEXT = 'enableGroupContext'
|
|
const FUNCTION_MODELS = 'viewAPIModel'
|
|
|
|
const FUNCTION_SWITCH_BING = 'useBingSolution'
|
|
|
|
const FUNCTION_WORDCLOUD = 'wordcloud'
|
|
const FUNCTION_WORDCLOUD_LATEST = 'wordcloud_latest'
|
|
const FUNCTION_WORDCLOUD_NEW = 'wordcloud_new'
|
|
const FUNCTION_TRANSLATE = 'translate'
|
|
const FUNCTION_TRANSLATE_SOURCE = 'translateSource'
|
|
const FUNCTION_TRANSLATE_OCR = 'ocr'
|
|
const FUNCTION_TRANSLATE_SCREENSHOT = 'screenshotUrl'
|
|
export class ChatGPTButtonHandler extends plugin {
|
|
constructor () {
|
|
super({
|
|
name: 'chatgpt按钮处理器',
|
|
priority: -100,
|
|
namespace: 'chatgpt-plugin',
|
|
handler: [{
|
|
key: 'chatgpt.button.post',
|
|
fn: 'btnHandler'
|
|
}]
|
|
})
|
|
}
|
|
|
|
async btnHandler (e, options, reject) {
|
|
logger.mark('[chatgpt按钮处理器]')
|
|
if (e.adapter !== 'shamrock' && (!segment.button || segment.button(1) !== 1)) {
|
|
return null
|
|
}
|
|
const fnc = e.logFnc
|
|
switch (fnc) {
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_CHAT3}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_CHAT1}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_BING}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_GEMINI}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_XH}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_QWEN}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_CLAUDE2}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_GLM4}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_CHAT}]`: {
|
|
return this.makeButtonChat(options)
|
|
}
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_END}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_END_ALL}]`: {
|
|
return this.makeButtonEnd(options)
|
|
}
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_PIC}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_AUDIO}]`:
|
|
case `[${PLUGIN_CHAT}][${FUNCTION_TEXT}]`: {
|
|
return this.makeButtonMode(options)
|
|
}
|
|
case `[${PLUGIN_MANAGEMENT}][${FUNCTION_VERSION}]`:
|
|
case `[${PLUGIN_MANAGEMENT}][${FUNCTION_SHUTUP}]`:
|
|
case `[${PLUGIN_MANAGEMENT}][${FUNCTION_OPEN_MOUTH}]`:
|
|
case `[${PLUGIN_MANAGEMENT}][${FUNCTION_MODELS}]`:
|
|
case `[${PLUGIN_MANAGEMENT}][${FUNCTION_QUERY_CONFIG}]`:
|
|
case `[${PLUGIN_MANAGEMENT}][${FUNCTION_ENABLE_CONTEXT}]`:
|
|
case `[${PLUGIN_MANAGEMENT}][${FUNCTION_CONFIRM_OFF}]`:
|
|
case `[${PLUGIN_MANAGEMENT}][${FUNCTION_CONFIRM_ON}]`: {
|
|
return this.makeButtonConfirm(options)
|
|
}
|
|
case `[${PLUGIN_MANAGEMENT}][${FUNCTION_SWITCH_BING}]`: {
|
|
return this.makeButtonBingMode(options)
|
|
}
|
|
case `[${PLUGIN_ENTERTAINMENT}][${FUNCTION_WORDCLOUD}]`:
|
|
case `[${PLUGIN_ENTERTAINMENT}][${FUNCTION_WORDCLOUD_LATEST}]`:
|
|
case `[${PLUGIN_ENTERTAINMENT}][${FUNCTION_WORDCLOUD_NEW}]`:
|
|
case `[${PLUGIN_ENTERTAINMENT}][${FUNCTION_TRANSLATE}]`:
|
|
case `[${PLUGIN_ENTERTAINMENT}][${FUNCTION_TRANSLATE_SOURCE}]`:
|
|
case `[${PLUGIN_ENTERTAINMENT}][${FUNCTION_TRANSLATE_OCR}]`:
|
|
case `[${PLUGIN_ENTERTAINMENT}][${FUNCTION_TRANSLATE_SCREENSHOT}]`: {
|
|
return this.makeButtonEntertainment(options)
|
|
}
|
|
default:
|
|
}
|
|
return null
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {{data: {suggested: string?, use: string}}} options
|
|
*/
|
|
makeButtonChat (options) {
|
|
let rows = [
|
|
{
|
|
buttons: [
|
|
createButtonBase('结束对话', '#摧毁对话'),
|
|
createButtonBase('切换模式', '#chatgpt切换', false)
|
|
]
|
|
},
|
|
{
|
|
buttons: [
|
|
createButtonBase('OpenAPI', '#chat1', false),
|
|
createButtonBase('ChatGPT', '#chat3', false),
|
|
createButtonBase('Copilot', '#bing', false),
|
|
createButtonBase('Gemini', '#gemini', false)
|
|
]
|
|
},
|
|
{
|
|
buttons: [
|
|
createButtonBase('讯飞星火', '#xh', false),
|
|
createButtonBase('通义千问', '#qwen', false),
|
|
createButtonBase('ChatGLM4', '#glm4', false)
|
|
]
|
|
}
|
|
]
|
|
if (options?.data?.suggested) {
|
|
rows.unshift({
|
|
buttons: options.data.suggested.split('\n').map(s => {
|
|
return createButtonBase(s, s)
|
|
})
|
|
})
|
|
}
|
|
return {
|
|
appid: 1,
|
|
rows
|
|
}
|
|
}
|
|
|
|
makeButtonEnd (options) {
|
|
return {
|
|
appid: 1,
|
|
rows: [
|
|
{
|
|
buttons: [
|
|
createButtonBase('重新开始', '#摧毁对话'),
|
|
createButtonBase('全部结束', '#摧毁全部对话'),
|
|
createButtonBase('切换模式', '#chatgpt切换', false)
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
makeButtonMode (options) {
|
|
return {
|
|
appid: 1,
|
|
rows: [
|
|
{
|
|
buttons: [
|
|
createButtonBase('以文字回复', '#chatgpt文本模式'),
|
|
createButtonBase('以图片回复', '#chatgpt图片模式'),
|
|
createButtonBase('以语音回复', '#chatgpt语音模式')
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
makeButtonConfirm (options) {
|
|
return {
|
|
appid: 1,
|
|
rows: [
|
|
{
|
|
buttons: [
|
|
createButtonBase('开启确认', '#chatgpt开启确认'),
|
|
createButtonBase('关闭确认', '#chatgpt关闭确认'),
|
|
createButtonBase('暂停本群回复', '#chatgpt本群闭嘴', false)
|
|
|
|
]
|
|
},
|
|
{
|
|
buttons: [
|
|
createButtonBase('恢复本群回复', '#chatgpt本群张嘴', false),
|
|
createButtonBase('开启上下文', '#chatgpt打开上下文'),
|
|
createButtonBase('关闭上下文 ', '#chatgpt关闭上下文')
|
|
|
|
]
|
|
},
|
|
{
|
|
buttons: [
|
|
createButtonBase('查看指令表', '#chatgpt指令表', false),
|
|
createButtonBase('查看帮助', '#chatgpt帮助'),
|
|
createButtonBase('查看配置', '#chatgpt查看当前配置')
|
|
|
|
]
|
|
},
|
|
{
|
|
buttons: [
|
|
createButtonBase('查看配置', '#chatgpt查看当前配置'),
|
|
createButtonBase('查看模型列表', '#chatgpt模型列表'),
|
|
createButtonBase('版本信息', '#chatgpt版本信息')
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
makeButtonBingMode (options) {
|
|
return {
|
|
appid: 1,
|
|
rows: [
|
|
{
|
|
buttons: [
|
|
createButtonBase('创意模式', '#chatgpt必应切换创意'),
|
|
createButtonBase('精准模式', '#chatgpt必应切换精准'),
|
|
createButtonBase('使用设定', '#chatgpt使用设定', false)
|
|
]
|
|
},
|
|
{
|
|
buttons: [
|
|
createButtonBase('禁用搜索', '#chatgpt必应禁用搜索'),
|
|
createButtonBase('开启搜索', '#chatgpt必应开启搜索'),
|
|
createButtonBase('设定列表', '#chatgpt浏览设定', false)
|
|
]
|
|
},
|
|
{
|
|
buttons: [
|
|
createButtonBase('切换到API', '#chatgpt切换API'),
|
|
createButtonBase('切换到Gemini', '#chatgpt切换gemini'),
|
|
createButtonBase('切换到星火', '#chatgpt切换xh')
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
makeButtonEntertainment (options) {
|
|
return {
|
|
appid: 1,
|
|
rows: [
|
|
{
|
|
buttons: [
|
|
createButtonBase('今日词云', '#今日词云'),
|
|
createButtonBase('最新词云', '#最新词云', false),
|
|
createButtonBase('我的词云', '#我的今日词云')
|
|
|
|
]
|
|
},
|
|
{
|
|
buttons: [
|
|
createButtonBase('翻译', '#翻译', false),
|
|
createButtonBase('OCR', '#ocr', false),
|
|
createButtonBase('截图', '#url', false)
|
|
]
|
|
},
|
|
{
|
|
buttons: [
|
|
createButtonBase('设置OPENAI翻译源', '#chatgpt设置翻译来源openai'),
|
|
createButtonBase('设置gemini翻译源', '#chatgpt设置翻译来源gemini'),
|
|
createButtonBase('设置星火翻译源', '#chatgpt设置翻译来源xh'),
|
|
createButtonBase('设置通义千问翻译源', '#chatgpt设置翻译来源qwen')
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
function createButtonBase (label, data, enter = true, style = 1) {
|
|
return {
|
|
id: '',
|
|
render_data: {
|
|
label,
|
|
style,
|
|
visited_label: label
|
|
},
|
|
action: {
|
|
type: 2,
|
|
permission: {
|
|
type: 2
|
|
},
|
|
data,
|
|
enter: true,
|
|
unsupport_tips: ''
|
|
}
|
|
}
|
|
}
|