perf:优化&修复机器人回复内容 (#188)

This commit is contained in:
AydenLii
2023-04-08 19:11:28 +08:00
committed by GitHub
parent 4cf7956f4d
commit 5f637b8407

View File

@@ -18,24 +18,24 @@ func ProcessRequest(rmsg *dingbot.ReceiveMsg) error {
switch content {
case "单聊":
public.UserService.SetUserMode(rmsg.GetSenderIdentifier(), content)
_, err := rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("=====现在进入与👉%s👈单聊模式 =====", rmsg.SenderNick))
_, err := rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), fmt.Sprintf("**[Concentrate] 现在进入与 %s单聊模式**", rmsg.SenderNick))
if err != nil {
logger.Warning(fmt.Errorf("send message error: %v", err))
}
case "串聊":
public.UserService.SetUserMode(rmsg.GetSenderIdentifier(), content)
_, err := rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("=====现在进入与👉%s👈串聊模式 =====", rmsg.SenderNick))
_, err := rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), fmt.Sprintf("**[Concentrate] 现在进入与 %s串聊模式**", rmsg.SenderNick))
if err != nil {
logger.Warning(fmt.Errorf("send message error: %v", err))
}
case "重置":
case "重置", "退出", "结束":
// 重置用户对话模式
public.UserService.ClearUserMode(rmsg.GetSenderIdentifier())
// 清空用户对话上下文
public.UserService.ClearUserSessionContext(rmsg.GetSenderIdentifier())
// 清空用户对话的答案ID
public.UserService.ClearAnswerID(rmsg.SenderNick, rmsg.GetChatTitle())
_, err := rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("=====已重置与👉%s👈的对话模式可以开始新的对话=====", rmsg.SenderNick))
_, err := rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), fmt.Sprintf("[RecyclingSymbol]已重置与**%s** 的对话模式\n\n> 可以开始新的对话 [Bubble]", rmsg.SenderNick))
if err != nil {
logger.Warning(fmt.Errorf("send message error: %v", err))
}
@@ -113,15 +113,15 @@ func Do(mode string, rmsg *dingbot.ReceiveMsg) error {
reply, err := chatgpt.SingleQa(rmsg.Text.Content, rmsg.GetSenderIdentifier())
if err != nil {
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 question length exceeded") {
public.UserService.ClearUserSessionContext(rmsg.GetSenderIdentifier())
_, err = rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("请求openai失败了错误信息%v,看起来是超过最大对话限制了,已自动重置您的对话,现在您可以继续提问了。", err))
_, err = rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), fmt.Sprintf("[Wrong] 请求 OpenAI 失败了\n\n> 错误信息:%v\n\n> 已超过最大文本限制,请缩短提问文字的字数。", err))
if err != nil {
logger.Warning(fmt.Errorf("send message error: %v", err))
return err
}
} else {
_, err = rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("请求openai失败了错误信息%v", err))
_, err = rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), fmt.Sprintf("[Wrong] 请求 OpenAI 失败了\n\n> 错误信息:%v", err))
if err != nil {
logger.Warning(fmt.Errorf("send message error: %v", err))
return err
@@ -171,13 +171,13 @@ func Do(mode string, rmsg *dingbot.ReceiveMsg) error {
logger.Info(fmt.Sprintf("gpt request error: %v", err))
if strings.Contains(fmt.Sprintf("%v", err), "maximum text length exceeded") {
public.UserService.ClearUserSessionContext(rmsg.GetSenderIdentifier())
_, err = rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("请求openai失败了错误信息%v,看起来是超过最大对话限制了,已自动重置您的对话,现在您可以继续提问了。", err))
_, err = rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), fmt.Sprintf("[Wrong] 请求 OpenAI 失败了\n\n> 错误信息:%v\n\n> 串聊已超过最大文本限制,对话已重置,请重新发起。", err))
if err != nil {
logger.Warning(fmt.Errorf("send message error: %v", err))
return err
}
} else {
_, err = rmsg.ReplyToDingtalk(string(dingbot.TEXT), fmt.Sprintf("请求openai失败了错误信息%v", err))
_, err = rmsg.ReplyToDingtalk(string(dingbot.MARKDOWN), fmt.Sprintf("[Wrong] 请求 OpenAI 失败了\n\n> 错误信息:%v", err))
if err != nil {
logger.Warning(fmt.Errorf("send message error: %v", err))
return err