forked from Diorzz/Gitter-Robot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
moudle.go
118 lines (94 loc) · 1.95 KB
/
moudle.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package main
import (
"encoding/json"
)
type QueryInfo struct {
ReqType int `json:"reqType"`
Per *Perception `json:"perception"`
UserInfo *UserInfo `json:"userInfo"`
}
type Perception struct {
InputText *InputText `json:"inputText"`
}
type UserInfo struct {
ApiKey string `json:"apiKey"`
UserId string `json:"userId"`
}
type InputText struct {
Text string `json:"text"`
}
type TuringRoboat struct {
postMsg PostMsg
}
type PosMsgImg struct {
baseUrl string
}
func (pmi *PosMsgImg) GetUrl() string {
return pmi.baseUrl
}
func (pmi *PosMsgImg) GetHeader() string {
return ""
}
func (pmi *PosMsgImg) GetBody(qes string) string {
inputText := &InputText{
Text: qes,
}
per := &Perception{
InputText: inputText,
}
uInfo := &UserInfo{
ApiKey: "22447df547484e36aea0eaf74582896d",
UserId: "200862",
}
qInfo := &QueryInfo{
ReqType: 0,
Per: per,
UserInfo: uInfo,
}
b, err := json.Marshal(qInfo)
if err != nil {
panic(err)
}
return string(b)
}
func (tr *TuringRoboat) Ask(question string) (string, error) {
url := tr.postMsg.GetUrl()
header := tr.postMsg.GetHeader()
body := tr.postMsg.GetBody(question)
res, err := httpPost(url, header, body)
if err != nil {
return "", err
}
return res, err
}
func (tu *TuringRoboat) AskQingYun(question string) (string, error) {
res, err := httpGet("http://api.qingyunke.com/api.php?key=free&appid=0&msg=" + question)
if err != nil {
return "", err
}
return res, err
}
func NewTuringRoboat() *TuringRoboat {
pmi := &PosMsgImg{
baseUrl: "http://openapi.tuling123.com/openapi/api/v2",
}
tu := &TuringRoboat{
postMsg: pmi,
}
return tu
}
type Result struct {
Result []*Chat `json:"results"`
}
type Chat struct {
GroupType int `json:"groupType"`
ResultType string `json:"resultType"`
Values *Value `json:"values"`
}
type Value struct {
Text string `json:"text"`
}
type QingYunResult struct {
Result int `json:"result"`
Content string `json:"content"`
}