Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
调用 AI 回复对话
## ascii2d
ascii2d 搜图
## bilibili
bilibili卡片解析
## danbooru
DeepDanbooru 二次元图片标签识别
## nsfw
Expand Down
10 changes: 10 additions & 0 deletions aireply/aireply_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package aireply

import "testing"

func TestAireply(t *testing.T) {
qyk := NewAIReply("青云客")
t.Log("青云客测试:", qyk.Talk("你好", "椛椛"))
xa := NewAIReply("小爱")
t.Log("小爱测试:", xa.Talk("小米是垃圾", "椛椛"))
}
45 changes: 6 additions & 39 deletions aireply/qingyunke.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ package aireply

import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"regexp"
"strings"
Expand All @@ -17,7 +15,7 @@ import (
type QYKReply struct{}

const (
qykURL = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s"
qykURL = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%v"
qykBotName = "菲菲"
)

Expand All @@ -32,28 +30,12 @@ func (*QYKReply) String() string {
// Talk 取得带 CQ 码的回复消息
func (*QYKReply) Talk(msg, nickname string) string {
msg = strings.ReplaceAll(msg, nickname, qykBotName)

u := fmt.Sprintf(qykURL, url.QueryEscape(msg))
client := &http.Client{}
req, err := http.NewRequest("GET", u, nil)
if err != nil {
return "ERROR:" + err.Error()
}
// 自定义Header
req.Header.Set("User-Agent", web.RandUA())
req.Header.Set("Connection", "keep-alive")
req.Header.Set("Host", "api.qingyunke.com")
resp, err := client.Do(req)
if err != nil {
return "ERROR:" + err.Error()
}
defer resp.Body.Close()
bytes, err := ioutil.ReadAll(resp.Body)
data, err := web.RequestDataWith(web.NewDefaultClient(), u, "GET", "", web.RandUA())
if err != nil {
return "ERROR:" + err.Error()
}

replystr := gjson.Get(binary.BytesToString(bytes), "content").String()
replystr := gjson.Get(binary.BytesToString(data), "content").String()
replystr = strings.ReplaceAll(replystr, "{face:", "[CQ:face,id=")
replystr = strings.ReplaceAll(replystr, "{br}", "\n")
replystr = strings.ReplaceAll(replystr, "}", "]")
Expand All @@ -67,26 +49,11 @@ func (*QYKReply) TalkPlain(msg, nickname string) string {
msg = strings.ReplaceAll(msg, nickname, qykBotName)

u := fmt.Sprintf(qykURL, url.QueryEscape(msg))
client := &http.Client{}
req, err := http.NewRequest("GET", u, nil)
if err != nil {
return "ERROR: " + err.Error()
}
// 自定义Header
req.Header.Set("User-Agent", web.RandUA())
req.Header.Set("Connection", "keep-alive")
req.Header.Set("Host", "api.qingyunke.com")
resp, err := client.Do(req)
data, err := web.RequestDataWith(web.NewDefaultClient(), u, "GET", "", web.RandUA())
if err != nil {
return "ERROR: " + err.Error()
}
defer resp.Body.Close()
bytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "ERROR: " + err.Error()
return "ERROR:" + err.Error()
}

replystr := gjson.Get(binary.BytesToString(bytes), "content").String()
replystr := gjson.Get(binary.BytesToString(data), "content").String()
replystr = qykMatchFace.ReplaceAllLiteralString(replystr, "")
replystr = strings.ReplaceAll(replystr, "{br}", "\n")
replystr = strings.ReplaceAll(replystr, qykBotName, nickname)
Expand Down
26 changes: 5 additions & 21 deletions aireply/xiaoai.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,19 @@ package aireply

import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strings"

"github.com/FloatTech/zbputils/binary"
"github.com/FloatTech/zbputils/web"
"github.com/tidwall/gjson"
)

// XiaoAiReply 小爱回复类
type XiaoAiReply struct{}

const (
xiaoaiURL = "http://81.70.100.130/api/xiaoai.php?msg=%s&n=text"
xiaoaiURL = "https://yang520.ltd/api/xiaoai.php?msg=%v"
xiaoaiBotName = "小爱"
)

Expand All @@ -26,27 +25,12 @@ func (*XiaoAiReply) String() string {
// TalkPlain 取得回复消息
func (*XiaoAiReply) TalkPlain(msg, nickname string) string {
msg = strings.ReplaceAll(msg, nickname, xiaoaiBotName)

u := fmt.Sprintf(xiaoaiURL, url.QueryEscape(msg))
client := &http.Client{}
req, err := http.NewRequest("GET", u, nil)
if err != nil {
return "ERROR: " + err.Error()
}
// 自定义Header
req.Header.Set("User-Agent", web.RandUA())
req.Header.Set("Connection", "keep-alive")
req.Header.Set("Host", "81.70.100.130")
resp, err := client.Do(req)
if err != nil {
return "ERROR: " + err.Error()
}
defer resp.Body.Close()
bytes, err := ioutil.ReadAll(resp.Body)
data, err := web.RequestDataWith(web.NewDefaultClient(), u, "GET", "", web.RandUA())
if err != nil {
return "ERROR: " + err.Error()
return "ERROR:" + err.Error()
}
replystr := binary.BytesToString(bytes)
replystr := gjson.Get(binary.BytesToString(data), "text").String()
textReply := strings.ReplaceAll(replystr, xiaoaiBotName, nickname)
if textReply == "" {
textReply = nickname + "听不懂你的话了, 能再说一遍吗"
Expand Down