Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

login error: wechat network error #3

Open
wants to merge 40 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
22b8cf4
优化gtp请求代码,请求失败有固定回复
869413421 Dec 7, 2022
e3a8ac6
修改readme
Dec 8, 2022
9b979d8
增加提问上下问,接近官网效果。
Dec 8, 2022
ba9003e
修改README
Dec 8, 2022
f80a211
1.增加会话时长配置功能
Dec 8, 2022
6cd1ccc
修改README
Dec 8, 2022
ef2fa38
支持linux运行
869413421 Dec 8, 2022
1b22bee
修改README
869413421 Dec 8, 2022
529905d
修改README
869413421 Dec 8, 2022
e8298bb
添加自动构建项目镜像的能力
eryajf Dec 9, 2022
c761ab4
添加readme说明
eryajf Dec 9, 2022
04b51e7
readme添加docker运行受命
eryajf Dec 9, 2022
db61c4d
readme添加docker运行说明
eryajf Dec 9, 2022
aa3f9d5
Merge pull request #20 from eryajf/main
869413421 Dec 9, 2022
e3dba40
Update README.md
adsian Dec 9, 2022
652b7ce
修改配置文件
Dec 9, 2022
9247d4e
Merge pull request #27 from adsian/patch-1
869413421 Dec 9, 2022
cfeded5
Merge branch 'cofing' of https://github.com/869413421/wechatbot into …
869413421 Dec 9, 2022
c5b5304
1.增加GTP参数配置
869413421 Dec 9, 2022
eca0451
1.优化日志代码,GPT请求直接返回给用户
869413421 Dec 10, 2022
8af217f
修复群上下文无法清空bug
869413421 Dec 10, 2022
70d4b20
修改配置默认项
869413421 Dec 10, 2022
5092d2a
修改配置默认值
869413421 Dec 10, 2022
efb539f
配置文件模板少个逗号
lafeier888 Dec 10, 2022
ac478c8
增加热登录重试
869413421 Dec 10, 2022
4039fb4
Merge pull request #40 from lafeier888/main
869413421 Dec 10, 2022
1a0adcf
修复配置文件映射的问题
eryajf Dec 11, 2022
df47621
Merge pull request #45 from eryajf/patch-1
869413421 Dec 11, 2022
afec292
1.重构项目代码,增加阅读性
869413421 Dec 11, 2022
0640a26
Merge branch 'main' of https://github.com/869413421/wechatbot
869413421 Dec 11, 2022
1e1e3ca
feat: add build go binary to release
eryajf Dec 11, 2022
a71895f
feat: add build go binary to release
eryajf Dec 11, 2022
0e36038
feat: 调整说明文档
eryajf Dec 11, 2022
4a32233
Merge pull request #48 from eryajf/main
869413421 Dec 11, 2022
6e6fdb1
修改README和GPT错误命名
Dec 12, 2022
6e56c52
使用openwechat dispatcher优化hanlers
Dec 12, 2022
b908859
1.群聊需要@才能清空上下文
869413421 Dec 12, 2022
70df388
Merge pull request #62 from slzheng2017/main
869413421 Dec 12, 2022
1b94ec0
编写Readme文档:
zhang-cuishan Dec 13, 2022
a24dc53
Merge pull request #72 from zhang-cuishan/main
869413421 Dec 13, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
增加提问上下问,接近官网效果。
huangyanming committed Dec 8, 2022
commit 9b979d8090dbc718f9c5a3927144b2a85351b087
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -2,9 +2,10 @@
最近chatGPT异常火爆,想到将其接入到个人微信是件比较有趣的事,所以有了这个项目。项目基于[openwechat](https://github.com/eatmoreapple/openwechat)
开发
### 目前实现了以下功能
+ 机器人群聊@回复
+ 机器人私聊回复
+ 好友添加自动通过
* 提问增加上下文,更接近官网效果
* 机器人群聊@回复
* 机器人私聊回复
* 好友添加自动通过

# 注册openai
chatGPT注册可以参考[这里](https://juejin.cn/post/7173447848292253704)
5 changes: 4 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -2,4 +2,7 @@ module github.com/869413421/wechatbot

go 1.16

require github.com/eatmoreapple/openwechat v1.2.1
require (
github.com/eatmoreapple/openwechat v1.2.1
github.com/patrickmn/go-cache v2.1.0+incompatible // indirect
)
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
github.com/eatmoreapple/openwechat v1.2.1 h1:ez4oqF/Y2NSEX/DbPV8lvj7JlfkYqvieeo4awx5lzfU=
github.com/eatmoreapple/openwechat v1.2.1/go.mod h1:61HOzTyvLobGdgWhL68jfGNwTJEv0mhQ1miCXQrvWU8=
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
2 changes: 1 addition & 1 deletion gtp/gtp.go
Original file line number Diff line number Diff line change
@@ -50,7 +50,7 @@ func Completions(msg string) (string, error) {
requestBody := ChatGPTRequestBody{
Model: "text-davinci-003",
Prompt: msg,
MaxTokens: 2048,
MaxTokens: 1024,
Temperature: 0.7,
TopP: 1,
FrequencyPenalty: 0,
5 changes: 4 additions & 1 deletion handlers/group_msg_handler.go
Original file line number Diff line number Diff line change
@@ -38,12 +38,13 @@ func (g *GroupMessageHandler) ReplyText(msg *openwechat.Message) error {
return nil
}

// 替换掉@文本,然后向GPT发起请求
// 替换掉@文本,设置会话上下文,然后向GPT发起请求
replaceText := "@" + sender.Self.NickName
requestText := strings.TrimSpace(strings.ReplaceAll(msg.Content, replaceText, ""))
if requestText == "" {
return nil
}
requestText = UserService.GetUserSessionContext(sender.ID()) + requestText
reply, err := gtp.Completions(requestText)
if err != nil {
log.Printf("gtp request error: %v \n", err)
@@ -67,6 +68,8 @@ func (g *GroupMessageHandler) ReplyText(msg *openwechat.Message) error {
// 回复@我的用户
reply = strings.TrimSpace(reply)
reply = strings.Trim(reply, "\n")
// 设置上下文
UserService.SetUserSessionContext(sender.ID(), requestText, reply)
atText := "@" + groupSender.NickName
replyText := atText + reply
_, err = msg.ReplyText(replyText)
4 changes: 4 additions & 0 deletions handlers/handler.go
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@ package handlers

import (
"github.com/869413421/wechatbot/config"
"github.com/869413421/wechatbot/service"
"github.com/eatmoreapple/openwechat"
"log"
)
@@ -21,11 +22,14 @@ const (

// handlers 所有消息类型类型的处理器
var handlers map[HandlerType]MessageHandlerInterface
var UserService service.UserServiceInterface

func init() {
handlers = make(map[HandlerType]MessageHandlerInterface)
handlers[GroupHandler] = NewGroupMessageHandler()
handlers[UserHandler] = NewUserMessageHandler()

UserService = service.NewUserService()
}

// Handler 全局处理入口
7 changes: 5 additions & 2 deletions handlers/user_msg_handler.go
Original file line number Diff line number Diff line change
@@ -32,9 +32,11 @@ func (g *UserMessageHandler) ReplyText(msg *openwechat.Message) error {
sender, err := msg.Sender()
log.Printf("Received User %v Text Msg : %v", sender.NickName, msg.Content)

// 向GPT发起请求
// 获取上下文,向GPT发起请求
requestText := strings.TrimSpace(msg.Content)
requestText = strings.Trim(msg.Content, "\n")

requestText = UserService.GetUserSessionContext(sender.ID()) + requestText
reply, err := gtp.Completions(requestText)
if err != nil {
log.Printf("gtp request error: %v \n", err)
@@ -45,9 +47,10 @@ func (g *UserMessageHandler) ReplyText(msg *openwechat.Message) error {
return nil
}

// 回复用户
// 设置上下文,回复用户
reply = strings.TrimSpace(reply)
reply = strings.Trim(reply, "\n")
UserService.SetUserSessionContext(sender.ID(), requestText, reply)
reply = "本消息由 chatGPT Bot回复:\n" + reply
_, err = msg.ReplyText(reply)
if err != nil {
40 changes: 40 additions & 0 deletions service/user.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package service

import (
"github.com/patrickmn/go-cache"
"time"
)

// UserServiceInterface 用户业务接口
type UserServiceInterface interface {
GetUserSessionContext(userId string) string
SetUserSessionContext(userId string, question, reply string)
}

var _ UserServiceInterface = (*UserService)(nil)

// UserService 用戶业务
type UserService struct {
// 缓存
cache *cache.Cache
}

// NewUserService 创建新的业务层
func NewUserService() UserServiceInterface {
return &UserService{cache: cache.New(time.Minute*5, time.Minute*10)}
}

// GetUserSessionContext 获取用户会话上下文文本
func (s *UserService) GetUserSessionContext(userId string) string {
sessionContext, ok := s.cache.Get(userId)
if !ok {
return ""
}
return sessionContext.(string)
}

// SetUserSessionContext 设置用户会话上下文文本,question用户提问内容,GTP回复内容
func (s *UserService) SetUserSessionContext(userId string, question, reply string) {
value := question + "\n" + reply
s.cache.Set(userId, value, time.Minute*5)
}