mirror of
https://github.com/eryajf/chatgpt-dingtalk.git
synced 2025-10-08 09:30:16 +08:00
perf: 优化一些回复信息及信息记录,移除不再使用的欢迎代码 (#179)
This commit is contained in:
@@ -46,7 +46,7 @@ func SelectHistory(rmsg *dingbot.ReceiveMsg) error {
|
|||||||
if chatTmp.ChatType == 1 {
|
if chatTmp.ChatType == 1 {
|
||||||
rst += fmt.Sprintf("## 🙋 %s 问\n\n**时间:** %v\n\n**问题为:** %s\n\n", chatTmp.Username, ctime, chatTmp.Content)
|
rst += fmt.Sprintf("## 🙋 %s 问\n\n**时间:** %v\n\n**问题为:** %s\n\n", chatTmp.Username, ctime, chatTmp.Content)
|
||||||
} else {
|
} else {
|
||||||
rst += fmt.Sprintf("## 🤖 机器人答\n\n**时间:** %v\n\n**回答如下:** \n\n%s\n\n", ctime, chatTmp.Content)
|
rst += fmt.Sprintf("## 🤖 机器人 答\n\n**时间:** %v\n\n**回答如下:** \n\n%s\n\n", ctime, chatTmp.Content)
|
||||||
}
|
}
|
||||||
// TODO: 答案应该严格放在问题之后,目前只根据ID排序进行的陈列,当一个用户同时提出多个问题时,最终展示的可能会有点问题
|
// TODO: 答案应该严格放在问题之后,目前只根据ID排序进行的陈列,当一个用户同时提出多个问题时,最终展示的可能会有点问题
|
||||||
}
|
}
|
||||||
@@ -57,7 +57,7 @@ func SelectHistory(rmsg *dingbot.ReceiveMsg) error {
|
|||||||
}
|
}
|
||||||
// 回复@我的用户
|
// 回复@我的用户
|
||||||
reply := fmt.Sprintf("- 在线查看: [点我](%s)\n- 下载文件: [点我](%s)\n- 在线预览请安装插件:[Markdown Preview Plus](https://chrome.google.com/webstore/detail/markdown-preview-plus/febilkbfcbhebfnokafefeacimjdckgl)", public.Config.ServiceURL+"/history/"+fileName, public.Config.ServiceURL+"/download/"+fileName)
|
reply := fmt.Sprintf("- 在线查看: [点我](%s)\n- 下载文件: [点我](%s)\n- 在线预览请安装插件:[Markdown Preview Plus](https://chrome.google.com/webstore/detail/markdown-preview-plus/febilkbfcbhebfnokafefeacimjdckgl)", public.Config.ServiceURL+"/history/"+fileName, public.Config.ServiceURL+"/download/"+fileName)
|
||||||
logger.Info(fmt.Sprintf("🤖 %s得到的答案: %#v", rmsg.SenderNick, reply))
|
logger.Info(fmt.Sprintf("🤖 %s 得到的答案: %#v", rmsg.SenderNick, reply))
|
||||||
_, err = rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), reply)
|
_, err = rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), reply)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(fmt.Errorf("send message error: %v", err))
|
logger.Error(fmt.Errorf("send message error: %v", err))
|
||||||
|
@@ -49,7 +49,7 @@ func ProcessRequest(rmsg *dingbot.ReceiveMsg) error {
|
|||||||
logger.Warning(fmt.Errorf("send message error: %v", err))
|
logger.Warning(fmt.Errorf("send message error: %v", err))
|
||||||
}
|
}
|
||||||
case "图片":
|
case "图片":
|
||||||
_, err := rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), "发送以 **#图片** 开头的内容,将会触发绘画能力,图片生成之后,将会保存在程序根目录下的 **images目录** \n 如果你绘图没有思路,可以在这两个网站寻找灵感。\n - [https://lexica.art/](https://lexica.art/)\n- [https://www.clickprompt.org/zh-CN/](https://www.clickprompt.org/zh-CN/)")
|
_, err := rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), "发送以 **#图片** 开头的内容,将会触发绘画能力,图片生成之后,将会通过消息回复给您。\n 如果你绘图没有思路,可以在这两个网站寻找灵感。\n - [https://lexica.art/](https://lexica.art/)\n- [https://www.clickprompt.org/zh-CN/](https://www.clickprompt.org/zh-CN/)")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warning(fmt.Errorf("send message error: %v", err))
|
logger.Warning(fmt.Errorf("send message error: %v", err))
|
||||||
}
|
}
|
||||||
@@ -109,7 +109,7 @@ func Do(mode string, rmsg *dingbot.ReceiveMsg) error {
|
|||||||
logger.Info(fmt.Errorf("gpt request error: %v", err))
|
logger.Info(fmt.Errorf("gpt request error: %v", err))
|
||||||
if strings.Contains(fmt.Sprintf("%v", err), "maximum text length exceeded") {
|
if strings.Contains(fmt.Sprintf("%v", err), "maximum text length exceeded") {
|
||||||
public.UserService.ClearUserSessionContext(rmsg.GetSenderIdentifier())
|
public.UserService.ClearUserSessionContext(rmsg.GetSenderIdentifier())
|
||||||
_, err = rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("请求openai失败了,错误信息:%v,看起来是超过最大对话限制了,已自动重置您的对话", err))
|
_, err = rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("请求openai失败了,错误信息:%v,看起来是超过最大对话限制了,已自动重置您的对话,现在您可以继续提问了。", err))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warning(fmt.Errorf("send message error: %v", err))
|
logger.Warning(fmt.Errorf("send message error: %v", err))
|
||||||
return err
|
return err
|
||||||
@@ -165,7 +165,7 @@ func Do(mode string, rmsg *dingbot.ReceiveMsg) error {
|
|||||||
logger.Info(fmt.Sprintf("gpt request error: %v", err))
|
logger.Info(fmt.Sprintf("gpt request error: %v", err))
|
||||||
if strings.Contains(fmt.Sprintf("%v", err), "maximum text length exceeded") {
|
if strings.Contains(fmt.Sprintf("%v", err), "maximum text length exceeded") {
|
||||||
public.UserService.ClearUserSessionContext(rmsg.GetSenderIdentifier())
|
public.UserService.ClearUserSessionContext(rmsg.GetSenderIdentifier())
|
||||||
_, err = rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("请求openai失败了,错误信息:%v,看起来是超过最大对话限制了,已自动重置您的对话", err))
|
_, err = rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("请求openai失败了,错误信息:%v,看起来是超过最大对话限制了,已自动重置您的对话,现在您可以继续提问了。", err))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warning(fmt.Errorf("send message error: %v", err))
|
logger.Warning(fmt.Errorf("send message error: %v", err))
|
||||||
return err
|
return err
|
||||||
|
@@ -23,52 +23,4 @@ func InitSvc() {
|
|||||||
// if Config.Model == openai.GPT3Dot5Turbo0301 || Config.Model == openai.GPT3Dot5Turbo {
|
// if Config.Model == openai.GPT3Dot5Turbo0301 || Config.Model == openai.GPT3Dot5Turbo {
|
||||||
// _, _ = GetBalance()
|
// _, _ = GetBalance()
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
var Welcome string = `# 发送信息
|
|
||||||
|
|
||||||
若您想给机器人发送信息,有如下两种方式:
|
|
||||||
|
|
||||||
1. 在本机器人所在群里@机器人;
|
|
||||||
2. 点击机器人的头像后,再点击"发消息"。
|
|
||||||
|
|
||||||
机器人收到您的信息后,默认会交给chatgpt进行处理。除非,您发送的内容是如下**系统指令**之一。
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
# 系统指令
|
|
||||||
|
|
||||||
系统指令是一些特殊的词语,当您向机器人发送这些词语时,会触发对应的功能:
|
|
||||||
|
|
||||||
**单聊**:每条消息都是单独的对话,不包含上下文
|
|
||||||
|
|
||||||
**串聊**:对话会携带上下文,除非您主动重置对话或对话长度超过限制
|
|
||||||
|
|
||||||
**重置**:重置上下文
|
|
||||||
|
|
||||||
**余额**: ~~查询机器人所用OpenAI账号的余额~~ (暂不可用)
|
|
||||||
|
|
||||||
**模板**:查询机器人内置的快捷模板
|
|
||||||
|
|
||||||
**图片**:查看如何根据提示词生成图片
|
|
||||||
|
|
||||||
**查对话**:获取指定人员的对话历史
|
|
||||||
|
|
||||||
**帮助**:重新获取帮助信息
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
# 友情提示
|
|
||||||
|
|
||||||
使用"串聊模式"会显著加快机器人所用账号的余额消耗速度。
|
|
||||||
|
|
||||||
因此,若无保留上下文的需求,建议使用"单聊模式"。
|
|
||||||
|
|
||||||
即使有保留上下文的需求,也应适时使用"重置"指令来重置上下文。
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
# 项目地址
|
|
||||||
|
|
||||||
本项目已在GitHub开源,[查看源代码](https://github.com/eryajf/chatgpt-dingtalk)。
|
|
||||||
`
|
|
Reference in New Issue
Block a user