Skip to content

Commit 324a8b4

Browse files
committed
chore: add README; improve reply logic
1 parent c819d18 commit 324a8b4

File tree

3 files changed

+34
-16
lines changed

3 files changed

+34
-16
lines changed

README.md

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# WeeChatGPT
2+
3+
将 ChatGPT 集成到微信个人号。基于 [openwechat](https://github.com/eatmoreapple/openwechat)
4+
5+
## 运行方法
6+
7+
1. 前往 [Releases](https://github.com/AnotiaWang/WeeChatGPT/releases/latest) ,根据你使用的平台,下载最新版本的 WeeChatGPT。
8+
2. 先运行一次 WeeChatGPT,程序会生成配置文件 `config.yml`,然后根据文件中的提示,填写配置。
9+
3. 再次运行 WeeChatGPT,会显示微信的登录二维码链接,在浏览器中打开它,扫码登录微信即可。
10+
11+
### 提示
12+
13+
- 程序支持热登录,如果两次登录之间的间隔较短,可以自动登录。
14+
- 建议将群组添加到通讯录,否则机器人可能无法获取到群组信息,导致回复失败。
15+
- 目前仅测试过 gpt-3.5-turbo 模型的支持。

build.sh

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
echo Building for linux_amd64...
2+
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./dist/weechatbot_linux_amd64 .
3+
echo Building for darwin_amd64...
4+
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o ./dist/weechatbot_darwin_amd64 .
5+
echo Building for windows_amd64...
6+
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o ./dist/weechatbot_windows_amd64 .

handler/message.go

+13-16
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
func Default(ctx context.Context) openwechat.MessageHandler {
1212
self := ctx.Value(model.SelfKey).(*openwechat.Self)
13+
config := ctx.Value(model.ConfigKey).(*model.Config)
1314
dispatcher := openwechat.NewMessageMatchDispatcher()
1415

1516
dispatcher.OnText(func(msgCtx *openwechat.MessageContext) {
@@ -18,62 +19,58 @@ func Default(ctx context.Context) openwechat.MessageHandler {
1819
if len(msg.Content) <= 4 {
1920
return
2021
}
21-
if strings.Index(msg.Content, " ") == 0 {
2222

23-
}
24-
if msg.Content[:4] == ":bot" {
23+
if strings.Index(msg.Content, config.OpenAI.Prefix) == 0 {
24+
log.Println("found message match: " + msg.Content)
2525
query := msg.Content[4:]
26-
2726
response, err := model.ChatCompletion(ctx, model.MakeMessage(query))
2827
if err != nil {
2928
log.Println("ChatCompletion error: " + err.Error())
3029
return
3130
}
32-
log.Println("回复消息: " + response)
3331

3432
receiver, err := msg.Receiver()
3533
if err != nil {
36-
log.Println("Receiver error: " + err.Error())
34+
log.Println("get receiver failed: " + err.Error())
3735
return
3836
}
3937
log.Printf("receiver: %v, isSendBySelf: %v", receiver, msg.IsSendBySelf())
4038
sender, err := msg.Sender()
4139
if err != nil {
42-
log.Println("Sender error: " + err.Error())
40+
log.Println("get sender failed: " + err.Error())
4341
return
4442
}
4543
log.Printf("sender: %v, isSendBySelf: %v", sender, msg.IsSendBySelf())
4644

45+
// 和文件传输助手的消息
4746
if receiver != nil && receiver.UserName == "filehelper" {
48-
log.Println("Reply to filehelper")
4947
fh := self.FileHelper()
5048
_, err := self.SendTextToFriend(fh, response)
5149
if err != nil {
52-
log.Println("SendTextToFriend error: " + err.Error())
50+
log.Println("reply to filehelper failed: " + err.Error())
5351
return
5452
}
5553
} else if receiver != nil && msg.IsSendBySelf() {
56-
log.Println("Is send by self, isGroup:", receiver.IsGroup(), ", isSelf:", receiver.IsSelf(), ", isFriend:", receiver.IsFriend())
5754
if receiver.IsGroup() {
5855
group, _ := receiver.AsGroup()
59-
log.Println("Reply to group")
56+
log.Println("replying to group", group.NickName)
6057
_, err := self.SendTextToGroup(group, response)
6158
if err != nil {
62-
log.Println("SendTextToGroup error: " + err.Error())
59+
log.Println("SendTextToGroup failed: " + err.Error())
6360
}
6461
} else {
6562
user, _ := receiver.AsFriend()
66-
log.Println("Reply to user")
63+
log.Println("replying to user", user.NickName)
6764
_, err := self.SendTextToFriend(user, response)
6865
if err != nil {
69-
log.Println("SendTextToFriend error: " + err.Error())
66+
log.Println("SendTextToFriend failed: " + err.Error())
7067
}
7168
}
7269
} else {
73-
log.Println("Fallback reply to message")
70+
log.Println("defaulting to replyText")
7471
_, err := msgCtx.ReplyText(response)
7572
if err != nil {
76-
log.Println("ReplyText error: " + err.Error())
73+
log.Println("ReplyText failed: " + err.Error())
7774
}
7875
}
7976
}

0 commit comments

Comments
 (0)